用 ffmpeg 转码:压制体积、改分辨率、换封装的那些参数
前面聊了 用 ffmpeg 合并 m3u8,那是"拼接"。本文往前一步:下载下来的文件,电视播不了、4K 太大、格式不兼容——这时候要的是"转码/换封装"。把最常用的 ffmpeg 参数讲清楚,让你知道每一条命令在干什么。
目录
- 一、先想清楚:转码还是换封装
- 二、最常用的一条转码命令
- 三、CRF:画质与体积的旋钮
- 四、改分辨率与硬件加速
- 五、只换封装(不重编码)
- 六、小结
一、先想清楚:转码还是换封装
- 换封装(
-c copy):只改"盒子"(MP4→MKV),不碰画面,秒级完成、零损耗; - 转码(重编码):真把画面重新压一遍,慢、有损,但能缩体积、改分辨率、换编码。
能-c copy就别转码。很多"电视播不了"只是容器不对,换封装即可,见 容器格式区别。
二、最常用的一条转码命令
ffmpeg-iin.mkv-c:vlibx264-crf23-c:aaac out.mp4-c:v libx264:视频用 H.264 重编码(兼容性最好,呼应 编码入门);-c:a aac:音频转 AAC(老设备也认,避开 Opus 没声音 的坑);- 输出
.mp4:通用盒子。
三、CRF:画质与体积的旋钮
-crf控制质量,18–28 常用:
| CRF | 观感 | 体积 |
|---|---|---|
| 18 | 近无损 | 大 |
| 23 | 默认均衡 | 中 |
| 28 | 明显压缩 | 小 |
数值越小越清晰越大。4K 压成 1080p 想省空间,就调高 CRF 或降分辨率。
四、改分辨率与硬件加速
# 降到 1080pffmpeg-iin.mp4-vfscale=1920:-2-c:vlibx264-crf24out.mp4# 用显卡加速(NVIDIA)ffmpeg-iin.mp4-c:vh264_nvenc-crf24out.mp4-vf scale=1920:-2把宽设 1920、高自动算(-2保证偶数)。硬件编码(nvenc/qsv)快很多,但可控性略逊软件。
五、只换封装(不重编码)
ffmpeg-iin.mkv-ccopy out.mp4秒级、无损。前提是 MP4 容器支持原编码(H.264+AAC 最稳)。若原音频是 Opus 而 MP4 不认,就得-c:a aac转一下。
六、小结
转码三句话:能-c copy就别转码;要压就调-crf;要兼容就视频 H.264 + 音频 AAC + 容器 MP4。把这几条和前面的 合并、编码、容器 串起来,下载→合并→转码→播放的完整链路就通了。