欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ffmpeg将视频流转化成图片帧,将图片帧转化为视频(基本无损)

程序员文章站 2022-03-22 21:28:28
...

先上官方文档
ffmpeg将视频流转化成图片帧,将图片帧转化为视频(基本无损)
其中-r 和-framerate 都是代表帧率(这个属性属于图片的属性,需要放在图片之前)
-s 控制输出格式大小

本人在一个视频稳定的项目中用需要将视频分解为图片帧,图片帧经过稳定扭曲之后需要再次合成视频。
于是按照官方文档中的例子来操作了一遍:

ffmpeg -i 13.avi %04d.png

这里将视频转化为图片帧,默认的帧率为30,得到的图片质量和视频质量差别基本不大可以忽略。

ffmpeg -f image2 -framerate 30 -i %04d.png 13stbself.avi

在用默认参数将图片转换为视频的过程中,合成的视频质量却大打折扣,肉眼可以见的像素块,感觉是被压缩了很多。

下面查阅了很多文档资料后才解决这个问题!
影像视频质量的最重要因素是视频码率
在上述两步的转化过程信息中可以查到
ffmpeg将视频流转化成图片帧,将图片帧转化为视频(基本无损)
ffmpeg将视频流转化成图片帧,将图片帧转化为视频(基本无损)
可以看出原视频码率是5626kbits/s,而在图片转化为视频的过程中,输出视频的码率是默认的,只有200kbits/s,所以导致了转化前后视频质量相差巨大的问题。
解决方法是修改默认的视频码率属性-b:v

ffmpeg -f image2 -framerate 30 -i %04d.png -b:v 5626k 13stbself2.avi 

ffmpeg将视频流转化成图片帧,将图片帧转化为视频(基本无损)
这样转化前后的视频质量几乎没有差别(基本无损)。

相关标签: 视频处理