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

标签 video file-io file-format codec

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

1) MPEG-4/H.264 (.mp4) 2) AVI/DiVX (.avi) 3) 奥格/西奥拉 (.ogg) 4) Windows Media 视频 (.wmv)

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

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

最佳答案

这取决于您的应用程序正在做什么。如果您想要处理从视频捕获卡录制的视频,您可能需要能够读取嵌入了 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——我没有使用过它们)。

关于video - 如果您必须添加对一种视频文件格式和编解码器的支持,您会选择哪一种?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/305773/

相关文章:

windows - 批量使用ffmpeg时如何使用临时文件并替换输入?

c - linux x86_64 vm gcc 可执行输出架构错误,exec 文件格式错误

ios - 使用 AVFoundation,如何从视频的所有帧中删除中间 400 像素

c++ - mmap 比 getline 慢?

c++ - 从文本文件中读取信息并将其正确存储在数组中,int

javascript - 有没有可以进行文件操作的javascript引擎

sqlite - SQLite 是否具有 C API 可以读/写的机器可移植文件格式?

objective-c - 为什么我编译的(小的)objective-C 文件的一半是一大块零?

macos - 是否可以在使用 AVFoundation 录制的同时对视频文件 "chunking"/segmenting 进行分割?

c - 它正在录制,但录制的视频无法播放。它给出错误 "moov data not found",请帮我解决这个问题