FFmpeg生成更高质量的MJPEG编码图像

16

我有一堆mov/H.264文件,想要将它们编码成mov/MJPEG格式。然而,我得到的输出质量非常低。这是我尝试过的方法:

ffmpeg -i a.mov -an -crf 11 -preset slower -pix_fmt yuv420p -vcodec mjpeg -f mov -y b.mov

对于H.264编码,-crf-preset标志会生成更高质量的视频。但是这似乎对MJPEG无效。


1
mjpeg仅是一种帧内压缩方案。它查看一帧,使用jpeg规格进行压缩,然后转移到下一帧。它没有-crf的意义。-crf是一种帧间压缩方案的协议,其中算法尝试通过查找压缩数据速率的方法来跨帧节省磁盘空间。我建议将ffmpeg问题提问于video.stackexchange.com,而不是SO或SU。 - user1934286
1个回答

41

使用-q:v控制(M)JPEG质量

有效范围是2-31的线性比例尺,较低的值会产生更高质量的输出。

示例

在MOV容器中创建MJPEG视频:

ffmpeg -i input.mov -c:v mjpeg -q:v 3 -an output.mov

输出一系列JPG图像:

ffmpeg -i input.mov -q:v 2 images_%04d.jpg

文件将以images_0001.jpgimages_0002.jpgimages_0003.jpg等命名。


私有选项

对于H.264编码,-crf-preset标志生成更高的质量。但这似乎不适用于MJPEG。

MJPEG编码器不使用-crf-preset;这些是一些编码器(如libx264、libx265和libvpx)的“私有”选项。您可以像这样查看私有选项:ffmpeg -h encoder=mjpeg


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接