我正在尝试设计基于 Android 的硬件加速视频编码器。我已经做了一段时间的研究,但我没有发现太多有用的东西。
无论如何,我看到了 Gstreamer ( http://gstreamer.freedesktop.org/ )。据说这可以提供硬件视频编码器。然而,在我阅读手册后,我没有发现任何关于编码器的信息。
有人知道这个东西吗?谢谢!
我正在尝试设计基于 Android 的硬件加速视频编码器。我已经做了一段时间的研究,但我没有发现太多有用的东西。
无论如何,我看到了 Gstreamer ( http://gstreamer.freedesktop.org/ )。据说这可以提供硬件视频编码器。然而,在我阅读手册后,我没有发现任何关于编码器的信息。
有人知道这个东西吗?谢谢!
这将取决于您的硬件。你在什么设备上运行?
如果您的处理器包含实现视频编码/解码的 IP 内核,则制造商需要提供驱动程序以便您可以调用此硬件,或者理想情况下更进一步并为执行此操作的 GStreamer 提供特定插件。
例如,飞思卡尔 i.MX6 处理器(用于Wandboard和CuBox)有一个飞思卡尔维护的驱动程序:https ://github.com/Freescale/gstreamer-imx
TI OMAP 处理器支持: http: //processors.wiki.ti.com/index.php/GStreamer,另请参阅 TI分布式编解码器引擎。
Broadcom 处理器支持:https ://packages.debian.org/wheezy/gstreamer0.10-crystalhd
视频加速器硬件也有几个标准接口,包括VDPAU、VAAPI和OpenMax IL。如果您的处理器不是上述之一,则可能有人编写了将这些标准接口之一映射到您的硬件的驱动程序。
OpenMax IL 插件显然支持 Rasberry Pi:http: //gstreamer.freedesktop.org/releases/gst-omx/1.0.0.html
如果您不知道您的处理器是否受支持,我会搜索“VDPAU”、“VAAPI”等的名称和各种组合。
Gstreamer 中有多种编码选项可以获取原始流并对其进行编码。几乎任何以“enc”结尾的元素都可以用来进行编码。这是一些编码管道的一个很好的例子:
https://developer.ridgerun.com/wiki/index.php/TVP5146_GStreamer_example_pipelines
话虽如此,我提醒说视频编码是非常硬件密集型的。如果你的流是一个健壮的大小,我也会考虑获得一个特殊用途的硬件编码器,并且不要通过 GStreamer 进行软件编码。