0

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

帧速率约为 10 FPS。帧大小为 128x4096。

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

不允许外部进程,一切都需要在我的应用程序中运行。

ffmpeg 是一个选项,但如何将它包含到我的项目中并使用它?至少可以说文档是相当糟糕的。x264 也可以是一个选项,但与 ffmpeg 的问题相同。而且它也很贵,1美元一个单位,最低10000。

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

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

4

2 回答 2

0

VP8 SDK有文档,甚至还有一些示例代码

于 2011-03-11T12:12:39.447 回答
0

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

未提及的一个选项是 Intel Media SDK,但它会将您锁定在 Windows 中。

还有西奥拉和狄拉克。

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

Ffmpeg 是一个包罗万象的实用程序,它试图围绕各种编码器/解码器创建一个包装器。如果你使用 x264 编码器,它就变成了 GPLv2。

于 2012-10-08T14:19:55.723 回答