C++ 如何以编程方式生成片段化mp4文件

C++ 如何以编程方式生成片段化mp4文件,c++,video,ffmpeg,mp4,bento,C++,Video,Ffmpeg,Mp4,Bento,我有一个媒体.h264直播服务器,希望将.h264帧多路复用到碎片化的mp4文件中。我想知道是否有任何图书馆可以支持这一点 据我所知,ffmpeg.exe和Bento4可以支持这一点,但我希望在代码中使用库来实现这一点,而不是执行另一个进程 为了说明我的观点,我想生成片段化的mp4文件,这可以通过执行ffmpeg.exe来实现,如下所示: ffmpeg -i xx.h264 -vcodec copy -an -f mp4 -reset_timestamps 0

我有一个媒体.h264直播服务器,希望将.h264帧多路复用到碎片化的mp4文件中。我想知道是否有任何图书馆可以支持这一点

据我所知,ffmpeg.exe和Bento4可以支持这一点,但我希望在代码中使用库来实现这一点,而不是执行另一个进程

为了说明我的观点,我想生成片段化的mp4文件,这可以通过执行ffmpeg.exe来实现,如下所示:

ffmpeg -i xx.h264 
        -vcodec copy -an -f mp4 -reset_timestamps 0 
        -movflags empty_moov+default_base_moof+frag_keyframe -loglevel quiet 
        xxx.mp4"
我想在我的代码中多路复用mp4文件,而不是创建另一个进程

谢谢。

更多详细信息:

AVDictionary* opts = NULL;
av_dict_set(&opts, "movflags", "frag_keyframe+empty_moov", 0);
后来:

//init muxer, write output file header
avformat_write_header(formatContext, &opts);

其中formatContext是使用:avformat\u alloc\u output\u context2和avio\u open函数打开输出文件时获得的AVFormatContext的指针。

您能否澄清为什么生成另一个进程是一个如此糟糕的主意?来自ffmpeg项目的libavformat。您成功地以编程方式生成了碎片化的MP4吗?你能举个例子吗?