No data passes through my mp4mux

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

No data passes through my mp4mux

Katerina Voulgary-2

Hello everyone,

I want to mux one video stream (h264) and one audio stream (opus). My pipelines (not the best) that produce the streams are from an rpi0:

gst-launch-1.0 -v v4l2src device=/dev/video1 ! video/x-h264,width=1440,height=1080,framerate=15/1 ! h264parse ! rtph264pay config-interval=1 pt=96 ! udpsink host=192.168.1.2 port=8004 sync=false async=false

gst-launch-1.0 -v alsasrc ! audio/x-raw, channels=2, rate=8000, depth=16, format="S16LE" ! queue ! opusenc audio-type=voice bitrate=12000 bandwidth=narrowband frame-size=60 bitrate-type=vbr ! audio/x-opus, rate=8000, channels=2, channel-mapping-family=0 ! queue ! rtpopuspay pt=127 ! queue ! udpsink host=192.168.1.2 port=8002 sync=false async=false 


In the receiving end my pipeline doesn't seem to roll (no Redistribute latency... message) and it creates a 0 byte file.:

gst-launch-1.0 udpsrc port=8004 ! application/x-rtp,encoding-name=H264,payload=96 ! rtpjitterbuffer ! rtph264depay ! queue ! mp4mux name=mux ! filesink location="video.mp4" udpsrc port=8002 caps="application/x-rtp,encodingcoding-params=2,media=audio, clock-rate=48000,encoding-name="OPUS",payload=127" ! queue ! rtpopusdepay ! mux.


Data doesn't seem to pass through mp4mux. This pipeline produces no significant output:

gst-launch-1.0 -v udpsrc port=8004 caps="application/x-rtp,encoding-name=H264,payload=96" ! rtpjitterbuffer ! rtph264depay ! queue ! mp4mux name=mux ! fakesink dump=true


Setting pipeline to PLAYING ...
/GstPipeline:pipeline0/GstUDPSrc:udpsrc0.GstPad:src: caps = application/x-rtp, encoding-name=(string)H264, payload=(int)96, media=(string)video, clock-rate=(int)90000
New clock: GstSystemClock
/GstPipeline:pipeline0/GstRtpJitterBuffer:rtpjitterbuffer0.GstPad:sink: caps = application/x-rtp, encoding-name=(string)H264, payload=(int)96, media=(string)video, clock-rate=(int)90000
/GstPipeline:pipeline0/GstRtpJitterBuffer:rtpjitterbuffer0.GstPad:src: caps = application/x-rtp, encoding-name=(string)H264, payload=(int)96, media=(string)video, clock-rate=(int)90000
/GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0.GstPad:sink: caps = application/x-rtp, encoding-name=(string)H264, payload=(int)96, media=(string)video, clock-rate=(int)90000
/GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0.GstPad:src: caps = video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)01640028ffe1001027640028ac2b402d0113f2c03c489a8001000528ee025cb0, level=(string)4, profile=(string)high


While this pipeline gives the continuous hex output:

gst-launch-1.0 -v udpsrc port=8004 caps="application/x-rtp,encoding-name=H264,payload=96" ! rtpjitterbuffer ! rtph264depay ! queue ! fakesink dump=true


Also, this pipeline for audio with oggmux and its output:

