我需要创建一个带有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 error
:https://gist.github.com/NeuronQ/de24db937a4d5a28eeb46612914b8779。