针对小文件大小的 libav / ffmpeg 输出优化

libav / ffmpeg output optimisation for small file sizes

我正在使用以下命令获取音频 mp3 文件并从中制作视频(通过使用静态 jpg 图片)。我的目标是获得尽可能小但质量仍然可以接受的 mp3 音频。

frequency="11000"
bitrate="45000"
avconv -loop 1 -i a.jpg -i audio.mp3 -shortest -r 1 -metadata STEREO_MODE=mono -c:v libx264 -ar "$frequency" -b:a "$bitrate" -ac 0 result.mkv

我的问题是: 1. 如何实现生成的文件是 MONO? 2.是否可以进一步降低码率?我也想使用低于 45000 的值。 3. 我的目标是控制对文件大小影响最大的参数。目前我知道频率很重要。是否有任何其他参数可以帮助我获得质量仍然可接受的非常小的输出文件?

提前致谢。

由于您编码为压缩音频编解码器,因此频率不会直接影响文件大小。但是,11 kHz 的频率会降低音乐质量。

相反,我建议

frequency="22050"
bitrate="48000"
ffmpeg -loop 1 -i a.jpg -i audio.mp3 -shortest -r 1 -c:v libx264 -crf 28 \
       -ar "$frequency" -b:a "$bitrate" -ac 1 result.mkv

CRF 参数控制视频质量 - 较低的值产生更好的质量但更大的文件。与控制音频比特率相比,您将通过控制它获得更多的节省,无论如何音频比特率都处于低端。

如果您的构建包含 libfdk_aac,您可以改为使用

frequency="22050"
bitrate="32000"
ffmpeg -loop 1 -i a.jpg -i audio.mp3 -shortest -r 1 -c:v libx264 -crf 28 \
       -ar "$frequency" -c:a libfdk_aac -profile:a aac_he_v2 -b:a "$bitrate" -ac 1 result.mkv