如何以编程方式生成碎片化的mp4文件

时间:2015-12-23 05:31:10

标签: 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 
        -movflags empty_moov+default_base_moof+frag_keyframe -loglevel quiet 
        xxx.mp4"

我想在我的代码中复用mp4文件,而不是创建另一个进程来执行此操作。

感谢。

2 个答案:

答案 0 :(得分:4)

更详细:

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是使用以下命令打开输出文件时获得的 AVFormatContext 的指针: avformat_alloc_output_context2 avio_open 函数。

答案 1 :(得分:2)

libavformatlibavcodec是ffmpeg的基础库。您可能可以使用libavformat完成所需的一切。关于这些库的文档很少,但我记得,大多数理解都可以从头文件中找到。