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

Ste*_*low 2 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 从纯 shell 工作?
  2. 并创建一个使用 GStreamer 在纯 shell 中工作的应用程序?

非常感谢!

任何帮助高度赞赏。

bre*_*int 8

如果您意识到发布者是嵌入式系统专家,那么这个问题并不像听起来那么奇怪。

许多加速的片上系统设计都有专用的、加速的、在某些情况下与 DRM 隔离的视频输出硬件和子系统。这些与“图形用户界面”显示完全无关——尽管它们经常从它们那里窃取内存。(当存在 GUI 时,硬件合成器将一个叠加在另一个之上是很常见的。这意味着您可以在电影上看到屏幕显示,但您无法破解盒子的 OSD例如,从受 DRM 保护的内容中抓取屏幕。)

所以,海报很可能会说,“我必须通过 SSH 连接到这个锈桶,但由于某些该死的原因,HDMI 端口还不能工作。我至少可以告诉我加速视频接收器是否工作,这样我就可以告诉我的项目经理我们今年可以给人们放圣诞假吗?”

但是,应该做的第一件事是验证纯软件解复用器和纯软件解码器是否正在工作。然后,测试硬件加速解码器,然后是硬件加速解复用器(如果有的话)。只有这样,您才能测试硬件加速的视频渲染接收器。

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

您的测试应该从实例化读取的文件并将其转储到遗忘中开始,如下所示:

gst-launch filesrc location=foo.mkv !假水槽

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

gst-launch filesrc location=foo.mkv !队列 !matroskademux 名称=demux demux。!队列 !假接收器多路复用器。!队列 !假水槽

相信我,语法从那里变得更加神秘。这些符号都没有你所期望的,包括空格。请仔细阅读文档。基本上, !是“connect”,“.name”的意思是“name的输入端”,“name”。意思是“名称的输出端”,一个空间的作用完全取决于它另一边的内容。您必须通读大量示例并使用一段时间才能感觉可用,这就是它的工作原理。我强烈建议将长启动行放入 shell 脚本中,以便您可以清理它们并使用变量替换。

完整的解码和渲染通常如下所示:

gst-launch filesrc location=foo.mkv !队列 !matroskademux 名称=demux demux。!队列 !vp8dec !队列 !视频转换!队列 !自动视频接收器多路复用器。!队列 !opusdec !队列 !音频转换!音频重采样!队列 !自动音频接收器

...任何比这更复杂的事情都会变得非常可怕。好有趣!

我有几点建议:

  1. 在头部射击 GStreamer 0.10,直到它死了,死了,死了。
  2. 永远不要使用比 GStreamer 1.3.6 更旧的任何东西来进行嵌入式系统工作。曾经。曾经。严重地。
  3. 如果可能,请使用 GStreamer 1.8.2 或更新版本。
  4. 熟悉硬件加速的 GStreamer 分支和副项目发生的奇怪历史,特别是对于 IMX6。
  5. 在早期测试期间,使用“aasink”在控制台上将视频/图像渲染为 ASCII 动画。
  6. 试图通过多播将 Vorbis 或 Theora 推出是疯狂的。压缩字典是可变的,不是固定的,但它们没有在流中编码。在带外移动它们的机制是可怕的和不完整的,如果你想尝试将它们干扰到 SDP 文件中,那就更糟了。等待许多不相关的库和六个 RFC 的主要更新,或者选择不同的格式。

第 5 条让我们回到更字面意思的原始问题——“我想在没有 GUI 的情况下观看电影”。

实际上,您可以使用 ASCII 艺术视频渲染接收器“aasink”来做到这一点。默认情况下,它并非在所有发行版中都可用,您可能需要构建它。事实上,您不仅应该计划完全重新配置和重建 GStreamer 的所有部分,还应该计划重新配置和重建尽可能多的支持库,并针对您的目标进行优化。

如果您打开它,您将在终端上获得视频流的“矩阵”式视图,前提是数据速率足够快,您的终端仿真相当完整,您记得在输入中运行一次“重置”命令一会儿,您的终端将调整为小尺寸。

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

希望那些帮助!和其他所有人一样,请记住,如果海报的问题对您的桌面没有意义,那么它在其他方面可能仍然很有意义。