所以我有一个使用 DirectShow 录制视频的 WIN32 应用程序。现在我想将 .AVI 文件转换为 .MP4。
我宁愿不在源代码中使用自定义过滤器,因为我不想注册过滤器(需要管理员)。我也不想使用独立的应用程序,因为它应该是自动化的。最好我只想要一个具有良好记录的 API 的库,因为我对此很陌生。然后我可以在我的应用程序中使用它来转换完成录制的 .AVI 文件。任何人都可以指出我的方向吗?或者对我选择的方法有意见?
我会非常感谢任何帮助,并提前致谢!
所以我有一个使用 DirectShow 录制视频的 WIN32 应用程序。现在我想将 .AVI 文件转换为 .MP4。
我宁愿不在源代码中使用自定义过滤器,因为我不想注册过滤器(需要管理员)。我也不想使用独立的应用程序,因为它应该是自动化的。最好我只想要一个具有良好记录的 API 的库,因为我对此很陌生。然后我可以在我的应用程序中使用它来转换完成录制的 .AVI 文件。任何人都可以指出我的方向吗?或者对我选择的方法有意见?
我会非常感谢任何帮助,并提前致谢!
由于 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 文件。
Libavcodec 和 libffmpeg - 一个一切到一切的媒体转换器(包括库和命令行应用程序): http: //ffmpeg.org/