Packing arbitrary audio and video into a container (non-synced)
colmekik
iank at colmek.com
Fri Aug 21 18:02:06 UTC 2020
I’m working on a live streaming (audio & video) project and am exploring what
is possible with gstreamer. For this application low latency is important
but tight synchronization of the streams is not. The video stream is coming
from a web cam that encodes directly to h264 so all I have to do is parse
and payload the video. The audio performs best with pcm encoding and
payloading. I have separate working pipelines that perform well. I have a
working rtsp server that combines the streams and delivers them quite
nicely. However, when I try to mux the two streams together I quickly get
dropped packets and wretched performance. Is there a way to arm bar the two
streams into a container and ignore or turn off the syncing? For a variety
of reasons using a single container vs an sdp file is preferable in this
case. As far as I can tell this isn’t very wise, is antithetical to the
purpose of most plugins, but is it possible?
Video pipeline:
gst-launch-1.0 v4l2src device=/dev/videoh264 ! "video/x-h264" ! queue !
h264parse ! rtph264pay ! udpsink host=IP_ADD port=PRT
Audio pipeline:
gst-launch-1.0 alsasrc device="hw:2,0" provide-clock=true
actual-buffer-time=20000 do-timestamp=true buffer-time=20000 ! alawenc !
rtppcmapay max-ptime=20000000 ! udpsink host=IP_ADD port=PRT
A valid but ugly, horrible pipeline:
gst-launch-1.0 alsasrc device="hw:2,0" provide-clock=true
actual-buffer-time=20000 do-timestamp=true buffer-time=20000 ! queue !
alawenc ! mux. v4l2src device=/dev/videoh264 ! "video/x-h264" ! queue !
h264parse ! matroskamux name=mux ! udpsink host=IP_ADD port=PRT
--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
More information about the gstreamer-devel
mailing list