今天偶然发现自己使用ffmepg从摄像头采集然后保存文件,使用播放器播放,速度很快,网上查了很多资料都说是帧率的问题,可特么倒是说明白啊,帧率帧率,你倒是说明白帧率错在哪啊。最后自己摸索,发现所谓的帧率问题都是人云亦云。真正的原因并不是帧率问题,准确说是输入文件的帧率需要和输出文件的帧率要一致,如果不一致就会出现视频文件播放过慢或者过快的问题。
下面举1个李子:
1:输入文件是摄像头
1.通过ffmpeg查看摄像头信息ffmpeg -list_options true -f dshow -i video="USB2.0 PC CAMERA",这里我的摄像头的名字是"USB2.0 PC CAMERA"
[dshow @ 000001c90cc3fec0]
pixel_format=yuyv422
min s=352x288
fps=15
max s=352x288
fps=30
可以发现我摄像头帧率15-30,但是我代码里没有设置摄像头的帧率所以默认是15,
这时候我编码器设置帧率的时候设置为20的话,
生成的视频文件就会播放很快。
这才是根本原因,这种情况要么你在代码里先设置好摄像头的帧率,然后要和编码器的帧率一致就可以了。