Coder Social home page Coder Social logo

Comments (35)

xiaoQQya avatar xiaoQQya commented on July 18, 2024

在 PR #3429 中似乎得到了解决,期待合并。

from zlmediakit.

xiaoQQya avatar xiaoQQya commented on July 18, 2024

首先感谢作者在 Commit 2d66dd7 中对该问题进行了优化,解决了 WebRTC simulcast 推流失败的问题。

但我似乎又遇到了一些其它问题:

  1. 按照上述复现步骤中的步骤进行操作,simulcast 推流成功,ZLM 日志显示收到了 h、m、l 三路流,但只有 l 能正常播放,h 与 m 只有音频没有视频,不确定是浏览器的问题还是 zlm 的问题,详细日志如下:

    展开查看详细日志
     2024-04-21 12:40:49.573 T [MediaServer] [1-event poller 2] TcpServer.h:54 operator() | 94-62(10.128.0.104:7271) toolkit::SessionWithSSL
     2024-04-21 12:40:49.577 T [MediaServer] [1-event poller 2] TcpServer.cpp:173 operator() | 94-62(10.128.0.104:7271) toolkit::SessionWithSSL on err: 1(end of file)
     2024-04-21 12:40:49.577 T [MediaServer] [1-event poller 2] TcpServer.h:51 operator() | 94-62(10.128.0.104:7271) ~toolkit::SessionWithSSL
     2024-04-21 12:40:49.580 T [MediaServer] [1-event poller 3] TcpServer.h:54 operator() | 95-62(10.128.0.104:7272) toolkit::SessionWithSSL
     2024-04-21 12:40:49.585 I [MediaServer] [1-event poller 3] WebRtcTransport.cpp:534 WebRtcTransportImp | rBEAAh9AH0A=_20
     2024-04-21 12:40:49.588 W [MediaServer] [1-event poller 3] RtpExt.cpp:207 getExtType | unknown rtp ext url type: http://www.webrtc.org/experiments/rtp-hdrext/video-layers-allocation00
     2024-04-21 12:40:49.588 D [MediaServer] [1-event poller 3] WebApi.cpp:265 http api debug |
     # request:
     POST /index/api/webrtc?app=live&stream=test&type=push
     # header:
     Accept : application/json, text/plain, */*
     Accept-Encoding : gzip, deflate, br, zstd
     Accept-Language : zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
     Connection : keep-alive
     Content-Length : 5406
     Content-Type : text/plain;charset=UTF-8
     Host : 10.128.0.108:8443
     Origin : https://10.128.0.108:8443
     Referer : https://10.128.0.108:8443/webrtc/?app=live&stream=test&type=push
     sec-ch-ua : "Chromium";v="124", "Microsoft Edge";v="124", "Not-A.Brand";v="99"
     sec-ch-ua-mobile : ?0
     sec-ch-ua-platform : "Windows"
     Sec-Fetch-Dest : empty
     Sec-Fetch-Mode : cors
     Sec-Fetch-Site : same-origin
     User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0
     # content:
     v=0
     o=- 4648888624157881127 2 IN IP4 127.0.0.1
     s=-
     t=0 0
     a=group:BUNDLE 0 1
     a=extmap-allow-mixed
     a=msid-semantic: WMS
     m=audio 9 UDP/TLS/RTP/SAVPF 111 63 9 0 8 13 110 126
     c=IN IP4 0.0.0.0
     a=rtcp:9 IN IP4 0.0.0.0
     a=ice-ufrag:qJya
     a=ice-pwd:7oZZtok9FN6iuem5j0I71/vt
     a=ice-options:trickle
     a=fingerprint:sha-256 EA:AE:57:45:9D:78:10:DB:03:A1:84:58:9A:EA:3C:AA:5B:2F:EC:D0:0B:60:48:FA:17:1B:96:D9:B0:A6:C6:A6
     a=setup:actpass
     a=mid:0
     a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
     a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
     a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
     a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
     a=sendrecv
     a=msid:- b12d00cd-731f-4fb1-a959-ab144cf8be45
     a=rtcp-mux
     a=rtpmap:111 opus/48000/2
     a=rtcp-fb:111 transport-cc
     a=fmtp:111 minptime=10;useinbandfec=1
     a=rtpmap:63 red/48000/2
     a=fmtp:63 111/111
     a=rtpmap:9 G722/8000
     a=rtpmap:0 PCMU/8000
     a=rtpmap:8 PCMA/8000
     a=rtpmap:13 CN/8000
     a=rtpmap:110 telephone-event/48000
     a=rtpmap:126 telephone-event/8000
     a=ssrc:1206828818 cname:217uCFRgKzp5mvh+
     a=ssrc:1206828818 msid:- b12d00cd-731f-4fb1-a959-ab144cf8be45
     m=video 9 UDP/TLS/RTP/SAVPF 96 97 102 103 104 105 106 107 108 109 127 125 39 40 45 46 98 99 100 101 112 113 116 117 118
     c=IN IP4 0.0.0.0
     a=rtcp:9 IN IP4 0.0.0.0
     a=ice-ufrag:qJya
     a=ice-pwd:7oZZtok9FN6iuem5j0I71/vt
     a=ice-options:trickle
     a=fingerprint:sha-256 EA:AE:57:45:9D:78:10:DB:03:A1:84:58:9A:EA:3C:AA:5B:2F:EC:D0:0B:60:48:FA:17:1B:96:D9:B0:A6:C6:A6
     a=setup:actpass
     a=mid:1
     a=extmap:14 urn:ietf:params:rtp-hdrext:toffset
     a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
     a=extmap:13 urn:3gpp:video-orientation
     a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
     a=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
     a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
     a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
     a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space
     a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
     a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
     a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
     a=extmap:12 https://aomediacodec.github.io/av1-rtp-spec/#dependency-descriptor-rtp-header-extension
     a=extmap:9 http://www.webrtc.org/experiments/rtp-hdrext/video-layers-allocation00
     a=sendrecv
     a=msid:- 9184b6f6-8e57-444f-95b5-7c88141a2a12
     a=rtcp-mux
     a=rtcp-rsize
     a=rtpmap:96 VP8/90000
     a=rtcp-fb:96 goog-remb
     a=rtcp-fb:96 transport-cc
     a=rtcp-fb:96 ccm fir
     a=rtcp-fb:96 nack
     a=rtcp-fb:96 nack pli
     a=rtpmap:97 rtx/90000
     a=fmtp:97 apt=96
     a=rtpmap:102 H264/90000
     a=rtcp-fb:102 goog-remb
     a=rtcp-fb:102 transport-cc
     a=rtcp-fb:102 ccm fir
     a=rtcp-fb:102 nack
     a=rtcp-fb:102 nack pli
     a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
     a=rtpmap:103 rtx/90000
     a=fmtp:103 apt=102
     a=rtpmap:104 H264/90000
     a=rtcp-fb:104 goog-remb
     a=rtcp-fb:104 transport-cc
     a=rtcp-fb:104 ccm fir
     a=rtcp-fb:104 nack
     a=rtcp-fb:104 nack pli
     a=fmtp:104 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f
     a=rtpmap:105 rtx/90000
     a=fmtp:105 apt=104
     a=rtpmap:106 H264/90000
     a=rtcp-fb:106 goog-remb
     a=rtcp-fb:106 transport-cc
     a=rtcp-fb:106 ccm fir
     a=rtcp-fb:106 nack
     a=rtcp-fb:106 nack pli
     a=fmtp:106 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
     a=rtpmap:107 rtx/90000
     a=fmtp:107 apt=106
     a=rtpmap:108 H264/90000
     a=rtcp-fb:108 goog-remb
     a=rtcp-fb:108 transport-cc
     a=rtcp-fb:108 ccm fir
     a=rtcp-fb:108 nack
     a=rtcp-fb:108 nack pli
     a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f
     a=rtpmap:109 rtx/90000
     a=fmtp:109 apt=108
     a=rtpmap:127 H264/90000
     a=rtcp-fb:127 goog-remb
     a=rtcp-fb:127 transport-cc
     a=rtcp-fb:127 ccm fir
     a=rtcp-fb:127 nack
     a=rtcp-fb:127 nack pli
     a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f
     a=rtpmap:125 rtx/90000
     a=fmtp:125 apt=127
     a=rtpmap:39 H264/900
     # response:
     {
             "code" : 0,
             "id" : "rBEAAh9AH0A=_20",
             "sdp" : "v=0\r\no=- 4648888624157881127 2 IN IP4 10.128.0.108\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 8\r\nc=IN IP4 10.128.0.108\r\na=rtcp:8000 IN IP4 10.128.0.108\r\na=ice-ufrag:rBEAAh9AH0A=_20\r\na=ice-pwd:WOHLVjqW7kFCkuDYZ4ZiLH3H\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=recvonly\r\na=rtcp-mux\r\na=rtpmap:8 PCMA/8000/1\r\na=candidate:udpcandidate 1 udp 120 10.128.0.108 8000 typ host\r\na=candidate:tcpcandidate 1 tcp 115 10.128.0.108 8000 typ host tcptype passive\r\nm=video 8000 UDP/TLS/RTP/SAVPF 102 103\r\nc=IN IP4 10.128.0.108\r\na=rtcp:8000 IN IP4 10.128.0.108\r\na=ice-ufrag:rBEAAh9AH0A=_20\r\na=ice-pwd:WOHLVjqW7kFCkuDYZ4ZiLH3H\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: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=recvonly\r\na=rtcp-mux\r\na=rtpmap:102 H264/90000\r\na=rtcp-fb:102 ccm fir\r\na=rtcp-fb:102 goog-remb\r\na=rtcp-fb:102 nack\r\na=rtcp-fb:102 nack pli\r\na=rtcp-fb:102 transport-cc\r\na=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\r\na=rtpmap:103 rtx/90000\r\na=fmtp:103 apt=102\r\na=simulcast:recv h;m;l\r\na=rid:h recv\r\na=rid:m recv\r\na=rid:l recv\r\na=candidate:udpcandidate 1 udp 120 10.128.0.108 8000 typ host\r\na=candidate:tcpcandidate 1 tcp 115 10.128.0.108 8000 typ host tcptype passive\r\n",
             "type" : "answer"
     }
     2024-04-21 12:40:49.774 T [MediaServer] [1-event poller 3] UdpServer.h:40 operator() | 96-69(10.128.0.104:55151) mediakit::WebRtcSession
     2024-04-21 12:40:49.774 I [MediaServer] [1-event poller 3] WebRtcSession.cpp:85 onRecv_l | 96-69(10.128.0.104:55151)
     2024-04-21 12:40:49.774 D [MediaServer] [1-event poller 3] IceServer.cpp:340 HandleTuple | transition from state 'new' to 'connected'
     2024-04-21 12:40:49.774 I [MediaServer] [1-event poller 3] WebRtcTransport.cpp:169 OnIceServerSelectedTuple | rBEAAh9AH0A=_20 select tuple udp 10.128.0.104:55151
     2024-04-21 12:40:49.774 I [MediaServer] [1-event poller 3] WebRtcTransport.cpp:175 OnIceServerConnected | rBEAAh9AH0A=_20
     2024-04-21 12:40:49.777 W [MediaServer] [1-event poller 3] DtlsTransport.cpp:744 ProcessDtlsData | cannot process data while not running
     2024-04-21 12:40:49.876 D [MediaServer] [1-event poller 3] IceServer.cpp:429 HandleTuple | transition from state 'connected' to 'completed'
     2024-04-21 12:40:49.876 I [MediaServer] [1-event poller 3] WebRtcTransport.cpp:179 OnIceServerCompleted | rBEAAh9AH0A=_20
     2024-04-21 12:40:49.876 I [MediaServer] [1-event poller 3] WebRtcTransport.cpp:231 OnDtlsTransportConnecting | rBEAAh9AH0A=_20
     2024-04-21 12:40:49.876 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:699 Run | running [role:server]
     2024-04-21 12:40:49.876 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:1410 OnSslInfo | DTLS handshake start
     2024-04-21 12:40:49.876 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'before SSL initialization']
     2024-04-21 12:40:49.876 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:1406 OnSslInfo | role: server, waiting:'before SSL initialization']
     2024-04-21 12:40:49.978 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'before SSL initialization']
     2024-04-21 12:40:49.978 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'SSLv3/TLS read client hello']
     2024-04-21 12:40:49.978 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'SSLv3/TLS write server hello']
     2024-04-21 12:40:49.978 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'SSLv3/TLS write certificate']
     2024-04-21 12:40:49.981 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'SSLv3/TLS write key exchange']
     2024-04-21 12:40:49.981 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'SSLv3/TLS write certificate request']
     2024-04-21 12:40:49.981 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'SSLv3/TLS write server done']
     2024-04-21 12:40:49.981 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:1406 OnSslInfo | role: server, waiting:'SSLv3/TLS write server done']
     2024-04-21 12:40:49.981 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:976 SendPendingOutgoingDtlsData | 2111 bytes of DTLS data ready to sent to the peer
     2024-04-21 12:40:49.981 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:1014 SetTimeout | DTLS timer set in 99ms
     2024-04-21 12:40:49.983 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'SSLv3/TLS write server done']
     2024-04-21 12:40:49.984 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'SSLv3/TLS read client certificate']
     2024-04-21 12:40:49.984 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'SSLv3/TLS read client key exchange']
     2024-04-21 12:40:49.984 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'SSLv3/TLS read certificate verify']
     2024-04-21 12:40:49.985 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'SSLv3/TLS read change cipher spec']
     2024-04-21 12:40:49.985 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'SSLv3/TLS read finished']
     2024-04-21 12:40:49.985 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'SSLv3/TLS write change cipher spec']
     2024-04-21 12:40:49.985 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'SSLv3/TLS write finished']
     2024-04-21 12:40:49.985 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:1414 OnSslInfo | DTLS handshake done
     2024-04-21 12:40:49.985 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:976 SendPendingOutgoingDtlsData | 67 bytes of DTLS data ready to sent to the peer
     2024-04-21 12:40:49.985 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:1165 CheckRemoteFingerprint | valid remote fingerprint
     2024-04-21 12:40:49.985 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:1339 GetNegotiatedSrtpCryptoSuite | chosen SRTP crypto suite: SRTP_AEAD_AES_256_GCM
     2024-04-21 12:40:49.985 I [MediaServer] [1-event poller 3] WebRtcTransport.cpp:196 OnDtlsTransportConnected | rBEAAh9AH0A=_20
     2024-04-21 12:40:49.986 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:976 SendPendingOutgoingDtlsData | 129 bytes of DTLS data ready to sent to the peer
     2024-04-21 12:40:49.986 T [MediaServer] [1-event poller 3] WebRtcTransport.cpp:256 OnSctpAssociationConnecting | rBEAAh9AH0A=_20
     2024-04-21 12:40:50.003 W [MediaServer] [1-event poller 3] WebRtcTransport.cpp:1068 inputRtp | unknown rtx rtp, rid:, ssrc:490627667, codec:H264, seq:16499
     2024-04-21 12:40:50.005 I [MediaServer] [1-event poller 3] WebRtcTransport.cpp:1011 createRtpChannel | create rtp receiver of ssrc:1206828818, rid:, codec:PCMA
     2024-04-21 12:40:50.008 I [MediaServer] [1-event poller 3] WebRtcTransport.cpp:637 operator() | get rtp, pt:102, ssrc:521455234, rid:l
     2024-04-21 12:40:50.008 I [MediaServer] [1-event poller 3] WebRtcTransport.cpp:1011 createRtpChannel | create rtp receiver of ssrc:521455234, rid:l, codec:H264
     2024-04-21 12:40:50.010 I [MediaServer] [1-event poller 3] MediaSource.cpp:517 emitEvent | 媒体注册:rtsp://__defaultVhost__/live/test_l
     2024-04-21 12:40:50.029 W [MediaServer] [1-event poller 3] WebRtcTransport.cpp:1068 inputRtp | unknown rtx rtp, rid:, ssrc:490627667, codec:H264, seq:16500
     2024-04-21 12:40:50.029 W [MediaServer] [1-event poller 3] WebRtcTransport.cpp:1068 inputRtp | unknown rtx rtp, rid:, ssrc:490627667, codec:H264, seq:16501
     2024-04-21 12:40:50.031 I [MediaServer] [1-event poller 3] WebRtcTransport.cpp:637 operator() | get rtp, pt:103, ssrc:490627667, rid:l
     2024-04-21 12:40:50.044 D [MediaServer] [1-event poller 3] MediaSink.cpp:162 emitAllTrackReady | All track ready use 34ms
     2024-04-21 12:40:50.044 I [MediaServer] [1-event poller 3] MediaSource.cpp:517 emitEvent | 媒体注册:fmp4://__defaultVhost__/live/test_l
     2024-04-21 12:40:50.044 I [MediaServer] [1-event poller 3] MultiMediaSourceMuxer.cpp:555 onAllTrackReady | stream: rtc://10.128.0.108:8443/live/test?app=live&stream=test&type=push&session=95-62 , codec info: PCMA[8000/1/16] H264[320/180/0]
     2024-04-21 12:40:50.044 I [MediaServer] [1-event poller 3] MediaSource.cpp:517 emitEvent | 媒体注册:rtmp://__defaultVhost__/live/test_l
     2024-04-21 12:40:50.045 I [MediaServer] [1-event poller 3] MediaSource.cpp:517 emitEvent | 媒体注册:ts://__defaultVhost__/live/test_l
     2024-04-21 12:40:50.045 T [MediaServer] [1-event poller 3] Stamp.cpp:129 revise_l | Relative stamp changed: 0 -> 17
     2024-04-21 12:40:50.232 T [MediaServer] [1-event poller 3] Stamp.cpp:129 revise_l | Relative stamp changed: 197 -> 214
     2024-04-21 12:40:50.232 T [MediaServer] [1-event poller 3] Stamp.cpp:129 revise_l | Relative stamp changed: 160 -> 164
     2024-04-21 12:40:50.273 I [MediaServer] [1-event poller 3] WebRtcTransport.cpp:637 operator() | get rtp, pt:102, ssrc:2217260900, rid:m
     2024-04-21 12:40:50.274 I [MediaServer] [1-event poller 3] WebRtcTransport.cpp:1011 createRtpChannel | create rtp receiver of ssrc:2217260900, rid:m, codec:H264
     2024-04-21 12:40:50.275 I [MediaServer] [1-event poller 3] MediaSource.cpp:517 emitEvent | 媒体注册:rtsp://__defaultVhost__/live/test_m
     2024-04-21 12:40:50.302 D [MediaServer] [1-event poller 3] MediaSink.cpp:162 emitAllTrackReady | All track ready use 27ms
     2024-04-21 12:40:50.303 I [MediaServer] [1-event poller 3] MediaSource.cpp:517 emitEvent | 媒体注册:fmp4://__defaultVhost__/live/test_m
     2024-04-21 12:40:50.303 I [MediaServer] [1-event poller 3] MultiMediaSourceMuxer.cpp:555 onAllTrackReady | stream: rtc://10.128.0.108:8443/live/test?app=live&stream=test&type=push&session=95-62 , codec info: PCMA[8000/1/16] H264[640/360/0]
     2024-04-21 12:40:50.303 I [MediaServer] [1-event poller 3] MediaSource.cpp:517 emitEvent | 媒体注册:rtmp://__defaultVhost__/live/test_m
     2024-04-21 12:40:50.303 I [MediaServer] [1-event poller 3] MediaSource.cpp:517 emitEvent | 媒体注册:ts://__defaultVhost__/live/test_m
     2024-04-21 12:40:50.303 T [MediaServer] [1-event poller 3] Stamp.cpp:129 revise_l | Relative stamp changed: 0 -> 11
     2024-04-21 12:40:50.324 T [MediaServer] [1-event poller 3] Stamp.cpp:129 revise_l | Relative stamp changed: 0 -> 31
     2024-04-21 12:40:50.336 T [MediaServer] [1-event poller 3] Stamp.cpp:129 revise_l | Relative stamp changed: 31 -> 49
     2024-04-21 12:40:50.469 I [MediaServer] [1-event poller 3] WebRtcTransport.cpp:637 operator() | get rtp, pt:103, ssrc:2201671566, rid:m
     2024-04-21 12:40:52.177 W [MediaServer] [1-event poller 3] WebRtcTransport.cpp:910 onRtcp | 未识别的sr rtcp包:version:2
     padding:0
     report_count:0
     pt:200(RTCP_SR)
     size:28
     --------
     ssrc:2408042737
     ntpmsw:3922663252
     ntplsw:960938802
     ntp time:2024-04-21 12:40:52.223
     rtpts:1657740663
     packet_count:0
     octet_count:0
     2024-04-21 12:40:52.192 I [MediaServer] [1-event poller 3] WebRtcTransport.cpp:637 operator() | get rtp, pt:102, ssrc:2408042737, rid:h
     2024-04-21 12:40:52.193 I [MediaServer] [1-event poller 3] WebRtcTransport.cpp:1011 createRtpChannel | create rtp receiver of ssrc:2408042737, rid:h, codec:H264
     2024-04-21 12:40:52.194 I [MediaServer] [1-event poller 3] MediaSource.cpp:517 emitEvent | 媒体注册:rtsp://__defaultVhost__/live/test_h
     2024-04-21 12:40:52.223 D [MediaServer] [1-event poller 3] MediaSink.cpp:162 emitAllTrackReady | All track ready use 29ms
     2024-04-21 12:40:52.223 I [MediaServer] [1-event poller 3] MediaSource.cpp:517 emitEvent | 媒体注册:fmp4://__defaultVhost__/live/test_h
     2024-04-21 12:40:52.224 I [MediaServer] [1-event poller 3] MultiMediaSourceMuxer.cpp:555 onAllTrackReady | stream: rtc://10.128.0.108:8443/live/test?app=live&stream=test&type=push&session=95-62 , codec info: PCMA[8000/1/16] H264[1280/720/0]
     2024-04-21 12:40:52.224 I [MediaServer] [1-event poller 3] MediaSource.cpp:517 emitEvent | 媒体注册:rtmp://__defaultVhost__/live/test_h
     2024-04-21 12:40:52.224 I [MediaServer] [1-event poller 3] MediaSource.cpp:517 emitEvent | 媒体注册:ts://__defaultVhost__/live/test_h
     2024-04-21 12:40:52.224 T [MediaServer] [1-event poller 3] Stamp.cpp:129 revise_l | Relative stamp changed: 0 -> 57
     2024-04-21 12:40:52.350 I [MediaServer] [1-event poller 3] MediaSource.cpp:517 emitEvent | 媒体注册:hls://__defaultVhost__/live/test_l
     2024-04-21 12:40:52.399 T [MediaServer] [1-event poller 3] Stamp.cpp:129 revise_l | Relative stamp changed: 20 -> 217
     2024-04-21 12:40:53.021 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:976 SendPendingOutgoingDtlsData | 129 bytes of DTLS data ready to sent to the peer
     2024-04-21 12:40:53.628 I [MediaServer] [1-event poller 3] MediaSource.cpp:517 emitEvent | 媒体注册:hls://__defaultVhost__/live/test_m
     2024-04-21 12:40:59.107 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:976 SendPendingOutgoingDtlsData | 129 bytes of DTLS data ready to sent to the peer
     2024-04-21 12:41:02.295 T [MediaServer] [1-event poller 5] TcpServer.h:54 operator() | 97-94(10.128.0.104:7289) mediakit::RtspSession
     2024-04-21 12:41:02.312 I [MediaServer] [1-event poller 5] Rtsp.cpp:421 getPortPair | got port from pool:32698-32699
     2024-04-21 12:41:02.319 I [MediaServer] [1-event poller 5] Rtsp.cpp:421 getPortPair | got port from pool:33758-33759
     2024-04-21 12:41:02.323 I [MediaServer] [1-event poller 5] RtspSession.cpp:819 handleReq_Play | 97-94(10.128.0.104:7289) rtsp seekTo(ms):0
     2024-04-21 12:41:04.169 T [MediaServer] [1-event poller 1] TcpServer.cpp:173 operator() | 93-59(10.128.0.104:7270) toolkit::SessionWithSSL on err: 2(session timeout)
     2024-04-21 12:41:04.169 T [MediaServer] [1-event poller 1] TcpServer.h:51 operator() | 93-59(10.128.0.104:7270) ~toolkit::SessionWithSSL
     2024-04-21 12:41:05.156 T [MediaServer] [1-event poller 5] TcpServer.cpp:173 operator() | 97-94(10.128.0.104:7289) mediakit::RtspSession on err: 1(end of file)
     2024-04-21 12:41:05.156 W [MediaServer] [1-event poller 5] RtspSession.cpp:62 onError | 97-94(10.128.0.104:7289) RTSP播放器(__defaultVhost__/live/test_l)断开:end of file,耗时(s):2
     2024-04-21 12:41:05.156 T [MediaServer] [1-event poller 5] TcpServer.h:51 operator() | 97-94(10.128.0.104:7289) ~mediakit::RtspSession
     2024-04-21 12:41:05.156 I [MediaServer] [1-event poller 5] Rtsp.cpp:430 operator() | return port to pool:33758-33759
     2024-04-21 12:41:05.156 I [MediaServer] [1-event poller 5] Rtsp.cpp:430 operator() | return port to pool:32698-32699
     2024-04-21 12:41:07.868 T [MediaServer] [1-event poller 6] TcpServer.h:54 operator() | 98-64(10.128.0.104:7292) mediakit::RtspSession
     2024-04-21 12:41:07.874 I [MediaServer] [1-event poller 6] Rtsp.cpp:421 getPortPair | got port from pool:34578-34579
     2024-04-21 12:41:07.880 I [MediaServer] [1-event poller 6] Rtsp.cpp:421 getPortPair | got port from pool:33452-33453
     2024-04-21 12:41:07.884 I [MediaServer] [1-event poller 6] RtspSession.cpp:819 handleReq_Play | 98-64(10.128.0.104:7292) rtsp seekTo(ms):0
     2024-04-21 12:41:11.263 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:976 SendPendingOutgoingDtlsData | 129 bytes of DTLS data ready to sent to the peer
     2024-04-21 12:41:20.664 T [MediaServer] [1-event poller 3] TcpServer.cpp:173 operator() | 95-62(10.128.0.104:7272) toolkit::SessionWithSSL on err: 2(session timeout)
     2024-04-21 12:41:20.665 T [MediaServer] [1-event poller 3] TcpServer.h:51 operator() | 95-62(10.128.0.104:7272) ~toolkit::SessionWithSSL
     2024-04-21 12:41:22.222 T [MediaServer] [1-event poller 6] TcpServer.cpp:173 operator() | 98-64(10.128.0.104:7292) mediakit::RtspSession on err: 4(connection reset by peer)
     2024-04-21 12:41:22.222 W [MediaServer] [1-event poller 6] RtspSession.cpp:62 onError | 98-64(10.128.0.104:7292) RTSP播放器(__defaultVhost__/live/test_m)断开:connection reset by peer,耗时(s):14
     2024-04-21 12:41:22.222 T [MediaServer] [1-event poller 6] TcpServer.h:51 operator() | 98-64(10.128.0.104:7292) ~mediakit::RtspSession
     2024-04-21 12:41:22.223 I [MediaServer] [1-event poller 6] Rtsp.cpp:430 operator() | return port to pool:33452-33453
     2024-04-21 12:41:22.223 I [MediaServer] [1-event poller 6] Rtsp.cpp:430 operator() | return port to pool:34578-34579
     2024-04-21 12:41:24.122 T [MediaServer] [1-event poller 7] TcpServer.h:54 operator() | 99-62(10.128.0.104:7294) mediakit::RtspSession
     2024-04-21 12:41:24.139 I [MediaServer] [1-event poller 7] Rtsp.cpp:421 getPortPair | got port from pool:30116-30117
     2024-04-21 12:41:24.146 I [MediaServer] [1-event poller 7] Rtsp.cpp:421 getPortPair | got port from pool:34692-34693
     2024-04-21 12:41:24.151 I [MediaServer] [1-event poller 7] RtspSession.cpp:819 handleReq_Play | 99-62(10.128.0.104:7294) rtsp seekTo(ms):0
     2024-04-21 12:41:34.556 T [MediaServer] [1-event poller 7] TcpServer.cpp:173 operator() | 99-62(10.128.0.104:7294) mediakit::RtspSession on err: 4(connection reset by peer)
     2024-04-21 12:41:34.556 W [MediaServer] [1-event poller 7] RtspSession.cpp:62 onError | 99-62(10.128.0.104:7294) RTSP播放器(__defaultVhost__/live/test_h)断开:connection reset by peer,耗时(s):10
     2024-04-21 12:41:34.556 T [MediaServer] [1-event poller 7] TcpServer.h:51 operator() | 99-62(10.128.0.104:7294) ~mediakit::RtspSession
     2024-04-21 12:41:34.556 I [MediaServer] [1-event poller 7] Rtsp.cpp:430 operator() | return port to pool:34692-34693
     2024-04-21 12:41:34.556 I [MediaServer] [1-event poller 7] Rtsp.cpp:430 operator() | return port to pool:30116-30117
     2024-04-21 12:41:35.585 D [MediaServer] [1-event poller 3] DtlsTransport.cpp:976 SendPendingOutgoingDtlsData | 129 bytes of DTLS data ready to sent to the peer
     
  2. 使用 WebRTC simulcast 推流到 /live/test 时,ZLM 收到 /live/test_h/live/test_m/live/test_l 三路流;继续使用 WebRTC 播放 /live/test,接口响应 stream not found,必须精确指定 /live/test_h/live/test_m/live/test_l 才能播放,请问此处 h、m、l 后缀是固定的吗?能否使用 /live/test 进行播放,ZLM 作为 SFU 根据网络情况动态选择 h、m、l 进行转发。

本人在音视频方面纯小白,问题如有不合适之处还请作者见谅。

from zlmediakit.

xia-chu avatar xia-chu commented on July 18, 2024

必须指定后缀才能播放
h、m、l 后缀不是固定的 这个跟客户端的设置有关 目前js代码目前是这么设置的

from zlmediakit.

xiaoQQya avatar xiaoQQya commented on July 18, 2024

必须指定后缀才能播放 h、m、l 后缀不是固定的 这个跟客户端的设置有关 目前js代码目前是这么设置的

谢谢,我在 ZLMRTCClient.js 中看到了相关的代码片段。但我收到的三路流只有 l 有视频,h 与 m 只有音频是因为我浏览器的问题吗?ffplay 播放的日志如下:

ffplay version 7.0-full_build-www.gyan.dev Copyright (c) 2003-2024 the FFmpeg developers
  built with gcc 13.2.0 (Rev5, Built by MSYS2 project)
  configuration: --enable-gpl --enable-version3 --enable-shared --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libaribcaption --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libxevd --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxeve --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-dxva2 --enable-d3d11va --enable-d3d12va --enable-ffnvcodec --enable-libvpl --enable-nvdec --enable-nvenc --enable-vaapi --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libcodec2 --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint
  libavutil      59.  8.100 / 59.  8.100
  libavcodec     61.  3.100 / 61.  3.100
  libavformat    61.  1.100 / 61.  1.100
  libavdevice    61.  1.100 / 61.  1.100
  libavfilter    10.  1.100 / 10.  1.100
  libswscale      8.  1.100 /  8.  1.100
  libswresample   5.  1.100 /  5.  1.100
  libpostproc    58.  1.100 / 58.  1.100
[rtsp @ 000001d1abc58f00] Could not find codec parameters for stream 0 (Video: h264, none): unspecified size
Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options
Input #0, rtsp, from 'rtsp://10.128.0.108:8554/live/test_h':
  Metadata:
    title           : Streamed by ZLMediaKit(git hash:2d66dd7/2024-04-20T22:49:27+08:00,branch:master,build time:2024-04-20T14:51:11)
  Duration: N/A, start: 0.000125, bitrate: 64 kb/s
  Stream #0:0: Video: h264, none, 90k tbr, 90k tbn
  Stream #0:1: Audio: pcm_alaw, 8000 Hz, mono, s16, 64 kb/s

from zlmediakit.

xiaoQQya avatar xiaoQQya commented on July 18, 2024

必须指定后缀才能播放 h、m、l 后缀不是固定的 这个跟客户端的设置有关 目前js代码目前是这么设置的

通过接口 /index/api/getMediaList 查看发现 test_h、test_m、test_l 三路都存在视频流,但通过 ffplay 只能播放出 test_l 的视频流,test_h 与 test_m 只有音频。

ffplay 日志报错如下:

[rtsp @ 000001d1abc58f00] Could not find codec parameters for stream 0 (Video: h264, none): unspecified size
Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options

ZLMediakit 接收 WebRTC 推流时警告如下:

 2024-04-21 12:40:52.177 W [MediaServer] [1-event poller 3] WebRtcTransport.cpp:910 onRtcp | 未识别的sr rtcp包:version:2
 padding:0
 report_count:0
 pt:200(RTCP_SR)
 size:28
 --------
 ssrc:2408042737
 ntpmsw:3922663252
 ntplsw:960938802
 ntp time:2024-04-21 12:40:52.223
 rtpts:1657740663
 packet_count:0
 octet_count:0

ffplay 与 ZLMediakit 的详细日志请参考上文。

from zlmediakit.

xia-chu avatar xia-chu commented on July 18, 2024

浏览器对H264的simulcast支持有点问题貌似
可以改视频改成VP8/VP9优先测试

from zlmediakit.

xiaoQQya avatar xiaoQQya commented on July 18, 2024

浏览器对H264的simulcast支持有点问题貌似 可以改视频改成VP8/VP9优先测试

VP8/VP9 我也试过了,和 264 一样的现象,只有 l 有视频流,h 与 m 只有音频流

from zlmediakit.

xia-chu avatar xia-chu commented on July 18, 2024

我测试vp8正常的, VP9、AV1、H264都只能开启_h后缀

from zlmediakit.

xiaoQQya avatar xiaoQQya commented on July 18, 2024

我测试vp8正常的, VP9、AV1、H264都只能开启_h后缀

好的,我再试一下 VP8

from zlmediakit.

xia-chu avatar xia-chu commented on July 18, 2024

我再测试了一遍 H264能开启_l, _m后缀

from zlmediakit.

xia-chu avatar xia-chu commented on July 18, 2024

麻烦 @johzzy @xiongguangjie 大神们解惑下

from zlmediakit.

xiaoQQya avatar xiaoQQya commented on July 18, 2024

我再测试了一遍 H264能开启_l, _m后缀

你好,我改为 VP8 测试发现 VP8 我这里只能收到 l 一路,h 与 m 直接收不到了,H264 时我能收到 h、m、l 三路,但是只有 l 有视频流。

浏览器为 Microsoft Edge 124.0.2478.51 (正式版本) (64 位)

VP8 时日志如下:

2024-04-22 14:38:22.560 I [MediaServer] [1-event poller 70] WebRtcTransport.cpp:111 getServerPrefix | MediaServer(10.1.0.4:8000:8000) prefix: CgEABB9AH0A=_
2024-04-22 14:38:22.560 I [MediaServer] [1-event poller 70] WebRtcTransport.cpp:534 WebRtcTransportImp | CgEABB9AH0A=_1
2024-04-22 14:38:22.560 I [MediaServer] [1-event poller 70] DtlsTransport.cpp:310 ReadCertificateAndPrivateKeyFromContext | Load webrtc dtls certificate: default.zlmediakit.com
2024-04-22 14:38:22.560 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:415 CreateSslCtx | setting SRTP cryptoSuites for DTLS: SRTP_AEAD_AES_256_GCM:SRTP_AEAD_AES_128_GCM:SRTP_AES128_CM_SHA1_80:SRTP_AES128_CM_SHA1_32
2024-04-22 14:38:22.560 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:497 GenerateFingerprints | sha-1   fingerprint: 0B:98:67:1F:C5:46:BF:72:5A:C3:47:57:E3:0E:5D:7E:EA:06:A3:BE
2024-04-22 14:38:22.560 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:497 GenerateFingerprints | sha-224 fingerprint: 98:93:58:FB:32:10:33:DA:93:5B:93:9D:74:97:6D:45:F8:D0:79:B4:0A:60:FC:3C:C2:4E:3F:27
2024-04-22 14:38:22.560 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:497 GenerateFingerprints | sha-256 fingerprint: 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
2024-04-22 14:38:22.560 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:497 GenerateFingerprints | sha-384 fingerprint: D6:D4:B9:E3:BB:44:D8:7E:7C:F5:09:36:D0:35:D5:A2:A2:7E:C4:1A:E5:9E:C9:B6:EA:2F:C7:5A:CC:A9:09:EA:CD:AB:10:44:33:D3:2F:B0:CA:87:1D:AE:9B:D3:FD:1B
2024-04-22 14:38:22.560 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:497 GenerateFingerprints | sha-512 fingerprint: 3E:82:A2:0A:6E:19:78:3E:DE:C3:53:9C:F4:51:DB:24:9C:8D:92:A1:2A:7D:41:01:4E:44:6E:1E:FC:15:48:BA:43:21:02:C0:46:03:42:48:3F:9A:0C:EC:9C:B0:C9:EE:08:28:BD:C9:EC:75:DF:93:71:A2:EC:A6:E5:1D:E4:FA
2024-04-22 14:38:22.561 W [MediaServer] [1-event poller 70] RtpExt.cpp:207 getExtType | unknown rtp ext url type: http://www.webrtc.org/experiments/rtp-hdrext/video-layers-allocation00
2024-04-22 14:38:22.561 D [MediaServer] [1-event poller 70] WebApi.cpp:265 http api debug |
# request:
POST /index/api/webrtc?app=live&stream=test&type=push
# header:
Accept : application/json, text/plain, */*
Accept-Encoding : gzip, deflate, br, zstd
Accept-Language : zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Connection : keep-alive
Content-Length : 5406
Content-Type : text/plain;charset=UTF-8
Cookie : jenkins-timestamper-offset=-28800000; remember-me=d2F0ZXI6MTcxNDEwOTI3MzI4ODozYWNhOWI4NDVhOGE5MzBkY2YyODdhMjA3YTUyOWZhZDAxMmZmOTFjOGU3YjM4Y2ZmNTY0MWI4ZjEzYTA2YjY3; grafana_session=ff383110be67b30340b33cd8fb7f1a37; grafana_session_expiry=1713573813
Host : 172.20.2.11:8443
Origin : https://172.20.2.11:8443
Referer : https://172.20.2.11:8443/webrtc/?app=live&stream=test&type=push
sec-ch-ua : "Chromium";v="124", "Microsoft Edge";v="124", "Not-A.Brand";v="99"
sec-ch-ua-mobile : ?0
sec-ch-ua-platform : "Windows"
Sec-Fetch-Dest : empty
Sec-Fetch-Mode : cors
Sec-Fetch-Site : same-origin
User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0
# content:
v=0
o=- 6482782148471142340 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0 1
a=extmap-allow-mixed
a=msid-semantic: WMS
m=audio 9 UDP/TLS/RTP/SAVPF 111 63 9 0 8 13 110 126
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:VZxJ
a=ice-pwd:dQcsacrZDbeS/dUFQzHFj6wA
a=ice-options:trickle
a=fingerprint:sha-256 3C:B3:6D:F5:D3:6A:B9:BC:BC:3E:8B:79:72:42:42:AB:97:68:33:EB:A2:F4:21:A2:3B:C4:6E:0B:F0:C9:06:AD
a=setup:actpass
a=mid:0
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=sendrecv
a=msid:- d013d1d3-092d-4428-afaa-b1d7cc3a7d29
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
a=rtpmap:63 red/48000/2
a=fmtp:63 111/111
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:13 CN/8000
a=rtpmap:110 telephone-event/48000
a=rtpmap:126 telephone-event/8000
a=ssrc:1243796912 cname:xl5jBcb3fK0FDMaJ
a=ssrc:1243796912 msid:- d013d1d3-092d-4428-afaa-b1d7cc3a7d29
m=video 9 UDP/TLS/RTP/SAVPF 96 97 102 103 104 105 106 107 108 109 127 125 39 40 45 46 98 99 100 101 112 113 116 117 118
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:VZxJ
a=ice-pwd:dQcsacrZDbeS/dUFQzHFj6wA
a=ice-options:trickle
a=fingerprint:sha-256 3C:B3:6D:F5:D3:6A:B9:BC:BC:3E:8B:79:72:42:42:AB:97:68:33:EB:A2:F4:21:A2:3B:C4:6E:0B:F0:C9:06:AD
a=setup:actpass
a=mid:1
a=extmap:14 urn:ietf:params:rtp-hdrext:toffset
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:13 urn:3gpp:video-orientation
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=extmap:12 https://aomediacodec.github.io/av1-rtp-spec/#dependency-descriptor-rtp-header-extension
a=extmap:9 http://www.webrtc.org/experiments/rtp-hdrext/video-layers-allocation00
a=sendrecv
a=msid:- ea8f9a1d-905a-44d0-8d9e-3c0a71846f99
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:96 VP8/90000
a=rtcp-fb:96 goog-remb
a=rtcp-fb:96 transport-cc
a=rtcp-fb:96 ccm fir
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=rtpmap:97 rtx/90000
a=fmtp:97 apt=96
a=rtpmap:102 H264/90000
a=rtcp-fb:102 goog-remb
a=rtcp-fb:102 transport-cc
a=rtcp-fb:102 ccm fir
a=rtcp-fb:102 nack
a=rtcp-fb:102 nack pli
a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
a=rtpmap:103 rtx/90000
a=fmtp:103 apt=102
a=rtpmap:104 H264/90000
a=rtcp-fb:104 goog-remb
a=rtcp-fb:104 transport-cc
a=rtcp-fb:104 ccm fir
a=rtcp-fb:104 nack
a=rtcp-fb:104 nack pli
a=fmtp:104 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f
a=rtpmap:105 rtx/90000
a=fmtp:105 apt=104
a=rtpmap:106 H264/90000
a=rtcp-fb:106 goog-remb
a=rtcp-fb:106 transport-cc
a=rtcp-fb:106 ccm fir
a=rtcp-fb:106 nack
a=rtcp-fb:106 nack pli
a=fmtp:106 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
a=rtpmap:107 rtx/90000
a=fmtp:107 apt=106
a=rtpmap:108 H264/90000
a=rtcp-fb:108 goog-remb
a=rtcp-fb:108 transport-cc
a=rtcp-fb:108 ccm fir
a=rtcp-fb:108 nack
a=rtcp-fb:108 nack pli
a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f
a=rtpmap:109 rtx/90000
a=fmtp:109 apt=108
a=rtpmap:127 H264/90000
a=rtcp-fb:127 goog-remb
a=rtcp-fb:127 transport-cc
a=rtcp-fb:127 ccm fir
a=rtcp-fb:127 nack
a=rtcp-fb:127 nack pli
a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f
a=rtpmap:125 rtx/90000
a=fmtp:125 apt=127
a=rtpmap:39 H264/900
# response:
{
        "code" : 0,
        "id" : "CgEABB9AH0A=_1",
        "sdp" : "v=0\r\no=- 6482782148471142340 2 IN IP4 172.20.2.11\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 8\r\nc=IN IP4 172.20.2.11\r\na=rtcp:8000 IN IP4 172.20.2.11\r\na=ice-ufrag:CgEABB9AH0A=_1\r\na=ice-pwd:3MEwCI7ZdPdZM3Rs5gunnUXC\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=recvonly\r\na=rtcp-mux\r\na=rtpmap:8 PCMA/8000/1\r\na=candidate:udpcandidate 1 udp 110 172.20.2.11 8000 typ host\r\na=candidate:tcpcandidate 1 tcp 105 172.20.2.11 8000 typ host tcptype passive\r\nm=video 8000 UDP/TLS/RTP/SAVPF 96 97\r\nc=IN IP4 172.20.2.11\r\na=rtcp:8000 IN IP4 172.20.2.11\r\na=ice-ufrag:CgEABB9AH0A=_1\r\na=ice-pwd:3MEwCI7ZdPdZM3Rs5gunnUXC\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: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=recvonly\r\na=rtcp-mux\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=rtcp-fb:96 transport-cc\r\na=rtpmap:97 rtx/90000\r\na=fmtp:97 apt=96\r\na=simulcast:recv h;m;l\r\na=rid:h recv\r\na=rid:m recv\r\na=rid:l recv\r\na=candidate:udpcandidate 1 udp 110 172.20.2.11 8000 typ host\r\na=candidate:tcpcandidate 1 tcp 105 172.20.2.11 8000 typ host tcptype passive\r\n",
        "type" : "answer"
}


