2

我希望在我的应用程序中添加对读取和写入视频文件的支持。如果您必须选择一种能够满足大多数用户的文件格式和编解码器组合,您会选择哪种:

1) MPEG-4/H.264 (.mp4) 2) AVI/DiVX (.avi) 3) Ogg/Theora (.ogg) 4) Windows Media Video (.wmv)

我倾向于 MPEG-4/H.264,因为它在 Linux、Mac OS X、Flash 播放器、iPod、Playstation 3、XBox360 中得到支持,并且即将在 Microsoft Silverlight 和 Windows Media Player 12 中得到支持。

我错过了什么吗?我可以选择更好的东西吗?

4

3 回答 3

3

这取决于您的应用程序在做什么。如果您想处理从视频采集卡录制的视频,您可能需要能够读取嵌入了 mpeg2 的 .mpg 文件。大量视频使用 .avi 或 .wmv 容器。微软正在推动 .wmv,但 .avi 在免费工具中得到了更好的支持。在 Windows 上支持 .mp4 容器的工具并不多(Mac 可能不同)。H.264、mpeg2 和 mpeg4 是我最喜欢的编解码器。H.264 在质量/比特率方面非常出色,但难以实现精确和快速的搜索,并且 CPU 密集度极高。mpeg4 在质量/比特率方面几乎与 h.264 一样好,但它的 CPU 密集度要低得多。mpeg2 需要更多位才能达到相同的质量,但几乎所有地方都支持它,并且在这些文件中解码和查找非常容易。

如果您不介意使用 LGPL 代码,我建议您查看ffmpeg的 libavcodec 和 libavformat。它会让你在所有平台上做你提到的所有事情(虽然我不确定 Ogg 和 Theora——我没有使用过它们)。

于 2008-11-20T16:17:33.637 回答
1

我想你的第一个选择是我的选择。我认为大多数应用程序都可以读取这种格式,而且灵活性较差。

如果我是正确的,AVI/DIVX 文件实际上可以包含不同类型的媒体,wmv 也是如此。这使得使用这些格式变得更加困难,因为您需要支持所有编码。

于 2008-11-20T16:31:55.747 回答
0

首先,您的视频中也会有声音吗?如果是的话,我会选择mp3。

现在,考虑视频编解码器和视频容器。我认为出于各种原因,您不应该考虑选项 3 和 4。Theora 真的不受欢迎(我还没有看到过 Theora 视频),而且 WMV 是 Microsoft 技术,所以您的选择有点有限。

现在,关于前两个:我会在 Avi 容器中使用 DivX(Mpeg4 第 2 部分)视频。它非常受欢迎,因为大多数计算机和许多 DVD 都能够播放此类视频。此外,还有一个很棒的开源 DIVX 编解码器 XVID。最后,DIVX 在编码和解码方面需要的资源都比 H.264 少得多。最后一个很重要,因为根据编码参数,甚至可能不支持实时 H.264 编码。

许多平台缺乏对 AVI/DIVX 的支持不是问题,因为使用开源工具可以很容易地转码为任何格式。

于 2009-07-24T16:27:15.873 回答