假设您有一个视频文件。
据我搜索,您首先需要通过 mediainfo
命令知道它使用什么容器。
$ mediainfo your_path_to_a_video.file
然后你需要为容器找到一个分离器,所以你这样做
$ gst-inspect-1.0 | grep your_container_name_such_as_ogg
现在您有了合适的分路器,例如 oggdemux
,您可以拆分视频和音频。如果要显示视频,首先需要知道编解码器名称,然后需要对其进行解码才能输出到屏幕上。
回到 mediainfo
输出,你会找到视频 Format
,然后你就可以了
$ gst-inspect-1.0 | grep format_name_such_as_theora
您会找到theoradec
并通过以下方式查看其详细信息
$ gst-inspect-1.0 | decoder_name_such_as_theoradec
查看sink
和src
。你现在发现 src
是 video/x-raw
所以你需要找到最终的接收器来输出显示的视频,比如 xvimagesink
。
我只是根据 web page in Japanese 写这一切,而且我没有找到任何其他页面解释得比这更多(无论是英文还是日文)。
我想找到解释如何根据 mediainfo 等完成管道的页面。即使在我阅读网页之后,我仍然不确定如何匹配元素之间的功能。
您如何构建管道?
如何搭配帽子?
最佳答案
如果你只想播放你的视频文件,你可以这样做:
gst-launch-1.0 playbin uri=file:///path/to/your/video
如果您需要将其解码为原始视频格式并进行进一步处理,您可以:
gst-launch-1.0 uridecodebin uri=file:///path/to/your/video ! video/x-raw ! further_processing
音频也是如此,您甚至可以命名您的 uridecodebin 来分隔音频和视频:
gst-launch-1.0 uridecodebin uri=file:///path/to/your/video name=d ! video/x-raw ! further_video_processing d. ! audio/x-raw ! further_audio_processing
如果你想看看实际的管道是什么样的,你可以设置 GST_DEBUG_DUMP_DOT_DIR 环境变量来转储一个点表示:
GST_DEBUG_DUMP_DOT_DIR=$PWD gst-launch-1.0 playbin uri=file:///path/to/your/video
然后:
dot -Tsvg name_of_the_dot_file.dot -o mypipeline.svg
编辑:至于我阅读的文档,“应用程序开发手册”,gst-launch 和 gst-inspect 的手册页以及此处的各种文档:http://cgit.freedesktop.org/gstreamer/gstreamer/tree/docs应该让你开始。
关于linux - 你如何构建 gstreamer 的 gst-launch 管道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27496901/