如何使用gstreamer在两个不同的显示器中同时播放两个不同的视频?

时间:2019-09-11 10:04:49

标签: video raspberry-pi3 gstreamer gstreamer-1.0 gstreamer-0.10

我正在使用 1.具有2个HDMI端口的Raspberry Pi 4 ModelB。 2. Gstreamer-1.0

我有两个视频保存在存储卡中。我想将两个视频驱动到两个不同的HDMI端口,并同时在两个不同的显示器中播放视频。我想知道Gstreamer管道可以访问HDMI-1和HDMI-2端口,并且还可以在不同的显示器中同时播放两个不同的视频。

我在这里尝试将video.mp4驱动到HDMI-2。

gst-launch-1.0 playbin3 videosink =“ mfw-v4lsink device = dev / video18” uri = file:///home/pi/Downloads/video.mp4

我什至尝试过

gst-launch-1.0 playbin3 videosink =“ mfw-v4lsink device = HDMI-2” uri = file:///home/pi/Downloads/video.mp4

还有

gst-launch-1.0 playbin3 videosink =“ mfw-v4lsink device = dev / HDMI-2” uri = file:///home/pi/Downloads/video.mp4

我无法将视频驱动到HDMI-2端口。 我希望视频可以在HDMI-2中播放,但是对于上述所有3个给定的管道,实际输出都是在HDMI-1中输入。

1 个答案:

答案 0 :(得分:0)

在下载中,我有.mkv .mp4和.avi文件。我正在尝试将视频驱动到其他HDMI端口。我已经将两个显示器连接到两个HDMI端口。 我使用了命令modetest。我只有一个平面ID。那是28

我使用了以下管道

gst-launch-1.0 -vvv -e filesrc位置= / home / pi / Downloads / count.mkv! matroskademux! h264parse! v4l2h264dec! kmssink plane-id = 28

我收到以下错误

将管道设置为PAUSED ... 管道正在预卷... / GstPipeline:pipeline0 / GstKMSSink:kmssink0:显示宽度= 1920 / GstPipeline:pipeline0 / GstKMSSink:kmssink0:显示高度= 1080 /GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:sink:帽=视频/ X-H264,级别=(串)3,简档=(字符串)高,codec_data =(缓冲液)0164001effe1001c6764001eacd940b43dbff00080009100000303e90000ea600f162d9601000668ebe3cb22c0,流格式=(字符串)AVC ,alignment =(string)au,width =(int)720,height =(int)480,pixel-aspect-ratio =(fraction)8/9,framerate =(fraction)30000/1001,interlace-mode =(string )混合 /GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src:caps = video / x-h264,level =(string)3,profile =(string)high,流格式=(string)byte-stream,对齐方式=(string )au,宽度=(int)720,高度=(int)480,像素长宽比=(分数)8/9,帧速率=(分数)30000/1001,隔行扫描模式=(字符串)混合,色度格式=(字符串)4:2:0,位深度亮度=(uint)8,位深度深度色度=(uint)8,解析=(布尔值)true 错误:来自元素/ GstPipeline:pipeline0 / v4l2h264dec:v4l2h264dec0:设备'/ dev / video10'不支持交错隔行扫描 其他调试信息: gstv4l2object.c(3817):gst_v4l2_object_set_format_full():/ GstPipeline:pipeline0 / v4l2h264dec:v4l2h264dec0: 设备需要逐行隔行扫描 错误:管道不希望预卷。 将管道设置为NULL ... 正在释放管道...

如果我使用plane-id = 80,则会出现以下错误

将管道设置为PAUSED ... 错误:管道不想暂停。 错误:来自元素/ GstPipeline:pipeline0 / GstKMSSink:kmssink0:找不到crtc的平面 其他调试信息: gstkmssink.c(755):gst_kms_sink_start():/ GstPipeline:pipeline0 / GstKMSSink:kmssink0 将管道设置为NULL ...

我尝试使用fbdevsink

$ gst-launch-1.0 v4l2src! jpegdec! fbdevsink device = / dev / fb0gst-launch-1.0 -v videotestsrc! fbdevsink device = / dev / fb0

我使用了此命令,它仅显示一个帧缓冲区

pi @ raspberrypi:〜$ ls -l / dev / fb * crw-rw ---- 1个根视频29,0 Sep 13 11:10 / dev / fb0