2024-04-22 14:38:22.833 T [MediaServer] [1-event poller 70] UdpServer.h:40 operator() | 3-683(172.16.202.136:65047) mediakit::WebRtcSession
2024-04-22 14:38:22.834 I [MediaServer] [1-event poller 70] WebRtcSession.cpp:85 onRecv_l | 3-683(172.16.202.136:65047)
2024-04-22 14:38:22.834 D [MediaServer] [1-event poller 70] IceServer.cpp:340 HandleTuple | transition from state 'new' to 'connected'
2024-04-22 14:38:22.834 I [MediaServer] [1-event poller 70] WebRtcTransport.cpp:169 OnIceServerSelectedTuple | CgEABB9AH0A=_1 select tuple udp 172.16.202.136:65047
2024-04-22 14:38:22.834 I [MediaServer] [1-event poller 70] WebRtcTransport.cpp:175 OnIceServerConnected | CgEABB9AH0A=_1
2024-04-22 14:38:22.836 W [MediaServer] [1-event poller 70] DtlsTransport.cpp:744 ProcessDtlsData | cannot process data while not running
2024-04-22 14:38:22.896 D [MediaServer] [1-event poller 70] IceServer.cpp:429 HandleTuple | transition from state 'connected' to 'completed'
2024-04-22 14:38:22.896 I [MediaServer] [1-event poller 70] WebRtcTransport.cpp:179 OnIceServerCompleted | CgEABB9AH0A=_1
2024-04-22 14:38:22.896 I [MediaServer] [1-event poller 70] WebRtcTransport.cpp:231 OnDtlsTransportConnecting | CgEABB9AH0A=_1
2024-04-22 14:38:22.896 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:699 Run | running [role:server]
2024-04-22 14:38:22.896 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:1410 OnSslInfo | DTLS handshake start
2024-04-22 14:38:22.896 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'before SSL initialization']
2024-04-22 14:38:22.896 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:1406 OnSslInfo | role: server, waiting:'before SSL initialization']
2024-04-22 14:38:22.896 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'before SSL initialization']
2024-04-22 14:38:22.896 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'SSLv3/TLS read client hello']
2024-04-22 14:38:22.896 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'SSLv3/TLS write server hello']
2024-04-22 14:38:22.896 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'SSLv3/TLS write certificate']
2024-04-22 14:38:22.897 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'SSLv3/TLS write key exchange']
2024-04-22 14:38:22.897 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'SSLv3/TLS write certificate request']
2024-04-22 14:38:22.897 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'SSLv3/TLS write server done']
2024-04-22 14:38:22.897 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:1406 OnSslInfo | role: server, waiting:'SSLv3/TLS write server done']
2024-04-22 14:38:22.897 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:976 SendPendingOutgoingDtlsData | 2111 bytes of DTLS data ready to sent to the peer
2024-04-22 14:38:22.897 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:1014 SetTimeout | DTLS timer set in 99ms
2024-04-22 14:38:22.906 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'SSLv3/TLS write server done']
2024-04-22 14:38:22.907 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'SSLv3/TLS read client certificate']
2024-04-22 14:38:22.907 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'SSLv3/TLS read client key exchange']
2024-04-22 14:38:22.907 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'SSLv3/TLS read certificate verify']
2024-04-22 14:38:22.907 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'SSLv3/TLS read change cipher spec']
2024-04-22 14:38:22.907 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'SSLv3/TLS read finished']
2024-04-22 14:38:22.907 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'SSLv3/TLS write change cipher spec']
2024-04-22 14:38:22.907 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:1368 OnSslInfo | [role:server, action:'SSLv3/TLS write finished']
2024-04-22 14:38:22.907 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:1414 OnSslInfo | DTLS handshake done
2024-04-22 14:38:22.907 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:976 SendPendingOutgoingDtlsData | 67 bytes of DTLS data ready to sent to the peer
2024-04-22 14:38:22.907 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:1165 CheckRemoteFingerprint | valid remote fingerprint
2024-04-22 14:38:22.907 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:1339 GetNegotiatedSrtpCryptoSuite | chosen SRTP crypto suite: SRTP_AEAD_AES_256_GCM
2024-04-22 14:38:22.907 I [MediaServer] [1-event poller 70] WebRtcTransport.cpp:196 OnDtlsTransportConnected | CgEABB9AH0A=_1
2024-04-22 14:38:22.907 D [MediaServer] [1-event poller 70] SrtpSession.cpp:97 DepLibSRTP | libsrtp version: "libsrtp2 2.3.0"
2024-04-22 14:38:22.910 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:976 SendPendingOutgoingDtlsData | 129 bytes of DTLS data ready to sent to the peer
2024-04-22 14:38:22.910 T [MediaServer] [1-event poller 70] WebRtcTransport.cpp:256 OnSctpAssociationConnecting | CgEABB9AH0A=_1
2024-04-22 14:38:22.910 W [MediaServer] [1-event poller 70] Factory.cpp:53 getTrackBySdp | Unsupported codec: VP8
2024-04-22 14:38:22.930 I [MediaServer] [1-event poller 70] WebRtcTransport.cpp:1011 createRtpChannel | create rtp receiver of ssrc:1243796912, rid:, codec:PCMA
2024-04-22 14:38:22.943 W [MediaServer] [1-event poller 70] WebRtcTransport.cpp:1068 inputRtp | unknown rtx rtp, rid:, ssrc:2502118803, codec:VP8, seq:19741
2024-04-22 14:38:22.947 I [MediaServer] [1-event poller 70] WebRtcTransport.cpp:637 operator() | get rtp, pt:96, ssrc:1390532616, rid:l
2024-04-22 14:38:22.947 I [MediaServer] [1-event poller 70] WebRtcTransport.cpp:1011 createRtpChannel | create rtp receiver of ssrc:1390532616, rid:l, codec:VP8
2024-04-22 14:38:22.947 W [MediaServer] [1-event poller 70] Factory.cpp:53 getTrackBySdp | Unsupported codec: VP8
2024-04-22 14:38:22.948 I [MediaServer] [1-event poller 70] MediaSource.cpp:517 emitEvent | 媒体注册:rtsp://__defaultVhost__/live/test_l
2024-04-22 14:38:22.949 W [MediaServer] [1-event poller 70] WebRtcTransport.cpp:1068 inputRtp | unknown rtx rtp, rid:, ssrc:2502118803, codec:VP8, seq:19742
2024-04-22 14:38:22.949 W [MediaServer] [1-event poller 70] WebRtcTransport.cpp:1068 inputRtp | unknown rtx rtp, rid:, ssrc:2502118803, codec:VP8, seq:19743
2024-04-22 14:38:22.954 W [MediaServer] [1-event poller 70] WebRtcTransport.cpp:1068 inputRtp | unknown rtx rtp, rid:, ssrc:2502118803, codec:VP8, seq:19744
2024-04-22 14:38:22.954 W [MediaServer] [1-event poller 70] WebRtcTransport.cpp:1068 inputRtp | unknown rtx rtp, rid:, ssrc:2502118803, codec:VP8, seq:19745
2024-04-22 14:38:22.956 I [MediaServer] [1-event poller 70] WebRtcTransport.cpp:637 operator() | get rtp, pt:97, ssrc:2502118803, rid:l
2024-04-22 14:38:24.995 W [MediaServer] [1-event poller 70] MediaSink.cpp:60 operator() | Cached frame of unready track(PCMA) is too much, now cleared
2024-04-22 14:38:25.930 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:976 SendPendingOutgoingDtlsData | 129 bytes of DTLS data ready to sent to the peer
2024-04-22 14:38:25.949 D [MediaServer] [1-event poller 70] MediaSink.cpp:162 emitAllTrackReady | All track ready use 3001ms
2024-04-22 14:38:25.949 I [MediaServer] [1-event poller 70] MediaSource.cpp:517 emitEvent | 媒体注册:fmp4://__defaultVhost__/live/test_l
2024-04-22 14:38:25.949 I [MediaServer] [1-event poller 70] MultiMediaSourceMuxer.cpp:561 onAllTrackReady | stream: rtc://172.20.2.11:8443/live/test?app=live&stream=test&type=push&session=2-682 , codec info: PCMA[8000/1/16]
2024-04-22 14:38:25.949 I [MediaServer] [1-event poller 70] MediaSource.cpp:517 emitEvent | 媒体注册:rtmp://__defaultVhost__/live/test_l
2024-04-22 14:38:25.949 I [MediaServer] [1-event poller 70] MediaSource.cpp:517 emitEvent | 媒体注册:ts://__defaultVhost__/live/test_l
2024-04-22 14:38:27.011 I [MediaServer] [1-event poller 70] MediaSource.cpp:517 emitEvent | 媒体注册:hls://__defaultVhost__/live/test_l
2024-04-22 14:38:31.968 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:976 SendPendingOutgoingDtlsData | 129 bytes of DTLS data ready to sent to the peer
2024-04-22 14:38:44.045 D [MediaServer] [1-event poller 70] DtlsTransport.cpp:976 SendPendingOutgoingDtlsData | 129 bytes of DTLS data ready to sent to the peer

