linux - 你如何构建 gstreamer 的 gst-launch 管道?

标签 linux audio video gstreamer openmax

假设您有一个视频文件。
据我搜索,您首先需要通过 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

查看sinksrc。你现在发现 srcvideo/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/

相关文章:

regex - 如何从文件中复制正则表达式匹配项?需要从日志文件中获取所有 MAC 地址

c# - 如何使用 c# 或 XNA 测量声音频率?

iphone - BASS_MIDI_StreamEvent在零位置

android - 如何在 my/sdcard/Android/data/mypackage/files 文件夹中获取视频的缩略图?

linux - 检查 "make"的输出,如果失败则退出 bash 脚本

linux - 如何在 Linux 上的 Monodevelop 中为 VB.NET 项目使用 MSBuild 引擎

python - 使用 Python 从原始帧创建 MPEG4 视频文件

python - 如何编写python opencv脚本,用高品质视频替换低品质视频,使音频与新视频同步?

c++ - 带有 rtkaio 的 linux 上的 aio_write 有时很长

audio - 点对点通信的最大音频/视频延迟