Pipeline blocking when part of an mp4mux is not receiving data

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Pipeline blocking when part of an mp4mux is not receiving data

Wayne Piekarski
Hi everyone,

I have a use case where I'm recording a V4L H264 camera along with a UDP
audio stream into an mp4mux file, and also displaying the video to the
screen.

gst-launch-1.0 -v \
mp4mux name=combo fragment-duration=1000 ! fakesink async=false \
\
v4l2src
device=/dev/v4l/by-path/pci-0000:00:14.0-usb-0:2:1.0-video-index1
do-timestamp=false ! video/x-h264, width=320, height=240, framerate=15/1
! h264parse ! tee name=tv0 ! queue ! h264parse ! avdec_h264 !
videoconvert ! autovideosink    tv0. ! queue ! combo.video_0 \
\
udpsrc port=5701 do-timestamp=false ! application/x-rtp,
clock-rate=44100, config=40002410adca00 ! rtpmp4adepay ! aacparse !
queue ! combo.audio_1

This works fine if there are UDP packets coming in. However, if the UDP
source has not sent any packets, then the video stops displaying on the
screen after about 50 frames of working fine.

However, if you send just one valid RTP packet to the port, then
everything starts working, and stays working, even though no new UDP
packets are arriving.

Is there anyway to tell the pipeline to not block like this? I tried
putting async=false everywhere as recommended to me in
https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/628 but
that is not working in this new scenario. I've tested this on the latest
gstreamer 1.16.0.

thanks!

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Pipeline blocking when part of an mp4mux is not receiving data

Nicolas Dufresne-5
Le jeudi 15 août 2019 à 13:15 -0700, Wayne Piekarski a écrit :

> Hi everyone,
>
> I have a use case where I'm recording a V4L H264 camera along with a UDP
> audio stream into an mp4mux file, and also displaying the video to the
> screen.
>
> gst-launch-1.0 -v \
> mp4mux name=combo fragment-duration=1000 ! fakesink async=false \
> \
> v4l2src
> device=/dev/v4l/by-path/pci-0000:00:14.0-usb-0:2:1.0-video-index1
> do-timestamp=false ! video/x-h264, width=320, height=240, framerate=15/1
> ! h264parse ! tee name=tv0 ! queue ! h264parse ! avdec_h264 !
> videoconvert ! autovideosink    tv0. ! queue ! combo.video_0 \
> \
> udpsrc port=5701 do-timestamp=false ! application/x-rtp,
> clock-rate=44100, config=40002410adca00 ! rtpmp4adepay ! aacparse !
> queue ! combo.audio_1
>
> This works fine if there are UDP packets coming in. However, if the UDP
> source has not sent any packets, then the video stops displaying on the
> screen after about 50 frames of working fine.
>
> However, if you send just one valid RTP packet to the port, then
> everything starts working, and stays working, even though no new UDP
> packets are arriving.
>
> Is there anyway to tell the pipeline to not block like this? I tried
> putting async=false everywhere as recommended to me in
> https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/628 but
> that is not working in this new scenario. I've tested this on the latest
> gstreamer 1.16.0.

Muxers using GstCollectPad facility have this issue. This could be
resolved by porting the respective muxer to GstAggregator base class.
From my knowlege, flvmux has been ported.

>
> thanks!
>
> _______________________________________________
> 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