FFmpeg - 在多个呼叫中向MP4添加帧

时间:2016-04-26 21:02:01

标签: android video ffmpeg

我正在尝试使用FFmpeg从Android应用中的用户创建的内容创建MP4文件。

用OpenGL呈现用户创建的内容。我以为我可以将它渲染到FrameBuffer并将其保存为临时图像文件。然后,获取此图像文件并将其添加到带有FFmpeg的MP4文件中。我会逐帧完成这项工作,在构建MP4文件的过程中创建和删除这些临时图像文件。

问题是我一次都不会拥有所有这些图像文件,所以我不能只使用典型的调用:

ffmpeg -start_number n -i test_%d.jpg -vcodec mpeg4 test.mp4

FFmpeg可以吗?我找不到任何关于逐个添加帧到MP4文件并保持正确的帧速率等信息......

1 个答案:

答案 0 :(得分:0)

使用STDIO将原始帧提取到FFmpeg。请注意,这并不意味着导出整个图像......您只需要像素数据。像这样......

ffmpeg -f rawvideo -vcodec rawvideo -s 1920x1080 -pix_fmt rgb24 -r 30 -i - -vcodec mpeg4 test.mp4

使用-i -表示FFmpeg将从管道读取。

认为从那里你只需要通过管道发送原始像素值,每个像素每个颜色一个字节。 FFmpeg会知道您完成每个帧的时间,因为您已经将帧大小传递给它。