【问题标题】:How to add a codec如何添加编解码器
【发布时间】:2011-11-09 21:42:21
【问题描述】:

我正在开发两个应用程序:一个在 Windows 下运行,实时处理专有视频并通过 TCPIP 发送;另一个应用程序在 Linux 中接收它并播放。现在它适用于需要千兆网络的未压缩视频帧。我想压缩视频。您能否推荐一个编解码器,它 (a) 在 Windows 和 Linux 中都可用,(b) 可以用作 API - 一些实时的 CompressFrame()、UncompressFrame()?

【问题讨论】:

  • 逐帧? jpg呢?
  • 我希望有人能指出我使用与 DirectShow 等操作系统特定框架不兼容的编解码器的示例。

标签: c++ video codec


【解决方案1】:

Intel Integrated Performance Primitives 让您在 Windows 和 Linux 中选择编码器和解码器。另一个选项是ffmpeg/libvacodec

为了更开放地实现互操作性,您可能更愿意实现一些众所周知的网络数据流协议,例如RTSP/RTP

【讨论】:

  • 我已经下载了ffmpeg,但是不知道如何在Windows下编译。它不包括 Visual Studio 项目。我应该自己创建吗?如何使用编解码器的说明在哪里?
  • 你不能用 Visual Studio 编译 ffmpeg stackoverflow.com/questions/4258883/… 但是一旦你用另一个编译器编译它,你就可以在 Visual Studio 项目中使用它(作为 DLL)。
  • 谢谢。您提供的链接似乎正是我想要的。
【解决方案2】:

libavcodec、libavformat 和其他 ffmpeg 项目 - 可供使用的编解码器范围广泛。

Windows Media Format SDK - 可以将视频编码为 WMV 流。相关的 Windows 技术包括 DirectShow 和 Media Foundation。

Ogg Theora - 不是最高质量的编解码器,但免费且易于使用。需要将 RGB 转换为 YUV。我有这方面的示例代码,我可以为你挖掘如何做到这一点。

VP8 和来自 Google 的 WebM。

MJPG - 只不过是将每一帧编码为 JPG。高 CPU 和高比特率,但实现起来最简单。你能找到的任何 JPG 编码器都可以。

关于编解码器 API 的注意事项。直观地说,您只想拥有“压缩”和“解压缩”的功能。 (MJPG 满足这个要求)但是视频比仅仅压缩单个帧更复杂。大多数压缩帧缓冲区基于前一帧的差异,而无需重新编码整个图像。他们针对不同的目标比特率、有损 (UDP) 与无损 (TCP) 网络、帧速率、I 帧接口等进行了调整......一些高级编解码器甚至希望从接收器获取 QOS 信息,以便他们可以自我- 调整它们的输出以匹配网络条件。

【讨论】:

  • libavcodec - 无法弄清楚如何在 VS2008(无项目)中编译它以及如何将其添加到我的项目中。你能举个例子吗?
  • 谢谢。下载开发共享,学习文档。似乎正是我所缺少的。
猜你喜欢
  • 2015-05-01
  • 2020-12-02
  • 2011-07-08
  • 2015-06-18
  • 1970-01-01
  • 2022-07-05
  • 1970-01-01
  • 1970-01-01
  • 2015-11-05
相关资源
最近更新 更多