from zlmediakit.

xia-chu avatar xia-chu commented on July 18, 2024

我是chrome测试的 你可以试试Firefox

from zlmediakit.

xiaoQQya avatar xiaoQQya commented on July 18, 2024

我是chrome测试的 你可以试试Firefox

好的,我再试一下 Firefox

from zlmediakit.

Dw9 avatar Dw9 commented on July 18, 2024

之前测试 谷歌可以的; firedox和edge不行
https://bugzilla.mozilla.org/show_bug.cgi?id=1210175

from zlmediakit.

xiaoQQya avatar xiaoQQya commented on July 18, 2024

Firefox 我这里直接获取不到本地视频流,似乎是我浏览器有些问题,但我 Firefox 是刚安装的,我再试一下 chrome 吧。

image

from zlmediakit.

xiaoQQya avatar xiaoQQya commented on July 18, 2024

我是chrome测试的 你可以试试Firefox

我本地 Firefox 似乎有问题获取不到本地视频流,使用 Chrome 测试了下,Chrome 测试的结果与 Edge 完全一样,H264 的情况下可以收到 _h、_m、_l 三路视频流,播放时只有 _l 是正常的,_h 与 _m 只有音频,VP8 的情况下只能收到 _l 一路。

H264 时 /index/api/getMediaList?schema=rtsp 接口返回的内容如下:

