Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
FFMPEG如何将MJPEG编码的数据多路复用到mp4或avi容器c++;_Ffmpeg_Mjpeg_Multiplexing - Fatal编程技术网

FFMPEG如何将MJPEG编码的数据多路复用到mp4或avi容器c++;

FFMPEG如何将MJPEG编码的数据多路复用到mp4或avi容器c++;,ffmpeg,mjpeg,multiplexing,Ffmpeg,Mjpeg,Multiplexing,我正在寻找一种将mjpeg(压缩)视频数据多路复用到mp4或avi等视频容器中的方法。(以后我还需要添加音频)。 由于我在项目的其他部分也使用FFMPEG,如果可能的话,我希望使用这些库。 我不想使用命令行FFMPEG! 我尝试使用ffmpeg中的muxing示例,我只能创建一个包含视频信息的(非常大的).mjpeg文件。这不是我要找的 示例是非常受欢迎的,但指向正确方向的指针也很有效 编辑: 我已经将yuvj422p流输出为jpeg图像,我想将其放入mp4容器中。使用ffmpeg命令行可以实现

我正在寻找一种将mjpeg(压缩)视频数据多路复用到mp4或avi等视频容器中的方法。(以后我还需要添加音频)。 由于我在项目的其他部分也使用FFMPEG,如果可能的话,我希望使用这些库。 我不想使用命令行FFMPEG! 我尝试使用ffmpeg中的muxing示例,我只能创建一个包含视频信息的(非常大的).mjpeg文件。这不是我要找的

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

编辑: 我已经将yuvj422p流输出为jpeg图像,我想将其放入mp4容器中。使用ffmpeg命令行可以实现以下功能:

ffmpeg-i yuvy%01d.jpg-vcodec mjpegout.mp4

我想在我的代码中直接做到这一点(当然不首先创建jpeg图像)

三个主要步骤

  • 解码(使用avcodec_decode_video())
  • 将原始帧转换为yuv420p格式(使用swscale())
  • 编码(使用avcodec_encode_video())

  • 如果您需要,我可以提供示例代码

    我通过以下操作修复了它:


    我使用了muxing示例,而不是使用encode函数,我只是跳过它,直接将JPEG数据加载到数据包中。为了设置OutputContext,我使用了guess格式函数,并将编解码器设置为MJPEG。我将PTS数据更改为帧计数器。因为所有的框架都是按时间顺序排列的。

    海报应该已经完成了所有这些。现在手头有JPEG,他想将帧写入视频文件。好的,那么只需第2步和第3步,因为JPEG帧在yuvj422p中,如果我没记错的话,我正在嵌入式平台上运行编码,并获得原始yuvj422p编码比特流。我想直接把它放到一个mp4容器里。解码和编码会占用太多的循环时间。@arash kordi:不,他需要下一步的第4步请告诉我清楚,你是从原始yuvj422p比特流还是从jpeg图像创建了一个.mjpeg文件?