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