我只有h.264编码的视频流,我想制作mp4文件。
/ *找到mp4 * /
的输出格式m_pOutputFormat = av_guess_format(“mp4”,NULL,NULL);
if(!m_pOutputFormat)返回FALSE; //找不到合适的输出格式(mp4)。
关于这段代码,我得到mpeg视频编解码器而不是h264,我认为这是因为我在没有libx264的情况下构建了ffmpeg。 (我不想用libx264构建ffmpeg许可证)
m_pOutputFormat-> video_codec = CODEC_ID_H264;
当我将其video_codec更改为CODEC_ID_H264时,它可以正常工作(kmplayer)。但它不适用于ipod,QuickTime。
这段代码可能有误,因为它无法更改codec_tag值(此变量具有const属性)。
1。如何在不重新编译libav + libx264的情况下获得av_guess_format(“mp4”,NULL,NULL)的其他结果?
2. 如何正确制作mp4文件?
答案 0 :(得分:0)
我认为你不需要libx264来正确使用h264流,因为libx264是编码器,而且我使用没有libx264编译的libav来处理h264数据包。它适用于从文件读取数据包并将其写入另一个文件。
对于调用av_guess_format,您可以为h264提供适当的MIME类型(例如视频/ h264或任何其他类型),或者只为函数提供另一个短类型名称。这必须是正确的:av_guess_format(“h264”,NULL,NULL)。
在这里查看一些代码示例(objective-C):http://libav-users.943685.n4.nabble.com/Libavcodec-encoding-with-libx264-td3250373.html