展开查看接口详情
{
  "code": 0,
  "data": [
    {
      "aliveSecond": 86,
      "app": "live",
      "bytesSpeed": 9589,
      "createStamp": 1713771230,
      "isRecordingHLS": true,
      "isRecordingMP4": false,
      "originSock": {
        "identifier": "3-683",
        "local_ip": "::",
        "local_port": 8000,
        "peer_ip": "172.16.202.136",
        "peer_port": 57484
      },
      "originType": 8,
      "originTypeStr": "rtc_push",
      "originUrl": "rtc://172.20.2.11:8443/live/test?app=live&stream=test&type=push&session=2-682",
      "params": "app=live&stream=test&type=push&session=2-682",
      "readerCount": 0,
      "schema": "rtsp",
      "stream": "test_h",
      "totalReaderCount": 0,
      "tracks": [
        {
          "channels": 1,
          "codec_id": 3,
          "codec_id_name": "PCMA",
          "codec_type": 1,
          "duration": 86200,
          "frames": 4312,
          "ready": true,
          "sample_bit": 16,
          "sample_rate": 8000
        },
        {
          "codec_id": 0,
          "codec_id_name": "H264",
          "codec_type": 0,
          "duration": 1301,
          "fps": 60,
          "frames": 43,
          "gop_interval_ms": 485,
          "gop_size": 1,
          "height": 720,
          "key_frames": 37,
          "ready": true,
          "width": 1280
        }
      ],
      "vhost": "__defaultVhost__"
    },
    {
      "aliveSecond": 87,
      "app": "live",
      "bytesSpeed": 9589,
      "createStamp": 1713771229,
      "isRecordingHLS": true,
      "isRecordingMP4": false,
      "originSock": {
        "identifier": "3-683",
        "local_ip": "::",
        "local_port": 8000,
        "peer_ip": "172.16.202.136",
        "peer_port": 57484
      },
      "originType": 8,
      "originTypeStr": "rtc_push",
      "originUrl": "rtc://172.20.2.11:8443/live/test?app=live&stream=test&type=push&session=2-682",
      "params": "app=live&stream=test&type=push&session=2-682",
      "readerCount": 0,
      "schema": "rtsp",
      "stream": "test_m",
      "totalReaderCount": 0,
      "tracks": [
        {
          "channels": 1,
          "codec_id": 3,
          "codec_id_name": "PCMA",
          "codec_type": 1,
          "duration": 87661,
          "frames": 4386,
          "ready": true,
          "sample_bit": 16,
          "sample_rate": 8000
        },
        {
          "codec_id": 0,
          "codec_id_name": "H264",
          "codec_type": 0,
          "duration": 3067,
          "fps": 60,
          "frames": 111,
          "gop_interval_ms": 49,
          "gop_size": 1,
          "height": 360,
          "key_frames": 57,
          "ready": true,
          "width": 640
        }
      ],
      "vhost": "__defaultVhost__"
    },
    {
      "aliveSecond": 88,
      "app": "live",
      "bytesSpeed": 12173,
      "createStamp": 1713771228,
      "isRecordingHLS": true,
      "isRecordingMP4": false,
      "originSock": {
        "identifier": "3-683",
        "local_ip": "::",
        "local_port": 8000,
        "peer_ip": "172.16.202.136",
        "peer_port": 57484
      },
      "originType": 8,
      "originTypeStr": "rtc_push",
      "originUrl": "rtc://172.20.2.11:8443/live/test?app=live&stream=test&type=push&session=2-682",
      "params": "app=live&stream=test&type=push&session=2-682",
      "readerCount": 0,
      "schema": "rtsp",
      "stream": "test_l",
      "totalReaderCount": 0,
      "tracks": [
        {
          "channels": 1,
          "codec_id": 3,
          "codec_id_name": "PCMA",
          "codec_type": 1,
          "duration": 88261,
          "frames": 4416,
          "ready": true,
          "sample_bit": 16,
          "sample_rate": 8000
        },
        {
          "codec_id": 0,
          "codec_id_name": "H264",
          "codec_type": 0,
          "duration": 87687,
          "fps": 30,
          "frames": 2599,
          "gop_interval_ms": 2001,
          "gop_size": 60,
          "height": 180,
          "key_frames": 73,
          "ready": true,
          "width": 320
        }
      ],
      "vhost": "__defaultVhost__"
    }
  ]
}

