我将一组视频帧另存为图像,并且正在尝试将它们编码为高质量的视频,但是我尝试的每种设置和每种格式都会产生非常明显的伪像。
基本命令是这样的:
ffmpeg -r 25 -i %4d.png myvideo.mpg
并且我尝试了minrate和maxrate标志。{mpg,avi,mov,flv}格式中的任何一种都可以。
有任何设置建议吗?最终文件大小不是问题。
我将一组视频帧另存为图像,并且正在尝试将它们编码为高质量的视频,但是我尝试的每种设置和每种格式都会产生非常明显的伪像。
基本命令是这样的:
ffmpeg -r 25 -i %4d.png myvideo.mpg
并且我尝试了minrate和maxrate标志。{mpg,avi,mov,flv}格式中的任何一种都可以。
有任何设置建议吗?最终文件大小不是问题。
Answers:
有两件事:
您需要设置视频比特率。我从未使用过minrate和maxrate,所以我不知道它们的工作原理,但是通过使用-b
开关设置比特率,我可以获得高质量的视频。您需要提出一个在压缩和视频质量之间进行良好权衡的比特率。您可能必须尝试一下,因为这完全取决于帧大小,帧速率和视频内容中的运动量。请记住,对于720x480,DVD的平均速度通常约为4-5 Mbit / s,因此我通常从那里开始并确定是否需要更多或更少,然后进行试验。例如,您可以添加-b 5000k
到命令行以获取更多或更少的DVD视频比特率。
您需要指定视频编解码器。如果不这样做,ffmpeg将默认使用MPEG-1,它已经很老了,不能提供与MPEG-4或H.264差不多的压缩量。如果您的ffmpeg版本是使用libx264支持构建的,则可以将其指定-vcodec libx264
为命令行的一部分。否则-vcodec mpeg4
也会比MPEG-1做得更好,但不如x264好。
还有许多其他高级选项可以帮助您以最低的比特率获得最佳的质量。在这里看看一些例子。
ffmpeg -i … -c:a copy -c:v libx264 -crf 18 -preset veryslow …
。18是CRF,质量损失很小,但比特率可能很低。如果您需要较小的文件大小,则可以尝试使用更大的CRF值。如您所见,这非常简单。
您需要指定-vb选项以提高视频比特率,否则将获得默认选项,该选项会生成较小的视频,但会有更多的伪像。
尝试这样的事情:
ffmpeg -r 25 -i %4d.png -vb 20M myvideo.mpg
除非您进行某种后期处理,否则视频将永远不会比原始帧更好。就像翻书一样,如果关键帧之间有很大的“跳跃”,它将看起来很有趣。通常,关键帧之间需要足够的“补间”以提供流畅的动画。高温超导
ffmpeg -r 20 -f image2 -i myImage%04d.png -f mp4 -q:v 0 -vcodec mpeg4 -r 20 myVideo.mp4
。我发现要强制使用帧速率,必须为输入文件和输出文件都指定它。这个编解码器似乎对我有用-您可能不需要指定它。我只想包括我所做的事情,因为我花了很多时间在上面。唯一的缺点是我的输入图像是高对比度的(白色背景上的蓝色和红色球),然后在电影中,这些球开始都变成相同的深色-不需要的对比度效果。