我正在尝试使用FFmpeg从Android应用中的用户创建的内容创建MP4文件。
用OpenGL呈现用户创建的内容。我以为我可以将它渲染到FrameBuffer并将其保存为临时图像文件。然后,获取此图像文件并将其添加到带有FFmpeg的MP4文件中。我会逐帧完成这项工作,在构建MP4文件的过程中创建和删除这些临时图像文件。
问题是我一次都不会拥有所有这些图像文件,所以我不能只使用典型的调用:
ffmpeg -start_number n -i test_%d.jpg -vcodec mpeg4 test.mp4
FFmpeg可以吗?我找不到任何关于逐个添加帧到MP4文件并保持正确的帧速率等信息......
答案 0 :(得分:0)
使用STDIO将原始帧提取到FFmpeg。请注意,这并不意味着导出整个图像......您只需要像素数据。像这样......
ffmpeg -f rawvideo -vcodec rawvideo -s 1920x1080 -pix_fmt rgb24 -r 30 -i - -vcodec mpeg4 test.mp4
使用-i -
表示FFmpeg将从管道读取。
我认为从那里你只需要通过管道发送原始像素值,每个像素每个颜色一个字节。 FFmpeg会知道您完成每个帧的时间,因为您已经将帧大小传递给它。