from zlmediakit.

xiongguangjie avatar xiongguangjie commented on July 18, 2024

我测试了下,我三个流 _l _h _m 都行的,你看下 chrome://webrtc-internals/ 看是否有视频与音频数据的

from zlmediakit.

xiaoQQya avatar xiaoQQya commented on July 18, 2024

我测试了下,我三个流 _l _h _m 都行的,你看下 chrome://webrtc-internals/ 看是否有视频与音频数据的

您好,音视频方面我不太懂,您看是这个吗?

CC27B8E8-B74C-45a7-B4AA-6B0B9362A290

from zlmediakit.

xiongguangjie avatar xiongguangjie commented on July 18, 2024

截图
红色的不是有h m l的视频流吗? 而且我看你的接口调用结果也有h m l的视频编码

from zlmediakit.

xiaoQQya avatar xiaoQQya commented on July 18, 2024

红色的不是有h m l的视频流吗? 而且我看你的接口调用结果也有h m l的视频编码

是的,ZLM 日志显示已经收到 h、m、l 三路流了,但使用 ffplay 进行播放只有 l 正常播放,h 与 m 只有音频没有视频。

ffplay 日志如下:

ffplay version 7.0-full_build-www.gyan.dev Copyright (c) 2003-2024 the FFmpeg developers
  built with gcc 13.2.0 (Rev5, Built by MSYS2 project)
  configuration: --enable-gpl --enable-version3 --enable-shared --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libaribcaption --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libxevd --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxeve --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-dxva2 --enable-d3d11va --enable-d3d12va --enable-ffnvcodec --enable-libvpl --enable-nvdec --enable-nvenc --enable-vaapi --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libcodec2 --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint
  libavutil      59.  8.100 / 59.  8.100
  libavcodec     61.  3.100 / 61.  3.100
  libavformat    61.  1.100 / 61.  1.100
  libavdevice    61.  1.100 / 61.  1.100
  libavfilter    10.  1.100 / 10.  1.100
  libswscale      8.  1.100 /  8.  1.100
  libswresample   5.  1.100 /  5.  1.100
  libpostproc    58.  1.100 / 58.  1.100
