【问题标题】:What MPEG4 encoder library to use?使用什么 MPEG4 编码器库?
【发布时间】:2012-06-23 12:21:26
【问题描述】:

所以我有一个使用 DirectShow 录制视频的 WIN32 应用程序。现在我想将 .AVI 文件转换为 .MP4。

我宁愿不在源代码中使用自定义过滤器,因为我不想注册过滤器(需要管理员)。我也不想使用独立的应用程序,因为它应该是自动化的。最好我只想要一个具有良好记录的 API 的库,因为我对此很陌生。然后我可以在我的应用程序中使用它来转换完成录制的 .AVI 文件。任何人都可以指出我的方向吗?或者在我选择的方法上有 cmets?

如果您有任何帮助,我将不胜感激,并提前致谢!

【问题讨论】:

    标签: c++ directx directshow mpeg-4


    【解决方案1】:

    由于 MPEG-4 编解码器不是免版税的,因此找到合适的编码器可能并不像您想象的那么容易。 Microsoft 不向 Windows 提供编码器,除了 Windows 7 的某些版本中的 H.264 (MPEG-4 Part 10) 编码器,并且仅在 Media Foundation 中提供(与 DirectShow 相对)。如果您可以仅限于那些 Windows 7 版本,Media Foundation 可能是一个不错的选择,MSDN 提供了将文件转码为文件的示例,并且相当简单且有据可查。

    有第三方解决方案,有一半制作的库可用于编码器,FFmpeg 提供 LGPL 下的 MPEG-4 Part 2 视频编码器,以及 GPL 下通过 libx264 提供的 MPEG-4 Part 10。我的理解是,您可能仍然需要向 MPEG-LA 支付版税。 FFmpeg 可能仍然是一个将文件转换为文件的好选择,因为它的命令 lnie 接口有很好的文档记录(与 libavformat/libavcodec API 相反,相反,它没有很好的文档记录)。

    另一种选择是使用 Windows Media 编解码器并压缩成 ASF/WMV 文件。

    【讨论】:

    • 请记住,如果将视频转换为某种 MPEG 类型,您需要向 MPEG LA 支付版税!本视频中的音频也是如此。如果您可以将音频流转换为 AAC,您需要向 VIA Licening 支付版税!
    • @CPlusSharp:是的,除了 Windows 7 的唯一例外,编码器已经作为 Windows 的一部分存在(并且微软支付了版税)。然而,正如我所说,这些只是媒体基础对象。
    • 好像挺麻烦的,非商业软件也适用版税吗?再次感谢 Roman 的详细回答。
    • @RomanR。如果我没记错的话,Mircosoft 在某处说过编码器只能在 Mircosoft 产品中合法使用?
    • @CPlusSharp:据我所知,这是杜比音频编解码器的情况(MSDN 上的“使用领域”限制)。另一方面,Microsoft MPEG-4 编码器的使用不受限制,但只能通过 Media Foundation API(而非 DirectShow)获得。
    【解决方案2】:

    Libavcodec 和 libffmpeg -- 一个从一切到一切的媒体转换器(包括库和命令行应用程序):http://ffmpeg.org/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-29
      • 2012-06-24
      相关资源
      最近更新 更多