如何将像素从缓冲区编码为h.264或VP8

时间:2011-03-11 12:05:04

标签: c++ h.264 vp8

我有一个应用程序(qt c ++)从USB设备读取数据,将该数据解码为存储在uchar数组中的24位RGB像素。

帧率约为10 FPS。 Framesize是128x4096。

问题是:如何将这些帧实时编码为VP8或h.264视频?

不允许任何外部进程,所有内容都需要在我的应用程序中运行。

ffmpeg是一个选项,但如何将其包含在我的项目中并使用它?至少可以说文档很糟糕。此外,x264可能是一个选项,但与ffmpeg相同。它也非常昂贵,单位1美元,最低10000美元。

简单指南会有所帮助,但我怀疑是否存在。

应用程序应该在Windows和Linux中运行。

2 个答案:

答案 0 :(得分:0)

VP8 SDK有文档甚至some sample code

答案 1 :(得分:0)

VP8 SDK的问题在于示例仅编码为IVF。由于安全漏洞(缓冲区溢出),该编解码器似乎已被Microsoft关闭。当你甚至无法检查结果时,甚至很难获得VP8项目设置。它至少使用BSD许可证计划,并且据称不受专利限制。 VP8 SDK有一些转换格式的例程,但它们都隐藏在源代码树中。

未提及的选项是英特尔媒体SDK,但会将您锁定到Windows。

还有Theora和Dirac。

X264有一个编码器,但获得商业许可证会很昂贵。 GPLv2源代码不是“免费”的。我不在乎他们试图让你相信什么。 还有一个名为“Revel - 真正简单的视频编码库”的项目。这是获得MPEG-4第2部分文件编码的途径。 H264是MPEG-4的第10部分.H264也称为AVC。狂欢也是GPL。

Ffmpeg是一个catch all all实用程序,它试图在各种编码器/解码器周围创建一个包装器。如果您使用x264编码器,它将变为GPLv2。