是否可以在没有运行图形界面的情况下使用GStreamer?

时间:2013-08-15 09:23:05

标签: linux embedded gstreamer

我正在使用GStreamer设置我的第一个应用程序,其中一个要求是必须优化环境,因此没有图形界面。 我有一个运行在Pandaboard(ARMv7 - TI OMAP4 - Rev 3.2)上的Arch Linux,没有任何图形。只是文字终端。

我现在想做的就是去看电影。第二步将是自定义媒体播放器的快速原型。

作为GStreamer的初学者,我可能会做一些毫无意义的事情,但是所有示例 http://docs.gstreamer.com/display/GstSDK/Basic+tutorials 在电路板上正确编译 但没有一个可以使用

gst-inspect-0.10和gst-launch-0.10等所有命令都会失败。

问题是:

  1. 是否可以让GStreamer在文本模式下工作?
  2. 并创建一个在文本模式下工作的应用程序??
  3. 非常感谢!

    任何帮助都非常感谢。

3 个答案:

答案 0 :(得分:2)

这个问题并不像听起来那么奇怪,如果你发现海报是一个嵌入式系统的人。

许多加速的片上系统设计都有专用的,加速的,在某些情况下还有DRM隔离的视频输出硬件和子系统。这些与图形用户界面"完全无关。显示 - 虽然他们经常偷走他们的记忆。 (当存在GUI时,将硬件合成器叠加在另一个上面是非常常见的。这意味着您可以在电影上看到屏幕显示,但是您无法破解该框#&# 39; OSD用于从受DRM保护的内容中进行屏幕抓取。)

所以,海报很可能会说,"我必须通过SSH进入这个生锈桶,并且由于某种原因,HDMI端口还没有工作。我能否至少判断加速视频接收器是否正常工作,以便我可以告诉我的项目经理我们今年可以给人们圣诞节了吗?"

但是,首先要做的是验证纯软件解复用器和纯软件解码器是否正常工作。然后,测试硬件加速解码器,然后测试硬件加速的解复用器(如果有的话)。只有这样你才能测试硬件加速的视频渲染接收器。

要进行这样的零碎测试,您需要熟悉一个名为" gst-launch"的命令行工具。要找出可用的部分,您还需要习惯于" gst-inspect"。最后,您需要在某处安装GraphViz并学习如何让GStreamer转储" .dot"文件调试图表以供检查。

您的测试应该首先实例化一个文件读取并将其转储为遗忘,如下所示:

gst-launch filesrc location = foo.mkv! fakesink

然后将其解复用为音频和视频流并将其中的每一个丢弃:

gst-launch filesrc location = foo.mkv!排队! matroskademux name = demux demux。 !排队! fakesink demux。 !排队! fakesink

相信我,语法从那里变得更加神秘。没有那些符号符合您的期望,包括空格。请仔细阅读文档。基本上,!是"连接"," .name"表示"输入名称","名称。"意味着"名称"的输出方面,以及空间的完全取决于其他方面的内容。您将不得不阅读大量示例并在感觉可用之前使用它一段时间,这就是它的工作原理。我强烈建议将长启动行放入shell脚本中,以便您可以清理它们并使用变量替换。

完整的解码和渲染通常看起来像这样:

gst-launch filesrc location = foo.mkv!排队! matroskademux name = demux demux。 !排队! vp8dec!排队!视频转换!排队! autovideosink demux。 !排队! opusdec!排队! audioconvert!听觉样本!排队! autoaudiosink

......任何比这更复杂的东西都是彻头彻尾的恐怖。很有趣!

我有一些建议:

  1. 在头部射击GStreamer 0.10,直到死亡,死亡,死亡。
  2. 对于嵌入式系统,不要使用比GStreamer 1.3.6更早的任何东西。永远。 EVER。重视。
  3. 如果可能,请使用GStreamer 1.8.2或更新版本。
  4. 熟悉硬件加速的GStreamer分支机构和辅助项目所发生的奇怪历史,特别是对于IMX6。
  5. 使用" aasink"在早期测试期间将视频/图像渲染到控制台上的ASCII动画。
  6. 试图将Vorbis或Theora推出多播是疯狂的。压缩字典是可变的,不是固定的,但它们在流中没有编码。在带外移动它们的机制是可怕的和不完整的,如果你想尝试将它们插入到SDP文件中则更糟糕。等待许多不相关的库和六个RFC的MAJOR更新,或选择不同的格式。
  7. 没有。 5让我们回到原来的问题,甚至更多的字面意思 - "我想看一部没有GUI的电影"。

    事实上,您可以使用ASCII艺术视频渲染接收器完成此操作," aasink"。默认情况下,它并非在所有发行版中都可用,您可能需要构建它。实际上,您应该计划完全重新配置和重建所有GStreamer,以及您可以容忍的许多支持库,并针对您的目标进行优化。

    如果您打开它,您将在终端上获得视频流的"矩阵" -esque视图,前提是数据速率足够快,终端仿真合理完成,您记得运行"重置"偶尔命令,并将您的终端调整为小尺寸。

    但是,除非音频在某处,否则您的图表仍会停止。为此,还有" monoscope",它将音频渲染到波形视图。但这通常需要一个GUI ...除非...看看这是怎么回事?您可以构建一个gst-launch行,通过使用其中一个合成器插件覆盖它们,将视频和音频呈现为ASCII序列。令人震惊,但令人满意!

    希望那些帮助!其他人,请记住,如果海报的问题对您的桌面没有任何意义,那么它可能仍会对其他内容产生很大的影响。

答案 1 :(得分:0)

简短回答: 是的 2.是的

稍长一点: 我不太明白你问的是什么?你想播放电影,但不想使用图形?无论如何,通常只有GStreamer视频接收器可以对环境的GFX端做任何事情(比如带有ximagesink的X),而大多数其他元素几乎只是C代码,例如多路复用/多路分解,编码/解码和不同的管道 - 配件(阀门,三通,漏斗等)

答案 2 :(得分:0)

如果基本教程没有运行,那么您可能必须检查是否正确创建了所有元素。

"他们都没有工作" 意味着什么......? 你得到的错误是什么,或者只是黑屏。它必须打印一些日志或程序在一段时间后停止而不显示任何内容。

检查autovideosink元素是否可用并正确创建。

答案1.在我看来,如果图形界面X(ximagevsink)不可用,则无法显示视频

Ans 2.如果基本教程不能正常工作,我认为应用程序不会。