• 【zlm】 webrtc源码讲解


    目录

    前端WEB

    服务器收到请求

    服务端的处理

     播放

    拉流

    transport-cc goog-remb (webrtc中的两种码率算法)

    push play的关键回调

    日志记录

    主要核心主体的创建

    RtspMediaSourceImp的创建

    影响到何时生成recorder的代码

     Mediasource之主要解复合MultiMediaSourceMuxer

     Mediasource之主要复合

    录相

    trackready

    参考文章


    前端WEB

    服务器收到请求

    POST /index/api/webrtc?app=live&stream=test&type=play HTTP/1.1
     

    1. HttpSession::onRecvHeader
    2. HttpSession::Handle_Req_POST
    3. HttpSession::Handle_Req_POST
    4. if (totalContentLen > 0 && (size_t)totalContentLen < maxReqSize )
    5. _contentCallBack = [this,parserCopy](const char *data,size_t len) {
    6. //恢复http头
    7. _parser = parserCopy;
    8. //设置content
    9. _parser.setContent(string(data,len));
    10. //触发http事件,emitHttpEvent内部会选择是否关闭连接
    11. emitHttpEvent(true);
    12. //清空数据,节省内存
    13. _parser.Clear();
    14. //content已经接收完毕
    15. return false;
    16. };
    17. HttpSession::onRecvContent(const char *data,size_t len)
    18. if (_contentCallBack)
    19. _contentCallBack(data,len);
    20. HttpSession::emitHttpEvent
    21. // 广播HTTP事件
    22. NoticeCenter::Instance().emitEvent(Broadcast::kBroadcastHttpRequest,_parser,invoker,
    23. consumed,static_cast<SockInfo &>(*this));

    服务端的处理

    1. // 主函数中调用web接口安装函数
    2. installWebApi
    3. addHttpListener();
    4. api_regist("/index/api/webrtc",[](API_ARGS_STRING_ASYNC){
    5. auto type = allArgs["type"];
    6. auto offer = allArgs.getArgs();
    7. WebRtcPluginManager::Instance().getAnswerSdp(*(static_cast<Session *>(&sender)), type,
    8. WebRtcArgsImp(allArgs, sender.getIdentifier()),
    9. [invoker, val, offer, headerOut](const WebRtcInterface &exchanger) mutable {
    10. headerOut["Content-Type"] = HttpFileManager::getContentType(".json");
    11. headerOut["Access-Control-Allow-Origin"] = "*";
    12. val["sdp"] = const_cast<WebRtcInterface &>(exchanger).getAnswerSdp(offer);
    13. val["id"] = exchanger.getIdentifier();
    14. val["type"] = "answer";
    15. invoker(200, headerOut, val.toStyledString());
    16. });
    17. });
    18. addHttpListener
    19. //注册监听kBroadcastHttpRequest事件
    20. NoticeCenter::Instance().addListener(&web_api_tag, Broadcast::kBroadcastHttpRequest,
    21. [](BroadcastHttpRequestArgs) {
    22. auto it = s_map_api.find(parser.Url());
    23. it->second(parser, invoker, sender);
    24. }

    根据url找到对应的事件回调,最终会调用WebRtcPluginManager::Instance().getAnswerSdp。

    1. WebRtcPluginManager::getAnswerSdp
    2. auto it = _map_creator.find(type);
    3. it->second(sender, args, cb);
    4. // 静态注册插件
    5. WebRtcPluginManager::Instance().registerPlugin("play", play_plugin);
    6. void play_plugin(Session &sender, const WebRtcArgs &args, const WebRtcPluginManager::onCreateRtc &cb)
    7. // 使用rtsp媒体源,两者均是传输的rtp流
    8. info._schema = RTSP_SCHEMA;
    9. MediaSource::findAsync(info, session_ptr, [=](const MediaSource::Ptr &src_in) mutable {
    10. auto src = dynamic_pointer_cast<RtspMediaSource>(src_in);
    11. // 还原成rtc,目的是为了hook时识别哪种播放协议
    12. info._schema = RTC_SCHEMA;
    13. auto rtc = WebRtcPlayer::create(EventPollerPool::Instance().getPoller(), src, info, preferred_tcp);
    14. cb(*rtc); // 发送answer SDP给web端
    15. });

     播放

    拉流

    stun , dtls  先握手把对称密钥通过非对称加密方式 传输 过去后,之后的数据都通过这个对称密钥进行加密。 srtp 加密 rtp . .
    Web端首先根据协商的IP和端口,服务端webrtc的端口是8000,发送STUN命令再次获取STUN地址。
    首次连接,服务端会创建对应的session。

    WebRtcSession::WebRtcSession(const Socket::Ptr &sock) : Session(sock)
      socklen_t addr_len = sizeof(_peer_addr);
      getpeername(sock->rawFD(), (struct sockaddr *)&_peer_addr, &addr_len);
      

    WebRtcSession::onRecv_l(const char *data, size_t len)
      // 首次进入,根据username获取之前创建的transport.
      auto user_name = getUserName(data, len); // 此处的username就是之前设置的transport标识
      auto transport = WebRtcTransportManager::Instance().getItem(user_name);
      transport->setSession(shared_from_this());
      _transport = std::move(transport);
      _transport->inputSockData((char *)data, len, (struct sockaddr *)&_peer_addr);
      
      
    WebRtcTransport::inputSockData
      // 处理STUN消息
      if (RTC::StunPacket::IsStun((const uint8_t *)buf, len))
        std::unique_ptr packet(RTC::StunPacket::Parse((const uint8_t *)buf, len));
        _ice_server->ProcessStunPacket(packet.get(), tuple);
        return;
        
      // 处理    
      if (is_dtls(buf))
        _dtls_transport->ProcessDtlsData((uint8_t *)buf, len);
        return;
        
      // 由于是拉流,不存在rtp数据,但是有rtcp数据
      if (is_rtcp(buf))
        if (_srtp_session_recv->DecryptSrtcp((uint8_t *)buf, &len))
          onRtcp(buf, len);


    DTLS交互完成后,接下来启动媒体传输

    WebRtcTransport::OnDtlsTransportConnected
      onStartWebRTC();


    WebRtcPlayer::onStartWebRTC
      WebRtcTransportImp::onStartWebRTC();
      _reader = _play_src->getRing()->attach(getPoller(), true);
      weak_ptr weak_self = static_pointer_cast(shared_from_this());
      weak_ptr weak_session = getSession();
      _reader->setReadCB([weak_self](const RtspMediaSource::RingDataType &pkt) {
        size_t i = 0;
        pkt->for_each([&](const RtpPacket::Ptr &rtp) {
          strong_self->onSendRtp(rtp, ++i == pkt->size());
        });
      });
     

    transport-cc goog-remb (webrtc中的两种码率算法)

    "Transport-CC" 是 WebRTC(Web实时通信)中的一种传输拥塞控制机制,用于管理实时媒体(音频和视频)的传输,以适应网络状况,确保通信的连续性。它有助于根据网络条件调整媒体的比特率,以确保在可用带宽的情况下提供流畅且不中断的通信体验。它用于避免过载网络,以提供最佳可能的质量。

    "Goog-REMB"(Google Receiver Estimated Maximum Bitrate)是由Google开发的一种扩展,用于实时传输控制协议(RTCP)。它在WebRTC中用于估算接收方对特定媒体流能够处理的最大比特率。然后,这些信息会传达给发送方,使其能够调整正在传输的媒体的比特率,以匹配接收方的容量,从而提高通信的整体质量。

    这些术语与WebRTC的技术相关,用于优化互联网上的实时通信的质量和性能

    push play的关键回调

    play与上面类似 

    下面是rtspmediasourceImp的继承关系

    日志记录

    push

    1. request:
    2. POST /index/api/webrtc?app=2fbe2a926db241b483ab4ea79950fb0c&stream=dxw3Stream&type=push
    3. # header:
    4. Accept-Encoding : gzip
    5. Connection : Keep-Alive
    6. Content-Length : 3843
    7. Content-Type : application/json;charset=utf-8
    8. contentType : application/json;charset=UTF-8
    9. Host : 10.60.100.196:6080
    10. User-Agent : okhttp/4.10.0
    11. # content:
    12. v=0
    13. o=- 8012211977922866648 2 IN IP4 127.0.0.1
    14. s=-
    15. t=0 0
    16. a=group:BUNDLE 0 1
    17. a=msid-semantic: WMS
    18. m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 102 0 8 106 105 13 110 112 113 126
    19. c=IN IP4 0.0.0.0
    20. a=rtcp:9 IN IP4 0.0.0.0
    21. a=ice-ufrag:w968
    22. a=ice-pwd:JlvPX+PRmgl9rqj80WFp/SMs
    23. a=ice-options:trickle renomination
    24. a=fingerprint:sha-256 B9:B2:FF:EB:8E:68:30:F8:4F:4C:3B:0A:15:9B:29:98:FE:A5:04:E7:DD:9F:D3:AE:AA:A4:6B:74:40:04:FB:59
    25. a=setup:actpass
    26. a=mid:0
    27. a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
    28. a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
    29. a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
    30. a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
    31. a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
    32. a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
    33. a=sendonly
    34. a=msid:- 85bd69e4-7383-49ff-a10e-817be8850943
    35. a=rtcp-mux
    36. a=rtpmap:111 opus/48000/2
    37. a=rtcp-fb:111 transport-cc
    38. a=fmtp:111 minptime=10;useinbandfec=1
    39. a=rtpmap:103 ISAC/16000
    40. a=rtpmap:104 ISAC/32000
    41. a=rtpmap:9 G722/8000
    42. a=rtpmap:102 ILBC/8000
    43. a=rtpmap:0 PCMU/8000
    44. a=rtpmap:8 PCMA/8000
    45. a=rtpmap:106 CN/32000
    46. a=rtpmap:105 CN/16000
    47. a=rtpmap:13 CN/8000
    48. a=rtpmap:110 telephone-event/48000
    49. a=rtpmap:112 telephone-event/32000
    50. a=rtpmap:113 telephone-event/16000
    51. a=rtpmap:126 telephone-event/8000
    52. a=ssrc:2056661234 cname:kIdPjq4CEzIEdhBD
    53. a=ssrc:2056661234 msid:- 85bd69e4-7383-49ff-a10e-817be8850943
    54. a=ssrc:2056661234 mslabel:-
    55. a=ssrc:2056661234 label:85bd69e4-7383-49ff-a10e-817be8850943
    56. m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 127 124 125
    57. c=IN IP4 0.0.0.0
    58. a=rtcp:9 IN IP4 0.0.0.0
    59. a=ice-ufrag:w968
    60. a=ice-pwd:JlvPX+PRmgl9rqj80WFp/SMs
    61. a=ice-options:trickle renomination
    62. a=fingerprint:sha-256 B9:B2:FF:EB:8E:68:30:F8:4F:4C:3B:0A:15:9B:29:98:FE:A5:04:E7:DD:9F:D3:AE:AA:A4:6B:74:40:04:FB:59
    63. a=setup:actpass
    64. a=mid:1
    65. a=extmap:14 urn:ietf:params:rtp-hdrext:toffset
    66. a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
    67. a=extmap:13 urn:3gpp:video-orientation
    68. a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
    69. a=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
    70. a=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
    71. a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
    72. a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space
    73. a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
    74. a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
    75. a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
    76. a=sendonly
    77. a=msid:- c0476ef1-6022-4371-adc6-dba849de428a
    78. a=rtcp-mux
    79. a=rtcp-rsize
    80. a=rtpmap:96 VP8/90000
    81. a=rtcp-fb:96 goog-remb
    82. a=rtcp-fb:96 transport-cc
    83. a=rtcp-fb:96 ccm fir
    84. a=rtcp-fb:96 nack
    85. a=rtcp-fb:96 nack pli
    86. a=rtpmap:97 rtx/90000
    87. a=fmtp:97 apt=96
    88. a=rtpmap:98 VP9/90000
    89. a=rtcp-fb:98 goog-remb
    90. a=rtcp-fb:98 transport-cc
    91. a=rtcp-fb:98 ccm fir
    92. a=rtcp-fb:98 nack
    93. a=rtcp-fb:98 nack pli
    94. a=rtpmap:99 rtx/90000
    95. a=fmtp:99 apt=98
    96. a=rtpmap:100 H264/90000
    97. a=rtcp-fb:100 goog-remb
    98. a=rtcp-fb:100 transport-cc
    99. a=rtcp-fb:100 ccm fir
    100. a=rtcp-fb:100 nack
    101. a=rtcp-fb:100 nack pli
    102. a=fmtp:100 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
    103. a=rtpmap:101 rtx/90000
    104. a=fmtp:101 apt=100
    105. a=rtpmap:127 red/90000
    106. a=rtpmap:124 rtx/90000
    107. a=fmtp:124 apt=127
    108. a=rtpmap:125 ulpfec/90000
    109. a=ssrc-group:FID 3955139128 3307115671
    110. a=ssrc:3955139128 cname:kIdPjq4CEzIEdhBD
    111. a=ssrc:3955139128 msid:- c0476ef1-6022-4371-adc6-dba849de428a
    112. a=ssrc:3955139128 mslabel:-
    113. a=ssrc:3955139128 label:c0476ef1-6022-4371-adc6-dba849de428a
    114. a=ssrc:3307115671 cname:kIdPjq4CEzIEdhBD
    115. a=ssrc:3307115671 msid:- c0476ef1-6022-4371-adc6-dba849de428a
    116. a=ssrc:3307115671 mslabel:-
    117. a=ssrc:3307115671 label:c0476ef1-6022-4371-adc6-dba849de428a
    118. # response:
    119. {
    120. "code" : 0,
    121. "id" : "wKgSAx9AH0A=_44",
    122. "sdp" : "v=0\r\no=- 8012211977922866648 2 IN IP4 10.60.100.196\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0 1\r\na=msid-semantic: WMS\r\na=ice-lite\r\nm=audio 8000 UDP/TLS/RTP/SAVPF 0\r\nc=IN IP4 10.60.100.196\r\na=rtcp:8000 IN IP4 10.60.100.196\r\na=ice-ufrag:wKgSAx9AH0A=_44\r\na=ice-pwd:Yn7cp275AyIjOGhJc2wBWC8E\r\na=ice-options:trickle\r\na=fingerprint:sha-256 5D:43:0F:2C:BD:82:BB:C5:B4:77:42:D3:8C:2B:D5:1A:32:59:39:1D:78:7A:BB:88:E2:EF:2A:60:37:AD:6E:A3\r\na=setup:passive\r\na=mid:0\r\na=ice-lite\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=recvonly\r\na=rtcp-mux\r\na=rtpmap:0 PCMU/8000/1\r\na=candidate:udpcandidate 1 udp 110 10.60.100.196 8000 typ host\r\na=candidate:tcpcandidate 1 tcp 105 10.60.100.196 8000 typ host tcptype passive\r\nm=video 8000 UDP/TLS/RTP/SAVPF 100 101\r\nc=IN IP4 10.60.100.196\r\na=rtcp:8000 IN IP4 10.60.100.196\r\na=ice-ufrag:wKgSAx9AH0A=_44\r\na=ice-pwd:Yn7cp275AyIjOGhJc2wBWC8E\r\na=ice-options:trickle\r\na=fingerprint:sha-256 5D:43:0F:2C:BD:82:BB:C5:B4:77:42:D3:8C:2B:D5:1A:32:59:39:1D:78:7A:BB:88:E2:EF:2A:60:37:AD:6E:A3\r\na=setup:passive\r\na=mid:1\r\na=ice-lite\r\na=extmap:14 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=recvonly\r\na=rtcp-mux\r\na=rtpmap:100 H264/90000\r\na=rtcp-fb:100 ccm fir\r\na=rtcp-fb:100 goog-remb\r\na=rtcp-fb:100 nack\r\na=rtcp-fb:100 nack pli\r\na=rtcp-fb:100 transport-cc\r\na=fmtp:100 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\na=rtpmap:101 rtx/90000\r\na=fmtp:101 apt=100\r\na=candidate:udpcandidate 1 udp 110 10.60.100.196 8000 typ host\r\na=candidate:tcpcandidate 1 tcp 105 10.60.100.196 8000 typ host tcptype passive\r\n",
    123. "type" : "answer"
    124. }
    125. 2024-03-21 16:02:24.338 W [MediaServer.exe] [23784-event poller 11] EventPoller.cpp:209 async_l | take time: 16ms, thread may be overloaded
    126. 2024-03-21 16:02:24.354 W [MediaServer.exe] [23784-event poller 3] EventPoller.cpp:209 async_l | take time: 16ms, thread may be overloaded
    127. 2024-03-21 16:02:24.364 W [MediaServer.exe] [23784-event poller 3] WebHook.cpp:194 operator () | hook https://10.60.100.196:18080/index/hook/on_stream_not_found 16ms,failed[auth failed]: code:404 msg:"\u8d44\u6e90\u672a\u627e\u5230":{
    128. "app" : "2fbe2a926db241b483ab4ea79950fb0c",
    129. "hook_index" : 2020,
    130. "id" : "221-704",
    131. "ip" : "10.60.100.196",
    132. "mediaServerId" : "wvpmediaserver001",
    133. "params" : "app=2fbe2a926db241b483ab4ea79950fb0c&stream=dxw3Stream&type=play&session=221-704",
    134. "port" : 61102,
    135. "schema" : "rtsp",
    136. "stream" : "dxw3Stream",
    137. "vhost" : "__defaultVhost__"
    138. }
    139. 2024-03-21 16:02:24.367 I [MediaServer.exe] [23784-event poller 11] WebRtcSession.cpp:85 onRecv_l | 222-1452(10.62.14.104:45023)
    140. 2024-03-21 16:02:24.367 D [MediaServer.exe] [23784-event poller 11] IceServer.cpp:340 HandleTuple | transition from state 'new' to 'connected'
    141. 2024-03-21 16:02:24.367 I [MediaServer.exe] [23784-event poller 11] WebRtcTransport.cpp:170 OnIceServerSelectedTuple | wKgSAx9AH0A=_44 select tuple udp 10.62.14.104:45023
    142. 2024-03-21 16:02:24.367 I [MediaServer.exe] [23784-event poller 11] WebRtcTransport.cpp:176 OnIceServerConnected | wKgSAx9AH0A=_44
    143. 2024-03-21 16:02:24.378 E [MediaServer.exe] [23784-event poller 11] DtlsTransport.cpp:744 ProcessDtlsData | cannot process data while not running
    144. 2024-03-21 16:02:24.411 D [MediaServer.exe] [23784-event poller 11] IceServer.cpp:429 HandleTuple | transition from state 'connected' to 'completed'
    145. 2024-03-21 16:02:24.411 I [MediaServer.exe] [23784-event poller 11] WebRtcTransport.cpp:180 OnIceServerCompleted | wKgSAx9AH0A=_44
    146. 2024-03-21 16:02:24.411 I [MediaServer.exe] [23784-event poller 11] WebRtcTransport.cpp:232 OnDtlsTransportConnecting | wKgSAx9AH0A=_44
    147. 2024-03-21 16:02:24.411 D [MediaServer.exe] [23784-event poller 11] DtlsTransport.cpp:699 Run | running [role:server]
    148. 2024-03-21 16:02:24.411 D [MediaServer.exe] [23784-event poller 11] DtlsTransport.cpp:1411 OnSslInfo | DTLS handshake start
    149. 2024-03-21 16:02:24.411 D [MediaServer.exe] [23784-event poller 11] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'before SSL initialization']
    150. 2024-03-21 16:02:24.411 D [MediaServer.exe] [23784-event poller 11] DtlsTransport.cpp:1407 OnSslInfo | role: server, waiting:'before SSL initialization']
    151. 2024-03-21 16:02:24.426 D [MediaServer.exe] [23784-event poller 11] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'before SSL initialization']
    152. 2024-03-21 16:02:24.426 D [MediaServer.exe] [23784-event poller 11] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'SSLv3/TLS read client hello']
    153. 2024-03-21 16:02:24.426 D [MediaServer.exe] [23784-event poller 11] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'SSLv3/TLS write server hello']
    154. 2024-03-21 16:02:24.427 D [MediaServer.exe] [23784-event poller 11] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'SSLv3/TLS write certificate']
    155. 2024-03-21 16:02:24.428 D [MediaServer.exe] [23784-event poller 11] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'SSLv3/TLS write key exchange']
    156. 2024-03-21 16:02:24.428 D [MediaServer.exe] [23784-event poller 11] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'SSLv3/TLS write certificate request']
    157. 2024-03-21 16:02:24.428 D [MediaServer.exe] [23784-event poller 11] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'SSLv3/TLS write server done']
    158. 2024-03-21 16:02:24.428 D [MediaServer.exe] [23784-event poller 11] DtlsTransport.cpp:1407 OnSslInfo | role: server, waiting:'SSLv3/TLS write server done']
    159. 2024-03-21 16:02:24.428 D [MediaServer.exe] [23784-event poller 11] DtlsTransport.cpp:977 SendPendingOutgoingDtlsData | 2111 bytes of DTLS data ready to sent to the peer
    160. 2024-03-21 16:02:24.428 D [MediaServer.exe] [23784-event poller 11] DtlsTransport.cpp:1015 SetTimeout | DTLS timer set in 100ms
    161. 2024-03-21 16:02:24.434 D [MediaServer.exe] [23784-event poller 11] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'SSLv3/TLS write server done']
    162. 2024-03-21 16:02:24.435 D [MediaServer.exe] [23784-event poller 11] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'SSLv3/TLS read client certificate']
    163. 2024-03-21 16:02:24.435 D [MediaServer.exe] [23784-event poller 11] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'SSLv3/TLS read client key exchange']
    164. 2024-03-21 16:02:24.435 D [MediaServer.exe] [23784-event poller 11] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'SSLv3/TLS read certificate verify']
    165. 2024-03-21 16:02:24.435 D [MediaServer.exe] [23784-event poller 11] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'SSLv3/TLS read change cipher spec']
    166. 2024-03-21 16:02:24.435 D [MediaServer.exe] [23784-event poller 11] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'SSLv3/TLS read finished']
    167. 2024-03-21 16:02:24.435 D [MediaServer.exe] [23784-event poller 11] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'SSLv3/TLS write change cipher spec']
    168. 2024-03-21 16:02:24.435 D [MediaServer.exe] [23784-event poller 11] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'SSLv3/TLS write finished']
    169. 2024-03-21 16:02:24.435 D [MediaServer.exe] [23784-event poller 11] DtlsTransport.cpp:1415 OnSslInfo | DTLS handshake done
    170. 2024-03-21 16:02:24.435 D [MediaServer.exe] [23784-event poller 11] DtlsTransport.cpp:977 SendPendingOutgoingDtlsData | 67 bytes of DTLS data ready to sent to the peer
    171. 2024-03-21 16:02:24.436 D [MediaServer.exe] [23784-event poller 11] DtlsTransport.cpp:1166 CheckRemoteFingerprint | valid remote fingerprint
    172. 2024-03-21 16:02:24.436 D [MediaServer.exe] [23784-event poller 11] DtlsTransport.cpp:1340 GetNegotiatedSrtpCryptoSuite | chosen SRTP crypto suite: SRTP_AES128_CM_SHA1_80
    173. 2024-03-21 16:02:24.436 I [MediaServer.exe] [23784-event poller 11] WebRtcTransport.cpp:197 OnDtlsTransportConnected | wKgSAx9AH0A=_44
    174. 2024-03-21 16:02:24.694 I [MediaServer.exe] [23784-event poller 11] WebRtcTransport.cpp:1012 createRtpChannel | create rtp receiver of ssrc:2056661234, rid:, codec:PCMU
    175. 2024-03-21 16:02:24.695 I [MediaServer.exe] [23784-event poller 11] MediaSource.cpp:517 emitEvent | 媒体注册:rtsp://__defaultVhost__/2fbe2a926db241b483ab4ea79950fb0c/dxw3Stream
    176. 2024-03-21 16:02:24.695 D [MediaServer.exe] [23784-event poller 3] MediaSource.cpp:456 operator () | 收到媒体注册事件,回复播放器:rtsp://__defaultVhost__/2fbe2a926db241b483ab4ea79950fb0c/dxw3Stream
    177. 2024-03-21 16:02:24.696 I [MediaServer.exe] [23784-event poller 3] WebRtcTransport.cpp:539 WebRtcTransportImp | wKgSAx9AH0A=_45
    178. 2024-03-21 16:02:24.704 D [MediaServer.exe] [23784-event poller 3] WebApi.cpp:261 http api debug |
    179. # request:

    play:

    1. POST /index/api/webrtc?app=2fbe2a926db241b483ab4ea79950fb0c&stream=dxw3Stream&type=play
    2. # header:
    3. Accept : application/json, text/plain, */*
    4. Accept-Encoding : gzip, deflate, br
    5. Accept-Language : zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7,en-GB;q=0.6
    6. Connection : keep-alive
    7. Content-Length : 6474
    8. Content-Type : text/plain;charset=UTF-8
    9. Host : 10.60.100.196:10443
    10. Origin : https://10.60.100.196:18080
    11. sec-ch-ua : "Chromium";v="122", "Not(A:Brand";v="24", "Microsoft Edge";v="122"
    12. sec-ch-ua-mobile : ?0
    13. sec-ch-ua-platform : "Windows"
    14. Sec-Fetch-Dest : empty
    15. Sec-Fetch-Mode : cors
    16. Sec-Fetch-Site : same-site
    17. User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0
    18. # content:
    19. v=0
    20. o=- 2603351187133562715 2 IN IP4 127.0.0.1
    21. s=-
    22. t=0 0
    23. a=group:BUNDLE 0 1
    24. a=extmap-allow-mixed
    25. a=msid-semantic: WMS
    26. m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 35 36 37 38 102 103 104 105 106 107 108 109 127 125 39 40 41 42 43 44 45 46 47 48 112 113 114 115 116 117 118 49
    27. c=IN IP4 0.0.0.0
    28. a=rtcp:9 IN IP4 0.0.0.0
    29. a=ice-ufrag:gqVD
    30. a=ice-pwd:iY37aLVC9/+wM0qGasxp108p
    31. a=ice-options:trickle
    32. a=fingerprint:sha-256 AF:9B:DE:28:34:80:D3:82:E9:53:CA:FF:F2:12:D6:B1:A4:31:38:27:82:07:70:C1:E0:DC:66:0B:62:41:42:2D
    33. a=setup:actpass
    34. a=mid:0
    35. a=extmap:1 urn:ietf:params:rtp-hdrext:toffset
    36. a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
    37. a=extmap:3 urn:3gpp:video-orientation
    38. a=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
    39. a=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
    40. a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
    41. a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
    42. a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space
    43. a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid
    44. a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
    45. a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
    46. a=recvonly
    47. a=rtcp-mux
    48. a=rtcp-rsize
    49. a=rtpmap:96 VP8/90000
    50. a=rtcp-fb:96 goog-remb
    51. a=rtcp-fb:96 transport-cc
    52. a=rtcp-fb:96 ccm fir
    53. a=rtcp-fb:96 nack
    54. a=rtcp-fb:96 nack pli
    55. a=rtpmap:97 rtx/90000
    56. a=fmtp:97 apt=96
    57. a=rtpmap:98 VP9/90000
    58. a=rtcp-fb:98 goog-remb
    59. a=rtcp-fb:98 transport-cc
    60. a=rtcp-fb:98 ccm fir
    61. a=rtcp-fb:98 nack
    62. a=rtcp-fb:98 nack pli
    63. a=fmtp:98 profile-id=0
    64. a=rtpmap:99 rtx/90000
    65. a=fmtp:99 apt=98
    66. a=rtpmap:100 VP9/90000
    67. a=rtcp-fb:100 goog-remb
    68. a=rtcp-fb:100 transport-cc
    69. a=rtcp-fb:100 ccm fir
    70. a=rtcp-fb:100 nack
    71. a=rtcp-fb:100 nack pli
    72. a=fmtp:100 profile-id=2
    73. a=rtpmap:101 rtx/90000
    74. a=fmtp:101 apt=100
    75. a=rtpmap:35 VP9/90000
    76. a=rtcp-fb:35 goog-remb
    77. a=rtcp-fb:35 transport-cc
    78. a=rtcp-fb:35 ccm fir
    79. a=rtcp-fb:35 nack
    80. a=rtcp-fb:35 nack pli
    81. a=fmtp:35 profile-id=1
    82. a=rtpmap:36 rtx/90000
    83. a=fmtp:36 apt=35
    84. a=rtpmap:37 VP9/90000
    85. a=rtcp-fb:37 goog-remb
    86. a=rtcp-fb:37 transport-cc
    87. a=rtcp-fb:37 ccm fir
    88. a=rtcp-fb:37 nack
    89. a=rtcp-fb:37 nack pli
    90. a=fmtp:37 profile-id=3
    91. a=rtpmap:38 rtx/90000
    92. a=fmtp:38 apt=37
    93. a=rtpmap:102 H264/90000
    94. a=rtcp-fb:102 goog-remb
    95. a=rtcp-fb:102 transport-cc
    96. a=rtcp-fb:102 ccm fir
    97. a=rtcp-fb:102 nack
    98. a=rtcp-fb:102 nack pli
    99. a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
    100. a=rtpmap:103 rtx/90000
    101. a=fmtp:103 apt=102
    102. a=rtpmap:104 H264/90000
    103. a=rtcp-fb:104 goog-remb
    104. a=rtcp-fb:104 transport-cc
    105. a=rtcp-fb:104 ccm fir
    106. a=rtcp-fb:104 nack
    107. a=rtcp-fb:104 nack pli
    108. a=fmtp:104 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f
    109. a=rtpmap:105 rtx/90000
    110. a=fmtp:105 apt=104
    111. a=rtpmap:106 H264/90000
    112. a=rtcp-fb:106 goog-remb
    113. a=rtcp-fb:106 transport-cc
    114. a=rtcp-fb:106 ccm fir
    115. a=rtcp-fb:106 nack
    116. a=rtcp-fb:106 nack pli
    117. a=fmtp:106 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
    118. a=rtpmap:107 rtx/90000
    119. a=fmtp:107 apt=106
    120. a=rtpmap:108 H264/90000
    121. a=rtcp-fb:108 goog-remb
    122. a=rtcp-fb:108 transport-cc
    123. a=rtcp-fb:108 ccm fir
    124. a=rtcp-fb:108 nack
    125. a=rtcp-fb:108 nack pli
    126. a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f
    127. a=rtpmap:109 rtx/90000
    128. a=fmtp:109 apt=108
    129. a=rtpmap:127 H264/90000
    130. a=rtcp-fb:127 goog-remb
    131. a=rtcp-fb:127 transport-cc
    132. a=rtcp-fb:127 ccm fir
    133. a=rtcp-fb:127 nack
    134. a=rtcp-fb:127 nack pli
    135. a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f
    136. a=rtpmap:125 rtx/90000
    137. a=fmtp:125 apt=127
    138. a=rtpmap:39 H264/90000
    139. a=rtcp-fb:39 goog-remb
    140. a=rtcp-fb:39 transport-cc
    141. a=rtcp-fb:39 ccm fir
    142. a=rtcp-fb:39 nack
    143. a=rtcp-fb:39 nack pli
    144. a=fmtp:39 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=4d001f
    145. a=rtpmap:40 rtx/90000
    146. a=fmtp:40 apt=39
    147. a=rtpmap:41 H264/90000
    148. a=rtcp-fb:41 goog-remb
    149. a=rtcp-fb:41 transport-cc
    150. a=rtcp-fb:41 ccm fir
    151. a=rtcp-fb:41 nack
    152. a=rtcp-fb:41 nack pli
    153. a=fmtp:41 level-asymmetry-allowed=1;pack
    154. # response:
    155. {
    156. "code" : 0,
    157. "id" : "wKgSAx9AH0A=_45",
    158. "sdp" : "v=0\r\no=- 2603351187133562715 2 IN IP4 10.60.100.196\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0 1\r\na=msid-semantic: WMS\r\na=ice-lite\r\nm=video 8000 UDP/TLS/RTP/SAVPF 106 107\r\nc=IN IP4 10.60.100.196\r\na=rtcp:8000 IN IP4 10.60.100.196\r\na=ice-ufrag:wKgSAx9AH0A=_45\r\na=ice-pwd:lRD99Pf1Co1vushq2tzTDWX4\r\na=ice-options:trickle\r\na=fingerprint:sha-256 5D:43:0F:2C:BD:82:BB:C5:B4:77:42:D3:8C:2B:D5:1A:32:59:39:1D:78:7A:BB:88:E2:EF:2A:60:37:AD:6E:A3\r\na=setup:passive\r\na=mid:0\r\na=ice-lite\r\na=extmap:1 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\na=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=sendonly\r\na=rtcp-mux\r\na=rtpmap:106 H264/90000\r\na=rtcp-fb:106 ccm fir\r\na=rtcp-fb:106 goog-remb\r\na=rtcp-fb:106 nack\r\na=rtcp-fb:106 nack pli\r\na=rtcp-fb:106 transport-cc\r\na=fmtp:106 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\na=rtpmap:107 rtx/90000\r\na=fmtp:107 apt=106\r\na=msid:zlmediakit-mslabel zlmediakit-label\r\na=ssrc:1 cname:zlmediakit-rtp\r\na=ssrc:1 msid:zlmediakit-mslabel zlmediakit-label\r\na=ssrc:1 mslabel:zlmediakit-mslabel\r\na=ssrc:1 label:zlmediakit-label\r\na=ssrc:3 cname:zlmediakit-rtp\r\na=ssrc:3 msid:zlmediakit-mslabel zlmediakit-label\r\na=ssrc:3 mslabel:zlmediakit-mslabel\r\na=ssrc:3 label:zlmediakit-label\r\na=ssrc-group:FID 1 3\r\na=candidate:udpcandidate 1 udp 110 10.60.100.196 8000 typ host\r\na=candidate:tcpcandidate 1 tcp 105 10.60.100.196 8000 typ host tcptype passive\r\nm=audio 8000 UDP/TLS/RTP/SAVPF 0\r\nc=IN IP4 10.60.100.196\r\na=rtcp:8000 IN IP4 10.60.100.196\r\na=ice-ufrag:wKgSAx9AH0A=_45\r\na=ice-pwd:lRD99Pf1Co1vushq2tzTDWX4\r\na=ice-options:trickle\r\na=fingerprint:sha-256 5D:43:0F:2C:BD:82:BB:C5:B4:77:42:D3:8C:2B:D5:1A:32:59:39:1D:78:7A:BB:88:E2:EF:2A:60:37:AD:6E:A3\r\na=setup:passive\r\na=mid:1\r\na=ice-lite\r\na=extmap:14 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=sendonly\r\na=rtcp-mux\r\na=rtpmap:0 PCMU/8000/1\r\na=msid:zlmediakit-mslabel zlmediakit-label\r\na=ssrc:2 cname:zlmediakit-rtp\r\na=ssrc:2 msid:zlmediakit-mslabel zlmediakit-label\r\na=ssrc:2 mslabel:zlmediakit-mslabel\r\na=ssrc:2 label:zlmediakit-label\r\na=candidate:udpcandidate 1 udp 110 10.60.100.196 8000 typ host\r\na=candidate:tcpcandidate 1 tcp 105 10.60.100.196 8000 typ host tcptype passive\r\n",
    159. "type" : "answer"
    160. }
    161. 2024-03-21 16:02:24.709 W [MediaServer.exe] [23784-event poller 11] WebRtcSession.cpp:104 onError | 224-1436(10.60.100.196:61106) 1(end of file)
    162. 2024-03-21 16:02:24.709 W [MediaServer.exe] [23784-event poller 11] WebRtcSession.cpp:104 onError | 225-1368(10.60.100.196:61107) 1(end of file)
    163. 2024-03-21 16:02:24.710 W [MediaServer.exe] [23784-event poller 11] WebRtcSession.cpp:104 onError | 227-1500(10.60.100.196:61109) 1(end of file)
    164. 2024-03-21 16:02:24.773 I [MediaServer.exe] [23784-event poller 3] WebRtcSession.cpp:85 onRecv_l | 228-1500(10.60.100.196:51044)
    165. 2024-03-21 16:02:24.773 D [MediaServer.exe] [23784-event poller 3] IceServer.cpp:340 HandleTuple | transition from state 'new' to 'connected'
    166. 2024-03-21 16:02:24.774 I [MediaServer.exe] [23784-event poller 3] WebRtcTransport.cpp:170 OnIceServerSelectedTuple | wKgSAx9AH0A=_45 select tuple udp 10.60.100.196:51044
    167. 2024-03-21 16:02:24.774 I [MediaServer.exe] [23784-event poller 3] WebRtcTransport.cpp:176 OnIceServerConnected | wKgSAx9AH0A=_45
    168. 2024-03-21 16:02:24.774 E [MediaServer.exe] [23784-event poller 3] DtlsTransport.cpp:744 ProcessDtlsData | cannot process data while not running
    169. 2024-03-21 16:02:24.835 D [MediaServer.exe] [23784-event poller 3] IceServer.cpp:429 HandleTuple | transition from state 'connected' to 'completed'
    170. 2024-03-21 16:02:24.835 I [MediaServer.exe] [23784-event poller 3] WebRtcTransport.cpp:180 OnIceServerCompleted | wKgSAx9AH0A=_45
    171. 2024-03-21 16:02:24.835 I [MediaServer.exe] [23784-event poller 3] WebRtcTransport.cpp:232 OnDtlsTransportConnecting | wKgSAx9AH0A=_45
    172. 2024-03-21 16:02:24.835 D [MediaServer.exe] [23784-event poller 3] DtlsTransport.cpp:699 Run | running [role:server]
    173. 2024-03-21 16:02:24.835 D [MediaServer.exe] [23784-event poller 3] DtlsTransport.cpp:1411 OnSslInfo | DTLS handshake start
    174. 2024-03-21 16:02:24.835 D [MediaServer.exe] [23784-event poller 3] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'before SSL initialization']
    175. 2024-03-21 16:02:24.835 D [MediaServer.exe] [23784-event poller 3] DtlsTransport.cpp:1407 OnSslInfo | role: server, waiting:'before SSL initialization']
    176. 2024-03-21 16:02:24.835 D [MediaServer.exe] [23784-event poller 3] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'before SSL initialization']
    177. 2024-03-21 16:02:24.835 D [MediaServer.exe] [23784-event poller 3] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'SSLv3/TLS read client hello']
    178. 2024-03-21 16:02:24.835 D [MediaServer.exe] [23784-event poller 3] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'SSLv3/TLS write server hello']
    179. 2024-03-21 16:02:24.835 D [MediaServer.exe] [23784-event poller 3] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'SSLv3/TLS write certificate']
    180. 2024-03-21 16:02:24.836 D [MediaServer.exe] [23784-event poller 3] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'SSLv3/TLS write key exchange']
    181. 2024-03-21 16:02:24.836 D [MediaServer.exe] [23784-event poller 3] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'SSLv3/TLS write certificate request']
    182. 2024-03-21 16:02:24.836 D [MediaServer.exe] [23784-event poller 3] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'SSLv3/TLS write server done']
    183. 2024-03-21 16:02:24.836 D [MediaServer.exe] [23784-event poller 3] DtlsTransport.cpp:1407 OnSslInfo | role: server, waiting:'SSLv3/TLS write server done']
    184. 2024-03-21 16:02:24.836 D [MediaServer.exe] [23784-event poller 3] DtlsTransport.cpp:977 SendPendingOutgoingDtlsData | 2111 bytes of DTLS data ready to sent to the peer
    185. 2024-03-21 16:02:24.836 D [MediaServer.exe] [23784-event poller 3] DtlsTransport.cpp:1015 SetTimeout | DTLS timer set in 100ms
    186. 2024-03-21 16:02:24.836 D [MediaServer.exe] [23784-event poller 3] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'SSLv3/TLS write server done']
    187. 2024-03-21 16:02:24.836 D [MediaServer.exe] [23784-event poller 3] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'SSLv3/TLS read client certificate']
    188. 2024-03-21 16:02:24.836 D [MediaServer.exe] [23784-event poller 3] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'SSLv3/TLS read client key exchange']
    189. 2024-03-21 16:02:24.837 D [MediaServer.exe] [23784-event poller 3] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'SSLv3/TLS read certificate verify']
    190. 2024-03-21 16:02:24.837 D [MediaServer.exe] [23784-event poller 3] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'SSLv3/TLS read change cipher spec']
    191. 2024-03-21 16:02:24.837 D [MediaServer.exe] [23784-event poller 3] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'SSLv3/TLS read finished']
    192. 2024-03-21 16:02:24.837 D [MediaServer.exe] [23784-event poller 3] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'SSLv3/TLS write change cipher spec']
    193. 2024-03-21 16:02:24.837 D [MediaServer.exe] [23784-event poller 3] DtlsTransport.cpp:1369 OnSslInfo | [role:server, action:'SSLv3/TLS write finished']
    194. 2024-03-21 16:02:24.837 D [MediaServer.exe] [23784-event poller 3] DtlsTransport.cpp:1415 OnSslInfo | DTLS handshake done
    195. 2024-03-21 16:02:24.837 D [MediaServer.exe] [23784-event poller 3] DtlsTransport.cpp:977 SendPendingOutgoingDtlsData | 67 bytes of DTLS data ready to sent to the peer
    196. 2024-03-21 16:02:24.837 D [MediaServer.exe] [23784-event poller 3] DtlsTransport.cpp:1166 CheckRemoteFingerprint | valid remote fingerprint
    197. 2024-03-21 16:02:24.837 D [MediaServer.exe] [23784-event poller 3] DtlsTransport.cpp:1340 GetNegotiatedSrtpCryptoSuite | chosen SRTP crypto suite: SRTP_AEAD_AES_256_GCM
    198. 2024-03-21 16:02:24.837 I [MediaServer.exe] [23784-event poller 3] WebRtcTransport.cpp:197 OnDtlsTransportConnected | wKgSAx9AH0A=_45
    199. 2024-03-21 16:02:24.890 W [MediaServer.exe] [23784-event poller 11] WebRtcTransport.cpp:903 onRtcp | 未识别的sr rtcp包:version:2
    200. padding:0
    201. report_count:0
    202. pt:200(RTCP_SR)
    203. size:28
    204. --------
    205. ssrc:3955139128
    206. ntpmsw:3919996944
    207. ntplsw:3506656113
    208. ntp time:2024-03-21 16:02:24.816
    209. rtpts:4187904151
    210. packet_count:0
    211. octet_count:0
    212. 2024-03-21 16:02:24.898 I [MediaServer.exe] [23784-event poller 11] WebRtcTransport.cpp:1012 createRtpChannel | create rtp receiver of ssrc:3955139128, rid:, codec:H264
    213. 2024-03-21 16:02:24.898 D [MediaServer.exe] [23784-event poller 11] MediaSink.cpp:162 emitAllTrackReady | All track ready use 452ms
    214. 2024-03-21 16:02:24.899 I [MediaServer.exe] [23784-event poller 11] MediaSource.cpp:517 emitEvent | 媒体注册:fmp4://__defaultVhost__/2fbe2a926db241b483ab4ea79950fb0c/dxw3Stream
    215. 2024-03-21 16:02:24.900 I [MediaServer.exe] [23784-event poller 11] MultiMediaSourceMuxer.cpp:551 onAllTrackReady | stream: rtc://10.60.100.196:6080/2fbe2a926db241b483ab4ea79950fb0c/dxw3Stream?app=2fbe2a926db241b483ab4ea79950fb0c&stream=dxw3Stream&type=push&session=219-1380 , codec info: PCMU[8000/1/16] H264[480/640/0]
    216. 2024-03-21 16:02:24.900 I [MediaServer.exe] [23784-event poller 11] MediaSource.cpp:517 emitEvent | 媒体注册:rtmp://__defaultVhost__/2fbe2a926db241b483ab4ea79950fb0c/dxw3Stream
    217. 2024-03-21 16:02:24.901 I [MediaServer.exe] [23784-event poller 11] MediaSource.cpp:517 emitEvent | 媒体注册:ts://__defaultVhost__/2fbe2a926db241b483ab4ea79950fb0c/dxw3Stream
    218. 2024-03-21 16:02:24.964 I [MediaServer.exe] [23784-event poller 3] WebRtcSession.cpp:85 onRecv_l | 229-1392(169.167.123.119:51045)
    219. 2024-03-21 16:02:25.039 I [MediaServer.exe] [23784-event poller 3] WebRtcSession.cpp:85 onRecv_l | 230-1472(192.168.18.3:51046)
    220. 2024-03-21 16:02:26.962 W [MediaServer.exe] [23784-event poller 11] EventPoller.cpp:209 async_l | take time: 16ms, thread may be overloaded
    221. 2024-03-21 16:02:27.835 W [MediaServer.exe] [23784-event poller 10] EventPoller.cpp:209 async_l | take time: 16ms, thread may be overloaded
    222. 2024-03-21 16:02:28.406 I [MediaServer.exe] [23784-event poller 11] MediaSource.cpp:517 emitEvent | 媒体注册:hls://__defaultVhost__/2fbe2a926db241b483ab4ea79950fb0c/dxw3Stream
    223. 2024-03-21 16:02:29.939 W [MediaServer.exe] [23784-event poller 10] EventPoller.cpp:209 async_l | take time: 16ms, thread may be overloaded
    224. 2024-03-21 16:02:30.811 W [MediaServer.exe] [23784-event poller 10] EventPoller.cpp:209 async_l | take time: 16ms, thread may be overloaded
    225. 2024-03-21 16:02:32.827 W [MediaServer.exe] [23784-event poller 11] EventPoller.cpp:209 async_l | take time: 16ms, thread may be overloaded
    226. 2024-03-21 16:02:34.390 W [MediaServer.exe] [23784-event poller 6] WebRtcSession.cpp:104 onError | 223-1420(10.62.14.104:49543) 1(end of file)
    227. 2024-03-21 16:02:34.945 W [MediaServer.exe] [23784-event poller 11] WebRtcSession.cpp:104 onError | 226-1496(10.60.100.196:61108) 1(end of file)
    228. 2024-03-21 16:02:35.864 W [MediaServer.exe] [23784-event poller 10] EventPoller.cpp:209 async_l | take time: 16ms, thread may be overloaded

    主要核心主体的创建

    RtspMediaSourceImp的创建

    入口处的CB,即是对http的回复

    影响到何时生成recorder的代码

    下面的invoker为上图中传过来的invoker. 其中最难的就是其中的obj,就是on_publish执行回来的result里的值 。

     研发的环境不对,如下

    生产环境 2.8是对的,如下

     Mediasource之主要解复合MultiMediaSourceMuxer

    下面的初始化直接决定着,什么时候生成recorder,是一拉流就有。比如上面record-push-live设置为true时,那么每段放视频,都会进行录制;反之,就直接取决于配置文件是的enable_mp4=false 

     Mediasource之主要复合

    录相

    当上述开关正确设置上,就可以达到当打开开关时,才进行录制

    trackready

    参考文章

    zlm源码研究 - webrtc播放-CSDN博客

    WebRTC: Real-Time Communication in Browsers (w3.org)

    网络抖动Jitter详解-简易百科 (isolves.com)

    【zlm】zlm源码讲解-CSDN博客

    【zlm】MS, 复合器与解复合器-CSDN博客

  • 相关阅读:
    深度学习-第三章概率与信息论
    JUC并发编程(5)(自定义线程池 + 共享模型之工具2)
    ESP32网络开发实例-Web服务器以仪表形式显示传感器计数
    消息队列的简介
    zsh: command not found: bun (已解决)
    数据压缩与管理:掌握Linux VDO和LVM的力量
    JAVA:实现Pow函数功能算法(附完整源码)
    使用Speech to Text API进行语音到文本转换
    【ISO14229_UDS刷写】-1-$34诊断服务RequestDownload理论部分
    推荐一款WPF绘图插件OxyPlot
  • 原文地址:https://blog.csdn.net/dualvencsdn/article/details/132874579