ffmpeg将视频流转化成图片帧,将图片帧转化为视频(基本无损)
程序员文章站
2022-03-22 21:28:28
...
先上官方文档
其中-r 和-framerate 都是代表帧率(这个属性属于图片的属性,需要放在图片之前)
-s 控制输出格式大小
本人在一个视频稳定的项目中用需要将视频分解为图片帧,图片帧经过稳定扭曲之后需要再次合成视频。
于是按照官方文档中的例子来操作了一遍:
ffmpeg -i 13.avi %04d.png
这里将视频转化为图片帧,默认的帧率为30,得到的图片质量和视频质量差别基本不大可以忽略。
ffmpeg -f image2 -framerate 30 -i %04d.png 13stbself.avi
在用默认参数将图片转换为视频的过程中,合成的视频质量却大打折扣,肉眼可以见的像素块,感觉是被压缩了很多。
下面查阅了很多文档资料后才解决这个问题!
影像视频质量的最重要因素是视频码率
在上述两步的转化过程信息中可以查到
可以看出原视频码率是5626kbits/s,而在图片转化为视频的过程中,输出视频的码率是默认的,只有200kbits/s,所以导致了转化前后视频质量相差巨大的问题。
解决方法是修改默认的视频码率属性-b:v
ffmpeg -f image2 -framerate 30 -i %04d.png -b:v 5626k 13stbself2.avi
这样转化前后的视频质量几乎没有差别(基本无损)。