[rtsp @ 000001d1abc58f00] Could not find codec parameters for stream 0 (Video: h264, none): unspecified size
Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options
Input #0, rtsp, from 'rtsp://10.128.0.108:8554/live/test_h':
  Metadata:
    title           : Streamed by ZLMediaKit(git hash:2d66dd7/2024-04-20T22:49:27+08:00,branch:master,build time:2024-04-20T14:51:11)
  Duration: N/A, start: 0.000125, bitrate: 64 kb/s
  Stream #0:0: Video: h264, none, 90k tbr, 90k tbn
  Stream #0:1: Audio: pcm_alaw, 8000 Hz, mono, s16, 64 kb/s

from zlmediakit.

xiaoQQya avatar xiaoQQya commented on July 18, 2024

红色的不是有h m l的视频流吗? 而且我看你的接口调用结果也有h m l的视频编码

使用 WebRTC 协议进行播放,也是只有 l 正常播放,h 与 m 只有音频没有视频

from zlmediakit.

xiaoQQya avatar xiaoQQya commented on July 18, 2024

我测试了下,我三个流 _l _h _m 都行的,你看下 chrome://webrtc-internals/ 看是否有视频与音频数据的

@xiongguangjie 您三路流都能正常播放吗?

from zlmediakit.

xiongguangjie avatar xiongguangjie commented on July 18, 2024

