ffmpeg编码YUV420视频序列


依旧是这里的测试序列 http://www.cnblogs.com/zzugyl/p/3678865.html
测试了JM和libx264的编解码质量
后来用ffmpeg转码 发现忘记了命令行转码的命令
网上搜来的很多都是复制粘贴 完全不考虑真实性 让我测试半天

我想把YUV测试序列 720p50_parkrun_ter.yuv 720p50_shields_ter.yuv编码成h264文件。
这里使用的ffmpeg是zeranoe编译的 http://ffmpeg.zeranoe.com/builds/
ffmpeg version N-62509-g97751e1 Copyright (c) 2000-2014 the FFmpeg developers
  built on Apr 17 2014 22:01:31 with gcc 4.8.2 (GCC)

第一次使用命令:

ffmpeg -i 720p50_parkrun_ter.yuv 720p50_parkrun_ter.h264

提示错误:
[rawvideo @ 003a7b40] Could not find codec parameters for stream 0 (Video: rawvideo (I420 / 0x30323449), yuv420p, -4 kb/s):
unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
720p50_parkrun_ter.yuv: could not find codec parameters

第二次使用命令:

ffmpeg -pix_fmt yuv420p -i 720p50_parkrun_ter.yuv 720p50_parkrun_ter.h264

依然是同样的错误提示

第三次使用命令:

ffmpeg -pix_fmt yuv420p -i 720p50_parkrun_ter.yuv -vcodec libx264 -r 50 -s 1280x720 720p50_parkrun_ter.h264

依然是同样的错误提示

我很纳闷了,该传的参数,我都传进去了。还需要什么呢?
最后经过qq群好友的提示,修正参数第四次尝试。

第四次使用命令:

ffmpeg -s 1280x720 -pix_fmt yuv420p -f rawvideo -i 720p50_parkrun_ter.yuv -vcodec libx264 -r 50 720p50_parkrun_ter.h264

这次顺利进行了。
其实ffmpeg会根据后缀自行判断编解码方式。
进而可以简化为:

ffmpeg -s 1280x720 -i 720p50_parkrun_ter.yuv -r 50 720p50_parkrun_ter.h264

而且编码出来的文件 连MD5都一样。算法可真严谨。

原文地址:https://www.cnblogs.com/zzugyl/p/3709514.html