ffmpeg将mp4转换为H265编码(由z.ai提供)
当然可以!而且 ffmpeg 绝对是所有转码工具里的“祖师爷”,剪映、格式工厂这些软件底层很多都是调用 ffmpeg 来完成的。
用 ffmpeg 转换不仅没有广告、免费,而且 可以极其精确地控制压缩率和画质 。
针对你的需求(MP4转省空间的格式),以下是直接可以复制使用的 ffmpeg 命令行代码:
方法一:最推荐——使用“恒定质量”模式(CRF)
这是最智能的压缩方式,你不需要去算文件大小,只要告诉 ffmpeg 你想要什么级别的画质,它会自动分配码率,省空间效果最好。
打开命令行(CMD 或 PowerShell),输入以下命令:
ffmpeg -i "你的视频.mp4" -c:v libx265 -crf 28 -c:a aac -b:a 128k "压缩后.mp4"
参数大白话解释:
-i "你的视频.mp4":输入你的原文件(如果文件名有空格,一定要加英文双引号)。-c:v libx265:视频编码器指定为 H.265(这就是能省一半空间的秘诀)。-crf 28:核心参数! 控制画质。数字越小画质越好、文件越大;数字越大画质越差、文件越小。- H.264的默认标准是 23。
- 因为 H.265 效率高,所以设为 28 时,画面看起来就像 H.264 的 23 一样,但体积小了很多。如果还想更小,可以设为 30 或 32(超过 30 画面可能会有明显模糊)。
-c:a aac:音频编码器指定为 AAC(最通用的音频格式)。-b:a 128k:音频码率设为 128k(听感足够清晰,不需要太高)。"压缩后.mp4":输出的文件名。
方法二:指定目标文件大小(适合“我需要这个文件必须小于500MB”的场景)
如果你有严格的体积限制,可以用“两遍编码(2-pass)”,ffmpeg 会先扫描一遍视频,再精确压缩到你想要的大小。
假设你想让一个视频压缩后刚好是 500MB:
ffmpeg -i "你的视频.mp4" -c:v libx265 -b:v 800k -pass 1 -an -f null /dev/null
ffmpeg -i "你的视频.mp4" -c:v libx265 -b:v 800k -pass 2 -c:a aac -b:a 128k "压缩后.mp4"
(注意:Windows 的 CMD 环境下,第一行最后的 /dev/null 可能需要改成 NUL)
参数解释:
-b:v 800k:这里的 800k 是怎么算出来的?公式是:目标体积(KB) * 8 / 视频时长(秒)。比如 500MB = 512000KB,视频长 5000 秒,那就是 512000 * 8 / 5000 ≈ 819k,我们取 800k。-pass 1和-pass 2:这就是两遍编码的标志,要分两次执行命令。
方法三:终极速度篇——开启显卡硬件加速(极其重要!)
注意: 默认情况下,ffmpeg 使用 CPU 进行 H.265 编码(也就是 libx265)。CPU 软解 H.265 非常非常慢(可能一秒只能转几帧,转一个几分钟的视频要花半小时)。
如果你的电脑有独立显卡(N卡或A卡)或者比较新的 Intel 核显,一定要用硬件加速,速度能提升 10 倍甚至几十倍!
1. 如果你有 NVIDIA 显卡(N卡):
把 -c:v libx265 换成 -c:v hevc_nvenc,并且 N卡不用 crf,用 -cq:
ffmpeg -i "你的视频.mp4" -c:v hevc_nvenc -cq 28 -c:a aac -b:a 128k "压缩后.mp4"
2. 如果你有 Intel 核显(第 6 代及以后 CPU):
把编码器换成 -c:v hevc_qsv,用 -global_quality 代替 crf:
ffmpeg -i "你的视频.mp4" -c:v hevc_qsv -global_quality 28 -c:a aac -b:a 128k "压缩后.mp4"
3. 如果你有 AMD 显卡(A卡):
ffmpeg -i "你的视频.mp4" -c:v hevc_amf -quality balanced -rc cqp -qp_i 28 -qp_p 30 -c:a aac -b:a 128k "压缩后.mp4"
(如果提示找不到这些编码器,说明你下载的 ffmpeg 是“精简版”没有编译入硬件加速,建议去官网下完整的 full 版本,或者用 winget install Gyan.FFmpeg 安装)
💡 给你的操作建议:
- 先用方法一的 CPU 版本试一下,看你的电脑转一段 10 秒的视频要多久。
- 如果慢得让人抓狂,检查一下自己是什么显卡,换成方法三的硬件加速命令。
- 建议先剪出视频的 10 秒钟片段,用不同的
-crf值(比如 26、28、30)测试一下,肉眼看看到底哪个数值既能接受画质,体积又小,然后再套用这个数值去转完整视频。
批量转换bat脚本
@echo off
chcp 65001 >nul
echo 开始批量转换 MP4 到 MKV (AMD硬件加速 H.265)...
echo ============================
for %%f in ("*.mp4") do (
echo 正在转换: %%f
ffmpeg -i "%%f" -c:v hevc_amf -quality balanced -rc cqp -qp_i 28 -qp_p 28 -c:a aac -b:a 128k -y "%%~nf.mkv"
)
echo ============================
echo 全部转换完成!
pause
*说明:hevc_amf 就是调用 AMD 显卡进行 H.265 编码。-qp_i 28 -qp_p 28 类似之前的画质控制参数。
浙公网安备 33010602011771号