How to play two different videos in two different displays simultaneously using gstreamer?

Daniel Rossi electroteque at gmail.com
Fri Sep 13 00:51:55 UTC 2019


I'm new to all this and don't understand the graphics internals.

I only need one output personally so just need to specify kmssink.

So for RPI 3B will support v4l2h264dec ? I've yet to test that stage. 
I've realised the packages aren't very up to date on Debian. So I spent 
time trying to figure out how to rebuild them all for Buster as I needed 
SRT support. It took me a long while which approach to go with and I 
chose the Debian git sources.

I have a script to automate the package building from Debian git 
sources, and modifying the rules configure arguments to my needs. 
Building libdrm shouldn't be a problem. I'm pretty sure it was a 
dependency and in there though.

And sorry for a noobie ask. I am using playbin3 for now in a gst-python 
script. It works fine. But to specify v4l2h264dec, do I need to do a 
more specified pipeline or can it autodetect it ?

Reason being, it has to accept rtmp or srt input. And they require 
different pipelines. From is mpegts the other isn't.

------ Original Message ------
From: "Nicolas Dufresne" <nicolas at ndufresne.ca>
To: "Daniel Rossi" <electroteque at gmail.com>; "Discussion of the 
development of and with GStreamer" 
<gstreamer-devel at lists.freedesktop.org>
Sent: 9/13/2019 7:48:08 AM
Subject: Re: Re[2]: How to play two different videos in two different 
displays simultaneously using gstreamer?

>Le jeudi 12 septembre 2019 à 15:02 +0000, Daniel Rossi a écrit :
>>  I just saw a pipeline like this. The id is set here. But no idea what the id means. Somebody mentioned 32 is screen 1 and 64 is screen 2.
>>
>>  As far as hardware decoding goes. Is video4linux the appropriate one to use or OpenMax, and does playbin3 detect this automatically ?
>
>V4L2 on most recent PI is to be used.
>
>>
>>  gst-launch-1.0 -vvv -e filesrc location=big_buck_bunny_720p_h264.mkv ! matroskademux ! h264parse ! v4l2h264dec ! kmssink plane-id=64
>
>This is highly hardware specific. Unfortunately Debian don't have a
>drm-utils package, but if you build libdrm (mesa/drm), you'll find a
>utility call modetest. This dumps all supported connectors, encoders,
>crtcs and planes. Again, if you have planes that are attached to
>seperate crtcs and each associate with a different connectors, this
>approach of setting the plane-id may work. But as a normal user, the
>second kmssink will fail, as there can only be one DRM master. Some
>work would be needed to share the DRM driver FD (it's as simple as
>that).
>
>>
>>  ------ Original Message ------
>>  From: "Nicolas Dufresne" <nicolas at ndufresne.ca>
>>  To: "Discussion of the development of and with GStreamer" <gstreamer-devel at lists.freedesktop.org>
>>  Sent: 9/12/2019 10:50:44 PM
>>  Subject: Re: How to play two different videos in two different displays simultaneously using gstreamer?
>>
>>  > Le jeudi 12 septembre 2019 à 06:56 -0500, NikhilMG a écrit :
>>  > > I am using
>>  > > 1. Raspberry Pi 4 Model B which has 2 HDMI ports.
>>  > > 2. Gstreamer-1.0
>>  > >
>>  > > I have two videos saved in memory card. I want to drive two videos to two
>>  > > different HDMI port and play videos in two different Displays
>>  > > simultaneously. I would like to know the Gstreamer pipeline to access the
>>  > > HDMI-1 and HDMI-2 ports and also play two different videos in different
>>  > > displays simultaneously.
>>  > >
>>  > > Here I am trying to drive video.mp4 to HDMI-2.
>>  > > */gst-launch-1.0 playbin3 videosink="mfw-v4lsink device=dev/video18"
>>  > > uri=file:///home/pi/Downloads/video.mp4/
>>  >
>>  >
>>  > mfw-v4l2sink looks like one of Freescale plugin. The Raspberry Pi has
>>  > stanard DRM drivers for the display. The easiest way is to start X11 or
>>  > Wayland (weston), and then use the appropriate API to select the output
>>  > to display on, this needs some programming of course.
>>  >
>>  > The alternative is to use kmssink, but that right now can only work if
>>  > the two connectors can run on seperate CRTC, I don't know (and haven't
>>  > tested yet) what is possible on the PI. I believe I can guide you on
>>  > how to improve kmssink.
>>  >
>>  > > *
>>  > > I even tried
>>  > > */gst-launch-1.0 playbin3 videosink="mfw-v4lsink device=HDMI-2"
>>  > > uri=file:///home/pi/Downloads/video.mp4
>>  > > / *
>>  > > and also tried
>>  > > */gst-launch-1.0 playbin3 videosink="mfw-v4lsink device=dev/HDMI-2"
>>  > > uri=file:///home/pi/Downloads/video.mp4
>>  > > /*
>>  > > I am not able to drive the video to HDMI-2 port. I expect the video to be
>>  > > played in HDMI-2, but the actual output is coming in HDMI-1 for all the
>>  > > above 3 given pipelines.
>>  > >
>>  > >
>>  > >
>>  > >
>>  > >
>>  > > --
>>  > > Sent from: http://gstreamer-devel.966125.n4.nabble.com/
>>  > > _______________________________________________
>>  > > gstreamer-devel mailing list
>>  > > gstreamer-devel at lists.freedesktop.org
>>  > > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>
>>  _______________________________________________
>>  gstreamer-devel mailing list
>>gstreamer-devel at lists.freedesktop.org
>>https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20190913/bdf35172/attachment.html>


More information about the gstreamer-devel mailing list