gpt4 book ai didi

google-chrome - 处理chrome的rtp流需要哪些gstreamer管道设置?

转载 作者:行者123 更新时间:2023-12-04 15:11:31 33 4
gpt4 key购买 nike

我正在使用 webrtc 将网络摄像头从浏览器流式传输到以下设置工作的服务器:

  • 使用 Firefox 和修改后的 echo-test html from janus gateway我将网络摄像头流发送到 janus 服务器
  • janus 服务器正在使用修改后的 echotest 插件运行,该插件只是将 janus_videorecv_incoming_rtp() 中给定的 char *buf udp 流式传输到端口 5060,仅用于测试目的 ( pretty much like this )
  • 以下 gstreamer 命令行实际上会打开一个窗口,显示流媒体视频
  • GST_DEBUG=p*:5 gst-launch-1.0 -vvv udpsrc caps="application/x-rtp,media=video,clock-rate=90000,payload=96" port=5060 ! rtpvp8depay ! vp8dec ! autovideosink
    在修改后的 echo 测试 javascript 中,我从 sdp 答案中删除了几行,浏览器将收到如下所示:
    //jsep.sdp = jsep.sdp.replace(/a=rtcp-mux[^\s]*\s*/g, '');
    jsep.sdp = jsep.sdp.replace(/a=rtpmap[^\s]*\s*red[^\s]*\s*/g, '');
    jsep.sdp = jsep.sdp.replace(/a=rtpmap[^\s]*\s*ulpfec[^\s]*\s*/g, '');
    jsep.sdp = jsep.sdp.replace(/a=fmtp[^\r\n]*\r*\n*/g, '');
    jsep.sdp = jsep.sdp.replace(/a=rtcp-fb[^\s]*\s*goog-remb[^\s]*\s*/g, '');

    下面,可以找到适用于上述 gstreamer 命令的修改后的 firefox sdp 答案
    但是,以同样的方式,修改后的 sdp 答案在 chrome 的情况下不起作用
    我想过调整 gstreamer caps 中的有效载荷,但 32,33,96,100,120 不起作用

    所以问题是:在 chrome 的情况下需要什么才能让它工作?

    我还尝试在 janus 的 videoroom.c 中添加 fir/pli 请求为 suggested here

    chrome 情况下的 gstreamer 输出是,命令只是在最后一行等待:
    0:00:00.025791492 22279      0x1954b90 DEBUG               pipeline gstpipeline.c:219:gst_pipeline_init:<GstPipeline@0x1962180> set bus <bus2> on pipeline
    Setting pipeline to PAUSED ...
    0:00:00.029798090 22279 0x1954b90 DEBUG pipeline gstpipeline.c:282:reset_start_time:<pipeline0> reset start_time to 0
    Pipeline is live and does not need PREROLL ...
    /GstPipeline:pipeline0/GstUDPSrc:udpsrc0.GstPad:src: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, payload=(int)96, encoding-name=(string)VP8-DRAFT-IETF-01
    Setting pipeline to PLAYING ...
    0:00:00.030045034 22279 0x1954b90 DEBUG pipeline gstpipeline.c:377:gst_pipeline_change_state:<pipeline0> selecting clock and base_time
    0:00:00.030053523 22279 0x1954b90 DEBUG pipeline gstpipeline.c:398:gst_pipeline_change_state:<pipeline0> Need to update start_time
    0:00:00.030058181 22279 0x1954b90 DEBUG pipeline gstpipeline.c:403:gst_pipeline_change_state:<pipeline0> Need to update clock.
    /GstPipeline:pipeline0/GstRtpVP8Depay:rtpvp8depay0.GstPad:src: caps = video/x-vp8, framerate=(fraction)0/1
    /GstPipeline:pipeline0/GstVP8Dec:vp8dec0.GstPad:sink: caps = video/x-vp8, framerate=(fraction)0/1
    0:00:00.030111345 22279 0x1954b90 DEBUG pipeline gstpipeline.c:443:gst_pipeline_change_state:<pipeline0> start_time=0:00:00.000000000, now=33:52:04.529345754, base_time 33:52:04.529345754
    /GstPipeline:pipeline0/GstRtpVP8Depay:rtpvp8depay0.GstPad:sink: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, payload=(int)96, encoding-name=(string)VP8-DRAFT-IETF-01
    New clock: GstSystemClock

    Chrome 答案:
    v=0
    o=- 8913399741269897639 2 IN IP4 127.0.0.1
    s=-
    t=0 0
    a=group:BUNDLE audio video
    a=msid-semantic: WMS janus
    m=audio 1 RTP/SAVPF 111 103 104 0 8 106 105 13 126
    a=mid:audio
    c=IN IP4 192.168.0.1
    a=sendrecv
    a=rtcp-mux
    a=ice-ufrag:l0n9
    a=ice-pwd:r1elT1Ew8lP3TNlzwAHUsC
    a=ice-options:trickle
    a=fingerprint:sha-256 C5:5F:DA:7D:84:47:B1:BF:6B:55:16:62:48:31:3E:D3:F1:7B:25:89:92:4A:4B:4D:4D:D9:D5:AF:EA:D8:15:44
    a=setup:active
    a=connection:new
    a=rtpmap:111 opus/48000/2
    a=rtpmap:103 ISAC/16000
    a=rtpmap:104 ISAC/32000
    a=rtpmap:0 PCMU/8000
    a=rtpmap:8 PCMA/8000
    a=rtpmap:106 CN/32000
    a=rtpmap:105 CN/16000
    a=rtpmap:13 CN/8000
    a=rtpmap:126 telephone-event/8000
    a=maxptime:60
    a=ssrc:600390024 cname:janusaudio
    a=ssrc:600390024 msid:janus janusa0
    a=ssrc:600390024 mslabel:janus
    a=ssrc:600390024 label:janusa0
    a=candidate:1 1 udp 2013266431 192.168.0.1 45728 typ host
    m=video 1 RTP/SAVPF 100 116 117 96
    a=mid:video
    c=IN IP4 192.168.0.1
    a=sendrecv
    a=rtcp-mux
    a=ice-ufrag:l0n9
    a=ice-pwd:r1elT1Ew8lP3TNlzwAHUsC
    a=ice-options:trickle
    a=fingerprint:sha-256 C5:5F:DA:7D:84:47:B1:BF:6B:55:16:62:48:31:3E:D3:F1:7B:25:89:92:4A:4B:4D:4D:D9:D5:AF:EA:D8:15:44
    a=setup:active
    a=connection:new
    a=rtpmap:100 VP8/90000
    a=rtcp-fb:100 ccm fir
    a=rtcp-fb:100 nack
    a=rtcp-fb:100 nack pli
    a=rtpmap:96 rtx/90000
    a=ssrc-group:FID 3188003624 3419969288
    a=ssrc:677441062 cname:janusvideo
    a=ssrc:677441062 msid:janus janusv0
    a=ssrc:677441062 mslabel:janus
    a=ssrc:677441062 label:janusv0
    a=candidate:1 1 udp 2013266431 192.168.0.1 45728 typ host
    m=application 0 DTLS/SCTP 0
    c=IN IP4 192.168.0.1

    火狐回答:
    v=0
    o=Mozilla-SIPUA-32.0.3 11426 0 IN IP4 127.0.0.1
    s=SIP Call
    t=0 0
    a=group:BUNDLE audio video
    a=msid-semantic: WMS janus
    m=audio 1 RTP/SAVPF 109 0 8 101
    a=mid:audio
    c=IN IP4 192.168.0.1
    a=sendrecv
    a=rtcp-mux
    a=ice-ufrag:BRBU
    a=ice-pwd:2W4fGNr//HejhiC4UIabW6
    a=ice-options:trickle
    a=fingerprint:sha-256 C5:5F:DA:7D:84:47:B1:BF:6B:55:16:62:48:31:3E:D3:F1:7B:25:89:92:4A:4B:4D:4D:D9:D5:AF:EA:D8:15:44
    a=setup:active
    a=connection:new
    a=rtpmap:109 opus/48000/2
    a=ptime:20
    a=rtpmap:0 PCMU/8000
    a=rtpmap:8 PCMA/8000
    a=rtpmap:101 telephone-event/8000
    a=fmtp:101 0-15
    a=ssrc:3725983979 cname:janusaudio
    a=ssrc:3725983979 msid:janus janusa0
    a=ssrc:3725983979 mslabel:janus
    a=ssrc:3725983979 label:janusa0
    a=candidate:1 1 udp 2013266431 192.168.0.1 56574 typ host
    m=video 1 RTP/SAVPF 120
    a=mid:video
    c=IN IP4 192.168.0.1
    a=sendrecv
    a=rtcp-mux
    a=ice-ufrag:jZ5b
    a=ice-pwd:dQQej9UIpPl5zuXBQNg3Nz
    a=ice-options:trickle
    a=fingerprint:sha-256 C5:5F:DA:7D:84:47:B1:BF:6B:55:16:62:48:31:3E:D3:F1:7B:25:89:92:4A:4B:4D:4D:D9:D5:AF:EA:D8:15:44
    a=setup:active
    a=connection:new
    a=rtpmap:120 VP8/90000
    a=rtcp-fb:120 nack
    a=rtcp-fb:120 nack pli
    a=rtcp-fb:120 ccm fir
    a=ssrc:1425382999 cname:janusvideo
    a=ssrc:1425382999 msid:janus janusv0
    a=ssrc:1425382999 mslabel:janus
    a=ssrc:1425382999 label:janusv0
    a=candidate:2 1 udp 2013266431 192.168.0.1 39063 typ host
    m=application 0 DTLS/SCTP 0
    c=IN IP4 192.168.0.1

    更新:
    我修改了 sdp-answer,因此 firefox 和 chrome 几乎相同
    除了我只是从 sdp-offer 复制的“o=”和“s=”行 v=0
    o=- 7589782217972865757 2 IN IP4 127.0.0.1
    s=-
    t=0 0
    a=group:BUNDLE audio video
    a=msid-semantic: WMS janus
    m=audio 1 RTP/SAVPF 111
    a=mid:audio
    c=IN IP4 192.168.0.1
    a=sendrecv
    a=rtcp-mux
    a=ice-ufrag:g0kZ
    a=ice-pwd:d5oEody1jqIzDYUdf1fg6t
    a=ice-options:trickle
    a=fingerprint:sha-256 C5:5F:DA:7D:84:47:B1:BF:6B:55:16:62:48:31:3E:D3:F1:7B:25:89:92:4A:4B:4D:4D:D9:D5:AF:EA:D8:15:44
    a=setup:active
    a=connection:new
    a=rtpmap:111 opus/48000/2
    a=ssrc:1038736511 cname:janusaudio
    a=ssrc:1038736511 msid:janus janusa0
    a=ssrc:1038736511 mslabel:janus
    a=ssrc:1038736511 label:janusa0
    a=candidate:1 1 udp 2013266431 192.168.0.1 51232 typ host
    m=video 1 RTP/SAVPF 100
    a=mid:video
    c=IN IP4 192.168.0.1
    a=sendrecv
    a=rtcp-mux
    a=ice-ufrag:g0kZ
    a=ice-pwd:d5oEody1jqIzDYUdf1fg6t
    a=ice-options:trickle
    a=fingerprint:sha-256 C5:5F:DA:7D:84:47:B1:BF:6B:55:16:62:48:31:3E:D3:F1:7B:25:89:92:4A:4B:4D:4D:D9:D5:AF:EA:D8:15:44
    a=setup:active
    a=connection:new
    a=rtpmap:100 VP8/90000
    a=rtcp-fb:100 ccm fir
    a=rtcp-fb:100 nack
    a=rtcp-fb:100 nack pli
    a=rtcp-fb:100 goog-remb
    a=ssrc:2455978689 cname:janusvideo
    a=ssrc:2455978689 msid:janus janusv0
    a=ssrc:2455978689 mslabel:janus
    a=ssrc:2455978689 label:janusv0
    a=candidate:1 1 udp 2013266431 192.168.0.1 51232 typ host
    m=application 0 DTLS/SCTP 0
    c=IN IP4 192.168.0.1

    最佳答案

    WebRTC 使用 DTLS-SRTP 强制加密(Chrome 仍然支持非标准和显式的 MUST-NOT-IMPLMENT SDES 键控)。

    你不能只向 webrtc 提供 RTP 流;它必须是使用初始 DTLS 连接加密的 DTLS-SRTP 流。

    人们已经将 node.js 连接到 webrtc 浏览器,所以我想你需要的所有机器都在那里。

    关于google-chrome - 处理chrome的rtp流需要哪些gstreamer管道设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26064719/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com