如何在Android上使用GStreamer的硬件加速视频编码?

时间:2013-10-31 06:44:27

标签: android gstreamer hardware-acceleration encoder

我正在尝试设计基于Android的硬件加速视频编码器。我已经做了一段时间的研究,但我没有找到太多有用的东西。

无论如何,我看到了Gstreamer(http://gstreamer.freedesktop.org/)。据说这可以提供硬件视频编码器。但是,在我阅读手册后,我发现编码器没有任何内容。

有谁知道这些东西?谢谢!

2 个答案:

答案 0 :(得分:2)

它将依赖于您的硬件。你在运行什么设备?

如果您的处理器包含实现视频编码/解码的IP内核,制造商需要提供驱动程序以便您可以调用此硬件,或者理想情况下更进一步为GStreamer提供特定的插件。

例如,飞思卡尔i.MX6处理器(在WandboardCuBox中使用)有一个由飞思卡尔维护的驱动程序:https://github.com/Freescale/gstreamer-imx

TI OMAP处理器支持:http://processors.wiki.ti.com/index.php/GStreamer,另见TI Distributed Codec Engine

Broadcom处理器支持:https://packages.debian.org/wheezy/gstreamer0.10-crystalhd

视频加速器硬件还有几个标准接口,包括VDPAUVAAPIOpenMax IL。如果您的处理器不是上述处理器之一,则可能有人编写了一个驱动程序,将其中一个标准接口映射到您的硬件。

Rasberry Pi显然得到了OpenMax IL插件的支持:http://gstreamer.freedesktop.org/releases/gst-omx/1.0.0.html

如果您不知道您的处理器是否受支持,我会搜索" VDPAU"," VAAPI"等的名称和各种组合。

答案 1 :(得分:1)

Gstreamer中有多种编码选项可以采用原始流并对其进行编码。几乎任何以“enc”结尾的元素都可以用来进行编码。以下是一些编码管道的一个很好的例子:

https://developer.ridgerun.com/wiki/index.php/TVP5146_GStreamer_example_pipelines

话虽如此,我要提醒的是,视频编码非常耗费硬件。我还会考虑获得一个专用的硬件编码器,如果你的流是一个健壮的大小,不要通过GStreamer进行软件编码。