我测试了下,我三个流 _l _h _m 都行的,你看下 chrome://webrtc-internals/ 看是否有视频与音频数据的

@xiongguangjie 您三路流都能正常播放吗?

可以的

from zlmediakit.

xiaoQQya avatar xiaoQQya commented on July 18, 2024

可以的

我这边能收到三路流,但 h 与 m 无法正常播放,只有音频

from zlmediakit.

johzzy avatar johzzy commented on July 18, 2024

补充这个试试 #3429, 我看到前面有提及

from zlmediakit.

xiaoQQya avatar xiaoQQya commented on July 18, 2024

补充这个试试 #3429

我一直用的 docker master 版本,自行编译的话我需要研究研究,因为我本人对 C/C++ 不太了解。

能麻烦您先在您本地帮忙试试吗?

from zlmediakit.

xiaoQQya avatar xiaoQQya commented on July 18, 2024

这个rtp ext跟simulcast无关的

我个人感觉似乎和浏览器没有关系,ZLM 已经显示收到了三路流,浏览器 WebRTC 也显示三路流都有数据传输,但是 ZLM 接收 h 与 m 流的时候报了个警告,l 流没有出现警告,不知道和这个警告有没有关系:

 2024-04-21 12:40:52.177 W [MediaServer] [1-event poller 3] WebRtcTransport.cpp:910 onRtcp | 未识别的sr rtcp包:version:2
 padding:0
 report_count:0
 pt:200(RTCP_SR)
 size:28
 --------
 ssrc:2408042737
 ntpmsw:3922663252
 ntplsw:960938802
 ntp time:2024-04-21 12:40:52.223
 rtpts:1657740663
 packet_count:0
 octet_count:0

