如何添加编解码器

时间:2011-11-09 21:42:21

标签: c++ video codec

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

2 个答案:

答案 0 :(得分:2)

Intel Integrated Performance Primitives为您提供Windows和Linux编码器和解码器的选择。另一个选项是ffmpeg/libvacodec

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

答案 1 :(得分:1)

libavcodec,libavformat和其他ffmpeg项目 - 可以使用各种编解码器。

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

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

来自Google的

VP8和WebM。

MJPG - 这只不过是将每个帧编码为JPG。高CPU和高比特率,但最简单的实现。您可以找到任何JPG编码器。

关于编解码器API的一个注释。直观地说,你只想拥有“压缩”和“解压缩”的功能。 (MJPG符合此要求)但视频比压缩单个帧更复杂。大多数压缩帧缓冲区基于前一帧的差异而不再对整个图像进行编码。它们具有针对不同目标比特率,有损(UDP)与无损(TCP)网络,帧速率,I帧接口等的调谐...一些高级编解码器甚至期望从接收器获得QOS信息,使得他们可以自我 - 调整其输出以匹配网络条件。