一个通用的 gstreamer 管道使用 xvimagesink 来拉取 rtmp 流 with/without 音频
A general gstreamer pipeline use xvimagesink to pull rtmp stream with/without audio
假设有2种流,一种是纯视频流(无音频),另一种是带音频的视频。我们知道带有 uri 的 playbin 可以播放它们,即使我们不知道我们得到的是哪种流,但是是否有任何使用 xvimagesink 或 nv3dsink(不是 autovideosink 等)的管道可以同时接收(有或没有音频)原因不知道视频流是否带音频?
例如,如果视频流是带音频的,我们播放带音频的视频,否则我们播放不带音频的视频。
我试过了
gst-launch-1.0 rtmpsrc location="$RTMP_SRC" ! \
flvdemux name=demux \
demux.audio ! queue ! decodebin ! autoaudiosink \
demux.video ! queue ! decodebin ! autovideosink
但如果视频没有音频,屏幕上只会显示一帧。
https://github.com/matthew1000/gstreamer-cheat-sheet/blob/master/rtmp.md
这篇文章对我帮助很大,但我仍在寻找像“playbin”一样工作但使用 xvimagesink 或 nv3dsink 播放视频的优秀通用管道。
你可以直接使用 video-sink 属性 的 playbin:
gst-launch-1.0 playbin uri=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm video-sink=xvimagesink
gst-launch-1.0 playbin uri=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm video-sink=nv3dsink
假设有2种流,一种是纯视频流(无音频),另一种是带音频的视频。我们知道带有 uri 的 playbin 可以播放它们,即使我们不知道我们得到的是哪种流,但是是否有任何使用 xvimagesink 或 nv3dsink(不是 autovideosink 等)的管道可以同时接收(有或没有音频)原因不知道视频流是否带音频?
例如,如果视频流是带音频的,我们播放带音频的视频,否则我们播放不带音频的视频。
我试过了
gst-launch-1.0 rtmpsrc location="$RTMP_SRC" ! \
flvdemux name=demux \
demux.audio ! queue ! decodebin ! autoaudiosink \
demux.video ! queue ! decodebin ! autovideosink
但如果视频没有音频,屏幕上只会显示一帧。
https://github.com/matthew1000/gstreamer-cheat-sheet/blob/master/rtmp.md 这篇文章对我帮助很大,但我仍在寻找像“playbin”一样工作但使用 xvimagesink 或 nv3dsink 播放视频的优秀通用管道。
你可以直接使用 video-sink 属性 的 playbin:
gst-launch-1.0 playbin uri=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm video-sink=xvimagesink
gst-launch-1.0 playbin uri=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm video-sink=nv3dsink