FFMPEG如何将MJPEG编码数据复用到mp4或avi容器c ++中

时间:2012-10-09 10:07:17

标签: ffmpeg mjpeg multiplexing

我正在寻找一种方法将mjpeg(压缩)视频数据复制到像mp4或avi这样的视频容器中。 (我还需要在将来添加音频)。 因为我在项目的其他部分使用FFMPEG,如果可能的话我想使用这些库。 我不是在寻找命令行FFMPEG使用! 我试图在ffmpeg中使用muxing示例,我只能创建一个带有视频信息的(非常大的).mjpeg文件。这不是我要找的。

示例非常受欢迎,但正确方向的指针也有效!

编辑: 我已将yuvj422p流输出到jpeg图像,我想将其放入mp4容器中。使用ffmpeg命令行可以:

ffmpeg -i yuvy%01d.jpg -vcodec mjpeg out.mp4

我想在我的代码中直接执行此操作(不首先创建jpeg图像)

2 个答案:

答案 0 :(得分:3)

我修复了它,执行以下操作:

我使用了多路复用的例子,而不是使用编码功能,我只是跳过它并直接将JPEG数据加载到数据包中。要设置OutputContext,我使用了猜测格式函数,并将编解码器设置为MJPEG。我将PTS数据更改为帧计数器。因为无论如何所有帧都是按时间顺序排列的。

答案 1 :(得分:-2)

三个主要步骤

  1. 解码(使用avcodec_decode_video())
  2. 将原始帧转换为yuv420p格式(使用swscale())
  3. 编码(使用avcodec_encode_video())
  4. 如果需要,我可以提供示例代码