gst-launch webrtcbin create offer with multiple rtpmap for video/audio

91 views Asked by At

How to generate multiple rtpmap for video/audio capabilities on SDP offer for peer via gstreamer webrtcbin (gst_parse_launch(2) pipeline)? I mean somehow describe in offer which codecs supported by initiator.

I have tried to concatenate resources via "tee", actually on offer. I've got multiple video resources, also the answer looks like good for me, but gst-plugins-bad parser for answer had rejected it with error: WARN webrtcbin gstwebrtcbin.c:5857:_set_description_task:<sendrecv> returning error: media 1 is missing or contains an empty ice-ufrag attribute

Actual pipeline:

"webrtcbin name=sendrecv "
                            "v4l2src device=/dev/video1 io-mode=dmabuf ! videoflip method=rotate-180 "
                            "! video/x-raw,framerate=30/1,width=640,height=480 ! videoscale ! videoconvert "
                            "! tee name=vEncTee "
                            "vEncTee. ! queue ! openh264enc usage-type=camera enable-frame-skip=0 multi-thread=4 qos=1 enable-denoise=1 slice-mode=auto complexity=high "
                            "! video/x-h264,level=(string)3.2,profile=baseline ! h264parse ! rtph264pay ! queue ! sendrecv. "
                            "vEncTee. ! queue ! vp8enc deadline=1 end-usage=vbr cpu-used=4 threads=4 target-bitrate=0 ! rtpvp8pay ! queue ! sendrecv. "
                            "alsasrc device=\"hw:0\\,0\" "
                            //"! audio/x-raw,format=S16LE,rate=8000 "
                            "! audioconvert ! audioresample ! mulawenc ! rtppcmupay ! "
                            "queue ! sendrecv. "

Actual generated offer:

    v=0
    o=- 3421118797864115191 0 IN IP4 0.0.0.0
    s=-
    t=0 0
    a=ice-options:trickle
    m=video 9 UDP/TLS/RTP/SAVPF 96
    c=IN IP4 0.0.0.0
    a=setup:actpass
    a=ice-ufrag:XXXXX
    a=ice-pwd:XXXXX
    a=rtcp-mux
    a=rtcp-rsize
    a=sendrecv
    a=rtpmap:96 H264/90000
    a=rtcp-fb:96 nack pli
    a=rtcp-fb:96 transport-cc
    a=framerate:30
    a=fmtp:96 packetization-mode=1;sprop-parameter-sets=Z0LAIIyNQOBKyywDwiEagA==,aM48gA==;profile-level-id=42c020;level-asymmetry-allowed=1
    a=ssrc:XXXXX msid:userXXXXX@host-XXXXX webrtctransceiver0
    a=ssrc:XXXXX cname:userXXXXX@host-XXXXX
    a=mid:video0
    a=fingerprint:sha-256 XXXXX
    a=rtcp-mux-only
    m=video 9 UDP/TLS/RTP/SAVPF 96
    c=IN IP4 0.0.0.0
    a=setup:actpass
    a=ice-ufrag:XXXXX
    a=ice-pwd:XXXXX
    a=rtcp-mux
    a=rtcp-rsize
    a=sendrecv
    a=rtpmap:96 VP8/90000
    a=rtcp-fb:96 nack pli
    a=rtcp-fb:96 transport-cc
    a=framerate:30
    a=ssrc:XXXXX msid:userXXXXX@host-XXXXX webrtctransceiver1
    a=ssrc:XXXXX cname:userXXXXX@host-XXXXX
    a=mid:video1
    a=fingerprint:sha-256 XXXXX
    a=rtcp-mux-only
    m=audio 9 UDP/TLS/RTP/SAVPF 0
    c=IN IP4 0.0.0.0
    a=setup:actpass
    a=ice-ufrag:XXXXX
    a=ice-pwd:XXXXX
    a=rtcp-mux
    a=rtcp-rsize
    a=sendrecv
    a=rtpmap:0 PCMU/8000
    a=rtcp-fb:0 transport-cc
    a=ssrc:XXXXX msid:userXXXXX@host-XXXXX webrtctransceiver2
    a=ssrc:XXXXX cname:userXXXXX@host-XXXXX
    a=mid:audio2
    a=fingerprint:sha-256 XXXXX
    a=rtcp-mux-only

Actual answer:

    v=0
    o=- 6557650022944818593 2 IN IP4 127.0.0.1
    s=-
    t=0 0
    a=msid-semantic: WMS com.XXXXX
    m=video 9 UDP/TLS/RTP/SAVPF 96
    c=IN IP4 0.0.0.0
    a=rtcp:9 IN IP4 0.0.0.0
    a=ice-ufrag:5o+B
    a=ice-pwd:XXXXX
    a=ice-options:trickle renomination
    a=fingerprint:sha-256 XXXXX
    a=setup:active
    a=mid:video0
    a=recvonly
    a=rtcp-mux
    a=rtcp-rsize
    a=rtpmap:96 H264/90000
    a=rtcp-fb:96 transport-cc
    a=rtcp-fb:96 nack pli
    a=fmtp:96 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
    m=video 0 UDP/TLS/RTP/SAVPF 96
    c=IN IP4 0.0.0.0
    a=rtcp:9 IN IP4 0.0.0.0
    a=mid:video1
    **a=inactive**
    a=rtcp-mux
    a=rtcp-rsize
    a=rtpmap:96 VP8/90000
    a=rtcp-fb:96 transport-cc
    a=rtcp-fb:96 nack pli
    m=audio 9 UDP/TLS/RTP/SAVPF 0
    c=IN IP4 0.0.0.0
    a=rtcp:9 IN IP4 0.0.0.0
    a=ice-ufrag:Q3TK
    a=ice-pwd:XXXXX
    a=ice-options:trickle renomination
    a=fingerprint:sha-256 XXXXX
    a=setup:active
    a=mid:audio2
    a=sendrecv
    a=rtcp-mux
    a=rtpmap:0 PCMU/8000
    a=ssrc:XXXXX cname:XXXXX
    a=ssrc:XXXXX msid:com.XXXXX
    a=ssrc:XXXXX mslabel:com.XXXXX
    a=ssrc:XXXXX label:com.XXXXX

I can see the reason of bad parsing result, that is no ice-ufrag in video1 media resource and on answer. I can see some a=inactive on video1 resource. I think, that is regarding bad offer generation. I think my way is wrong, can someone help me on this question, how to generate offer correctly?

0

There are 0 answers