5

与 stagefright 相比,使用 gstreamer 有哪些优势?谁能指出其中的区别。

4

2 回答 2

16

一开始,一个非常笼统的评论。GStreamer是否有优势是非常值得商榷的Stagefright。但是,回答您的问题的一些要点如下。

Stagefright所有编解码器仅依赖OMX/OpenMax接口,而GStreamer编解码器插件可以通过non-OMX接口编写。例如,即使是软件编解码器也被封装到SoftOMXComponent框架中,而无需接口Stagefright也可以很容易地转换为a 。GstElementOMX

其中Stagefright,两个组件之间的通信接口非常通用,通常是MediaBuffer. 这不是hard绑定,而是通过胶水层更方便,即实现OMXCodecorMediaExtractorAwesomePlayer

其中GStreamer,典型的通信接口是通过Pads特定的GstCaps。两个元件的焊盘通过gst_pad_link.

GStreamer提供标准模板,bins例如CameraBinorPlayerBin而在Stagefright您有cameraHal. camera对于玩家,有 2 个潜在的玩家引擎实现,例如StagefrightPlayerNuPlayer

在中,数据处理Stagefrightsink来自. 在中,数据处理可能会通过创建缓冲区并将其送到下游来触发(参考:here)。sourceGStreamersource

最后一点,与当前特定于 androidGstreamer的相比,已被广泛部署。Stagefright

虽然列表可以继续,但这两个框架之间有很多相似之处。例如,

  1. 这两个框架都创建了类似parserscodecs通过Factory Methods即它们使用Factory模式的组件。

  2. 两个框架都使用一个plugin接口来集成较新的组件,例如parsers.

于 2013-04-04T14:58:51.103 回答
0

我对 StageFright 不熟悉,但我要指出 GStreamer 提供了一些非常成熟的调试功能,包括转储 GraphViz(“点”)数据,这些数据可用于构建图形播放图的文字、可视化图表,包括在构建期间,即使在某些类型的部分失败之后。多个调试级别可用,以及某些类型的过滤。

我绝对会推荐任何人在这两个库之间进行选择以用于开发目的比较它们的调试和故障排除能力,特别是在排除管道饥饿和同步方面。

(哦,顺便说一句——将这些点转储转换为 SVG 的最佳格式。我通常在 Firefox 中打开它们。)

于 2017-06-07T23:33:24.923 回答