android bmp合成mpeg4,FFmpeg 图片合成视频

知识准备

FFmpeg将多张图片合成视频,视频的总帧数:总帧数 = duration * fps ,duration是我们设定的视频的长度,fps是视频每秒的帧数。

对于图片文件是没有帧率的概念,FFmpeg默认情况下一秒25张图片成像合成视频。因此FFmpeg提供-framerate还有-r设置输入的视频帧率,-r 8说明每秒钟将8张图片合成视频。设置了输入帧率之后,如果输出帧率没有指定,输出帧率将跟输入帧率保持一致

场景

将bmp图片合成视频

ffmpeg -r 8 -i ./RecordTemp/%d.bmp  -vcodec mpeg4 test.mp4

ffmpeg -r 8 -i  %d.bmp -vcodec libx264 test.mp4

其中-r 和-framerate 都是代表帧率(这个属性属于图片的属性,需要放在图片之前)

1)控制视频帧率

-r fps 帧率,可以指定两个帧率,输入帧率,输出帧率;

输入帧率:-i之前,设定读入帧率,比如 -r 0.5 ,也就是说1秒要播0.5个图片,那么一个图也就是要播2s;

输出频率:-i之后,真正的输出视频播放帧率,不写话,是默认和输入频率一样。比如设 -r 30 ,对应上面的设定,一个图播2s,那么输出文件播放时,这2s内,都是这张图,但是播放了60帧

2)图片合成视频,然后视频拆分成图片数量对应不上

指令如下:

ffmpeg  -i "D:/ffmpeg/RecordTemp/%06d.bmp" -vcodec mpeg4 -r 20 D:/ffmpeg/video5.avi

ffmpeg -i video5.avi  -f image2 image-%07d.png

解答:-r 20 放在-i之后指定的是输出视频帧率,输入帧率默认情况下是25,所以拆分之后跟原始图片数量对应不上

解决方案:ffmpeg -r 20 -i "D:/ffmpeg/RecordTemp/%06d.bmp" -vcodec mpeg4  D:/ffmpeg/video5.avi

3)输出的视频画面质量下降,原因:影响视频质量的最重要因素是视频码率&#x

你可能感兴趣的:(android,bmp合成mpeg4)