GStreamer 使用 xvimage 预览 RTMP

GStreamer preview RTMP using xvimage

我想使用 gstreamer xvimagesink 预览 RTMP。如果我像这样使用 autovideosink,我可以看到输出:

gst-launch-1.0 -v rtmpsrc location='rtmp://127.0.0.1:1935/live/stream' ! decodebin3 ! autovideosink

但是如果我用 "xvimagesink" 替换 "autovideosink" 我得到这个:

Setting pipeline to PAUSED ...
ERROR: Pipeline doesn't want to pause.
ERROR: from element /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0: Could not initialise Xv output
Additional debug info:
xvimagesink.c(1773): gst_xv_image_sink_open (): /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0:
Could not open display (null)
Setting pipeline to NULL ...
Freeing pipeline ...

两个 decodebin3 and autovideosink are auto-plugging GStreamer 元素。这意味着这两个元素都是自动选择可用的和最合适的 GStreamer 插件 demux/decode (decodebin3) 并从实时 RTMP 流中渲染视频 (autovideosink)。

所以很有可能,例如,

  • decodebin3 解码 xvimagesink 无法在您的 platform/hardware and/or 上使用您的 Gstreamer 版本显示的格式的视频,
  • xvimagesink 在您的平台上设置不正确,与可用 display/monitor.
  • 无关

了解更多详情

  • decodebin3
  • 解码的视频格式
  • 视频接收器元素 "chosen" 来自 autovideosink

您可以设置更高(更详细)的 GStreamer 调试级别,例如 export GST_DEBUG=3,重新运行管道并检查输出。