我正在使用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等所有命令都会失败。
问题是:
非常感谢!
任何帮助都非常感谢。
答案 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
......任何比这更复杂的东西都是彻头彻尾的恐怖。很有趣!
我有一些建议:
没有。 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.如果基本教程不能正常工作,我认为应用程序不会。