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/ * 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 [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
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/ 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 > [hidden email] > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel signature.asc (201 bytes) Download Attachment |
I also asked about RPI playbin pipelines and what the appropriate sink to use for HDMI output via a headless python script. The script runs on startup via systemd.
So will it auto select hardware h264 decoding and I have to use kmssink for HDMI output ? I'm not loading in XWindows. To work headless in systemd I had to set the DISPLAY env in the systemd config. This gave me a temporary Xwindow output. ------ Original Message ------
From: "Nicolas Dufresne" <[hidden email]>
To: "Discussion of the development of and with GStreamer" <[hidden email]>
Sent: 9/12/2019 10:50:44 PM
Subject: Re: How to play two different videos in two different displays simultaneously using gstreamer?
_______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
In reply to this post by Nicolas Dufresne-5
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 ? gst-launch-1.0 -vvv -e filesrc location=big_buck_bunny_720p_h264.mkv ! matroskademux ! h264parse ! v4l2h264dec ! kmssink plane-id=64 ------ Original Message ------
From: "Nicolas Dufresne" <[hidden email]>
To: "Discussion of the development of and with GStreamer" <[hidden email]>
Sent: 9/12/2019 10:50:44 PM
Subject: Re: How to play two different videos in two different displays simultaneously using gstreamer?
_______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
------ Original Message ------
From: "Daniel Rossi" <[hidden email]>
To: "Discussion of the development of and with GStreamer" <[hidden email]>; "Discussion of the development of and with GStreamer" <[hidden email]>
Sent: 9/13/2019 1:02:36 AM
Subject: Re[2]: How to play two different videos in two different displays simultaneously using gstreamer?
_______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
In reply to this post by Daniel Rossi
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" <[hidden email]> > To: "Discussion of the development of and with GStreamer" <[hidden email]> > 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 > > > [hidden email] > > > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel > > _______________________________________________ > gstreamer-devel mailing list > [hidden email] > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel signature.asc (201 bytes) Download Attachment |
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" <[hidden email]>
To: "Daniel Rossi" <[hidden email]>; "Discussion of the development of and with GStreamer" <[hidden email]>
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?
_______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
In reply to this post by Daniel Rossi
In downloads I have .mkv .mp4 and .avi files. I am trying to drive video to
different HDMI port. I have connected two monitors to two hdmi port. I used the command *modetest *and I got the following result. I have only one plane-id. That is 28 imp.txt <http://gstreamer-devel.966125.n4.nabble.com/file/t379062/imp.txt> I used the following pipeline *gst-launch-1.0 -vvv -e filesrc location=/home/pi/Downloads/count.mkv ! matroskademux ! h264parse ! v4l2h264dec ! kmssink plane-id=28 * and I got the following error /Setting pipeline to PAUSED ... Pipeline is PREROLLING ... /GstPipeline:pipeline0/GstKMSSink:kmssink0: display-width = 1920 /GstPipeline:pipeline0/GstKMSSink:kmssink0: display-height = 1080 /GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:sink: caps = video/x-h264, level=(string)3, profile=(string)high, codec_data=(buffer)0164001effe1001c6764001eacd940b43dbff00080009100000303e90000ea600f162d9601000668ebe3cb22c0, stream-format=(string)avc, alignment=(string)au, width=(int)720, height=(int)480, pixel-aspect-ratio=(fraction)8/9, framerate=(fraction)30000/1001, interlace-mode=(string)mixed /GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps = video/x-h264, level=(string)3, profile=(string)high, stream-format=(string)byte-stream, alignment=(string)au, width=(int)720, height=(int)480, pixel-aspect-ratio=(fraction)8/9, framerate=(fraction)30000/1001, interlace-mode=(string)mixed, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true ERROR: from element /GstPipeline:pipeline0/v4l2h264dec:v4l2h264dec0: Device '/dev/video10' does not support interleaved interlacing Additional debug info: gstv4l2object.c(3817): gst_v4l2_object_set_format_full (): /GstPipeline:pipeline0/v4l2h264dec:v4l2h264dec0: Device wants progressive interlacing ERROR: pipeline doesn't want to preroll. Setting pipeline to NULL ... Freeing pipeline .../ If I use plane-id= 80, I get following error /Setting pipeline to PAUSED ... ERROR: Pipeline doesn't want to pause. ERROR: from element /GstPipeline:pipeline0/GstKMSSink:kmssink0: Could not find a plane for crtc Additional debug info: gstkmssink.c(755): gst_kms_sink_start (): /GstPipeline:pipeline0/GstKMSSink:kmssink0 Setting pipeline to NULL .../ I tried using fbdevsink * $ gst-launch-1.0 v4l2src ! jpegdec ! fbdevsink device=/dev/fb0gst-launch-1.0 -v videotestsrc ! fbdevsink device=/dev/fb0* I used this command and it is showing only one frame buffer *pi@raspberrypi:~ $ ls -l /dev/fb* crw-rw---- 1 root video 29, 0 Sep 13 11:10 /dev/fb0* -- Sent from: http://gstreamer-devel.966125.n4.nabble.com/ _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Le ven. 13 sept. 2019 09 h 40, NikhilMG <[hidden email]> a écrit : In downloads I have .mkv .mp4 and .avi files. I am trying to drive video to The error says the that decoder does not support interlaced content.
_______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |