Pipeline blocking when part of an mp4mux is not receiving data
Wayne Piekarski
wayne at tinmith.net
Thu Aug 15 20:15:42 UTC 2019
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!
More information about the gstreamer-devel
mailing list