如果您必须添加对一种视频文件格式和编解码器的支持,您会选择哪种?

时间:2008-11-20 15:55:34

标签: video file-io file-format codec

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

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。

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

3 个答案:

答案 0 :(得分: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 - 我还没有使用它们。)

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

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

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

在许多平台上缺乏对AVI / DIVX的支持不是问题,因为使用开源工具转码到任何格式都非常容易。