使用输入选择器时,GStreamer“总线错误”

时间:2019-08-19 12:48:31

标签: python video-streaming gstreamer python-gstreamer

我需要创建一个带有input-selector的GStreamer管道,以便在多个输入源之间进行切换,但是每次我尝试添加这样的组件时,我都会得到一个完全无法描述的Bus error-这一点我很棘手,没有可供我遵循的有用信息,我可以四处进行一些试验和错误调试,但无济于事...

此外,仅当我实际尝试使用管道(由其他方法进一步处理-但已调试该部分)时才出现总线错误,在我的情况下,通过从后来与IINA或VLC等播放器一起使用。尽管其他任何尝试播放都会导致相同的错误,但这并不重要...

我想我缺少关于如何使用input-selector的一些技巧,所以请向我指出任何相关的示例/文档-最后需要实现的内容是一种流式传输RTSP视频供稿的python服务,可通过命令(HTTP API)在要流式传输的各种媒体文件之间切换。

管道示例:

gst-launch-1.0 --gst-debug-level=3 \
  input-selector name=iselect \
  filesrc location={INPUT_VIDEO_FILE_PATH} \
    ! qtdemux ! queue ! h264parse ! iselect. \
  filesrc location={PLACEHOLDER_FILE_PATH} \
    ! pngdec ! imagefreeze ! iselect. \
  iselect. ! gdppay ! shmsink socket-path=/tmp/shm1

也可以使用Gst.parse_launch(...string like above...)或使用Python中的手动逐段管道构造来在Python中构造管道。

此外,在Python中,我将input-selector明确切换为流,如下所示:

input_selector_video_file_sink_pad = input_selector.get_static_pad('sink_1')
input_selector.set_property("active-pad", input_selector_video_file_sink_pad)

作为参考,这是一个完整的“手动管道构建”示例,但失败,但没有描述Bus errorhttps://gist.github.com/NeuronQ/de24db937a4d5a28eeb46612914b8779

0 个答案:

没有答案