gst-launch-1.0 -v  udpsrc port=8002 caps="application/x-rtp,encoding-params=2,media=audio, clock-rate=48000,encoding-name="OPUS",payload=127" ! queue ! rtpopusdepay ! oggmux ! fakesink dump=true

Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstUDPSrc:udpsrc0.GstPad:src: caps = application/x-rtp, encoding-params=(int)2, media=(string)audio, clock-rate=(int)48000, encoding-name=(string)OPUS, payload=(int)127
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = application/x-rtp, encoding-params=(int)2, media=(string)audio, clock-rate=(int)48000, encoding-name=(string)OPUS, payload=(int)127
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = application/x-rtp, encoding-params=(int)2, media=(string)audio, clock-rate=(int)48000, encoding-name=(string)OPUS, payload=(int)127
/GstPipeline:pipeline0/GstRTPOpusDepay:rtpopusdepay0.GstPad:src: caps = audio/x-opus, channel-mapping-family=(int)0
/GstPipeline:pipeline0/GstOggMux:oggmux0.GstPad:audio_1941964111: caps = audio/x-opus, channel-mapping-family=(int)0
/GstPipeline:pipeline0/GstRTPOpusDepay:rtpopusdepay0.GstPad:sink: caps = application/x-rtp, encoding-params=(int)2, media=(string)audio, clock-rate=(int)48000, encoding-name=(string)OPUS, payload=(int)127
/GstPipeline:pipeline0/GstOggMux:oggmux0.GstPad:src: caps = application/ogg, streamheader=(buffer)< 4f676753000200000000000000004f05c07300000000fe1a62aa014918e074ce494cf6782d85bdf3d7b01f9be4e5e7e2ea47bb64d2368aaf89e435872ebca27f5270821dffa9adb6c01ae98b63c9503a2a6ef1dea84e52d21f6f36c9e342eb52c5d63107b0 >
/GstPipeline:pipeline0/GstFakeSink:fakesink0.GstPad:sink: caps = application/ogg, streamheader=(buffer)< 4f676753000200000000000000004f05c07300000000fe1a62aa014918e074ce494cf6782d85bdf3d7b01f9be4e5e7e2ea47bb64d2368aaf89e435872ebca27f5270821dffa9adb6c01ae98b63c9503a2a6ef1dea84e52d21f6f36c9e342eb52c5d63107b0 >
00000000 (0x7fd74400a090): 4f 67 67 53 00 02 00 00 00 00 00 00 00 00 4f 05  OggS..........O.
00000010 (0x7fd74400a0a0): c0 73 00 00 00 00 fe 1a 62 aa 01 49 18 e0 74 ce  .s......b..I..t.
00000020 (0x7fd74400a0b0): 49 4c f6 78 2d 85 bd f3 d7 b0 1f 9b e4 e5 e7 e2  IL.x-...........
00000030 (0x7fd74400a0c0): ea 47 bb 64 d2 36 8a af 89 e4 35 87 2e bc a2 7f  .G.d.6....5.....
00000040 (0x7fd74400a0d0): 52 70 82 1d ff a9 ad b6 c0 1a e9 8b 63 c9 50 3a  Rp..........c.P:
00000050 (0x7fd74400a0e0): 2a 6e f1 de a8 4e 52 d2 1f 6f 36 c9 e3 42 eb 52  *n...NR..o6..B.R
00000060 (0x7fd74400a0f0): c5 d6 31 07 b0                                   ..1..

But I have succefully oggmuxed video and beep with this pipeline, but of sorter duration than I expected:

gst-launch-1.0 udpsrc port=8004 ! application/x-rtp,encoding-name=H264,payload=96 ! rtpjitterbuffer ! rtph264depay ! queue ! decodebin ! videoconvert ! queue ! videorate ! video/x-raw,framerate=15/1 ! queue ! theoraenc ! queue ! oggmux name=mux ! filesink location="video.ogg" udpsrc port=8002 caps="application/x-rtp,encoding-params=2,media=audio, clock-rate=48000,encoding-name="OPUS",payload=127" ! queue ! rtpopusdepay ! opusdec ! audioconvert ! audioresample ! opusenc ! mux.

Also, decoding and re-encoding produces a valid, playable file:

gst-launch-1.0 -v  udpsrc port=8002 caps="application/x-rtp,encoding-params=2,media=audio, clock-rate=48000,encoding-name="OPUS",payload=127" ! queue ! rtpopusdepay ! opusdec ! audioconvert ! audioresample ! opusenc ! oggmux ! filesink location=audio.ogg

So, what is wrong with these pipelines and I can't write to .mp4?

I use Gstreamer 1.16.2, Ubuntu 20.04.1 LTS


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel