Comments (35)
在 PR #3429 中似乎得到了解决,期待合并。
from zlmediakit.
首先感谢作者在 Commit 2d66dd7 中对该问题进行了优化,解决了 WebRTC simulcast 推流失败的问题。
但我似乎又遇到了一些其它问题:
-
按照上述复现步骤中的步骤进行操作,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
-
使用 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.
必须指定后缀才能播放
h、m、l 后缀不是固定的 这个跟客户端的设置有关 目前js代码目前是这么设置的
from zlmediakit.
必须指定后缀才能播放 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.
必须指定后缀才能播放 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.
浏览器对H264的simulcast支持有点问题貌似
可以改视频改成VP8/VP9优先测试
from zlmediakit.
浏览器对H264的simulcast支持有点问题貌似 可以改视频改成VP8/VP9优先测试
VP8/VP9 我也试过了,和 264 一样的现象,只有 l 有视频流,h 与 m 只有音频流
from zlmediakit.
我测试vp8正常的, VP9、AV1、H264都只能开启_h后缀
from zlmediakit.
我测试vp8正常的, VP9、AV1、H264都只能开启_h后缀
好的,我再试一下 VP8
from zlmediakit.
我再测试了一遍 H264能开启_l, _m后缀
from zlmediakit.
麻烦 @johzzy @xiongguangjie 大神们解惑下
from zlmediakit.
我再测试了一遍 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.
我是chrome测试的 你可以试试Firefox
from zlmediakit.
我是chrome测试的 你可以试试Firefox
好的,我再试一下 Firefox
from zlmediakit.
之前测试 谷歌可以的; firedox和edge不行
https://bugzilla.mozilla.org/show_bug.cgi?id=1210175
from zlmediakit.
Firefox 我这里直接获取不到本地视频流,似乎是我浏览器有些问题,但我 Firefox 是刚安装的,我再试一下 chrome 吧。
from zlmediakit.
我是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.
我测试了下,我三个流 _l _h _m 都行的,你看下 chrome://webrtc-internals/ 看是否有视频与音频数据的
from zlmediakit.
我测试了下,我三个流 _l _h _m 都行的,你看下 chrome://webrtc-internals/ 看是否有视频与音频数据的
您好,音视频方面我不太懂,您看是这个吗?
from zlmediakit.
红色的不是有h m l的视频流吗? 而且我看你的接口调用结果也有h m l的视频编码
from zlmediakit.
红色的不是有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.
红色的不是有h m l的视频流吗? 而且我看你的接口调用结果也有h m l的视频编码
使用 WebRTC 协议进行播放,也是只有 l 正常播放,h 与 m 只有音频没有视频
from zlmediakit.
我测试了下,我三个流 _l _h _m 都行的,你看下 chrome://webrtc-internals/ 看是否有视频与音频数据的
@xiongguangjie 您三路流都能正常播放吗?
from zlmediakit.
我测试了下,我三个流 _l _h _m 都行的,你看下 chrome://webrtc-internals/ 看是否有视频与音频数据的
@xiongguangjie 您三路流都能正常播放吗?
可以的
from zlmediakit.
可以的
我这边能收到三路流,但 h 与 m 无法正常播放,只有音频
from zlmediakit.
补充这个试试 #3429, 我看到前面有提及
from zlmediakit.
补充这个试试 #3429
我一直用的 docker master 版本,自行编译的话我需要研究研究,因为我本人对 C/C++ 不太了解。
能麻烦您先在您本地帮忙试试吗?
from zlmediakit.
这个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.
补充这个试试 #3429, 我看到前面有提及
加上这个还是和原来一样的问题,没有改善
from zlmediakit.
不知道和这个警告有没有关系:
没关系。我看chrome最近支持了新的svc+simulcast rtp扩展了 都不想兼容了 我觉得都挺鸡肋的
from zlmediakit.
不知道和这个警告有没有关系:
没关系。我看chrome最近支持了新的svc+simulcast rtp扩展了 都不想兼容了 我觉得都挺鸡肋的
那我这个问题还能找到原因嘛,为什么有的人可以有的不可以,我换了台电脑试和我自己电脑一样的现象
from zlmediakit.
那我这个问题还能找到原因嘛,为什么有的人可以有的不可以,我换了台电脑试和我自己电脑一样的现象
simulcast在一些浏览器上 一致时好时不好 H264基本不好用
from zlmediakit.
那我这个问题还能找到原因嘛,为什么有的人可以有的不可以,我换了台电脑试和我自己电脑一样的现象
simulcast在一些浏览器上 一致时好时不好 H264基本不好用
好的,那我再看看吧,兼容性不好的话就不用 simulcast 了,谢谢
from zlmediakit.
issue先关闭了 后面有机会再适配新的rtp ext
from zlmediakit.
issue先关闭了 后面有机会再适配新的rtp ext
好的
from zlmediakit.
Related Issues (20)
- webrtc服务,在ubantu搭建服务器,浏览器端播放正常,在安卓手机端播放显示超时 HOT 1
- [技术咨询] ZLM有支持Slice解码吗? HOT 6
- [技术咨询] build_docker_images.sh 编译失败 HOT 2
- Unsupported mpeg: 6 HOT 5
- [技术咨询] 多次调用addStreamProxy创建多个代理加拉流地址的问题 HOT 1
- [技术咨询] RTP推流失败,视频源为海康摄像头 HOT 1
- 使用多屏拼接接口(/index/api/stack/start)提示404错误 HOT 1
- [技术咨询] 使用C API调用mk_rtsp_server_start开启RTSP服务器推流之后,会自动启动RTMPS和RTC等 HOT 11
- webrtc 推流报错 HOT 1
- [技术咨询] 请问我需要1078的实现,需要如何获取? HOT 1
- cmake --build . --target MediaServer 报错
- [BUG] 守护进程在子进程没有退出的情况下重新启动新了子进程,导致程序不可用 HOT 2
- [编译问题] cmake --build . --target MediaServer 进度为100%时报错 HOT 1
- [技术咨询] 如何关闭自动开启的swagger HOT 1
- [技术咨询] obs推流延迟3s HOT 4
- 请问是否支持龙腾 2000 + 64核的cpu? HOT 1
- [技术咨询] mediaServer WebRrc 功能 HOT 3
- [技术咨询] RtpProcess timeout HOT 2
- 使用/index/api/getSnap接口获取不到截图,接口报错404
- 使用/index/api/getSnap接口获取不到截图,接口报错404
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from zlmediakit.