from zlmediakit.

xiaoQQya avatar xiaoQQya commented on July 18, 2024

补充这个试试 #3429, 我看到前面有提及

加上这个还是和原来一样的问题,没有改善

from zlmediakit.

xia-chu avatar xia-chu commented on July 18, 2024

不知道和这个警告有没有关系:

没关系。我看chrome最近支持了新的svc+simulcast rtp扩展了 都不想兼容了 我觉得都挺鸡肋的

from zlmediakit.

xiaoQQya avatar xiaoQQya commented on July 18, 2024

不知道和这个警告有没有关系:

没关系。我看chrome最近支持了新的svc+simulcast rtp扩展了 都不想兼容了 我觉得都挺鸡肋的

那我这个问题还能找到原因嘛,为什么有的人可以有的不可以,我换了台电脑试和我自己电脑一样的现象

from zlmediakit.

xia-chu avatar xia-chu commented on July 18, 2024

那我这个问题还能找到原因嘛,为什么有的人可以有的不可以,我换了台电脑试和我自己电脑一样的现象

simulcast在一些浏览器上 一致时好时不好 H264基本不好用

from zlmediakit.

xiaoQQya avatar xiaoQQya commented on July 18, 2024

那我这个问题还能找到原因嘛,为什么有的人可以有的不可以,我换了台电脑试和我自己电脑一样的现象

simulcast在一些浏览器上 一致时好时不好 H264基本不好用

好的,那我再看看吧,兼容性不好的话就不用 simulcast 了,谢谢

from zlmediakit.

xia-chu avatar xia-chu commented on July 18, 2024

issue先关闭了 后面有机会再适配新的rtp ext

from zlmediakit.

xiaoQQya avatar xiaoQQya commented on July 18, 2024

issue先关闭了 后面有机会再适配新的rtp ext

好的

from zlmediakit.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.