我正在研究这两个应用程序:一个在Windows下运行,实时处理专有视频并通过TCPIP发送;另一个应用程序在Linux中接收并播放。现在它适用于需要千兆网络的未压缩视频帧。我想压缩视频。你能推荐一个(a)在Windows和Linux上都可用的编解码器,(b)可以用作API - 实时CompressFrame(),UncompressFrame()?
答案 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信息,使得他们可以自我 - 调整其输出以匹配网络条件。