我可以通过没有libx264的libavformat将h264流复制到mp4(aac)吗?

时间:2011-06-03 10:11:02

标签: ffmpeg h.264 mp4 libav

我只有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文件?

1 个答案:

答案 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