ossrs / srs-bench

SB(SRS Bench) is a set of benchmark and regression test tools, for SRS and other media servers, supports HTTP-FLV, RTMP, HLS, WebRTC and GB28181.
https://ossrs.net
MIT License
388 stars 222 forks source link

srs_bench压测janus,出现codec is not supported by remote报错 #43

Open ewan1988 opened 1 year ago

ewan1988 commented 1 year ago

janus小白,项目需要对比压测janus并发性和当前媒体服务作对比,过程中peerconnection报错,麻烦不吝赐教

环境: centos7 janus 0.13.3

janus启动命令: janus --config=/opt/janus/etc/janus/janus.jcfg

srs_bench启动命令: ./objs/srs_bench -sfu janus -pr webrtc://192.168.88.178:8088/1234/livestream -sa avatar.ogg

srs_bench日志: [trace] 2023/03/28 10:55:21.998409 Run benchmark with delay=50, al=true, twcc=true, publish(url=webrtc://192.168.88.178:8088/1234/livestream, sa=avatar.ogg, sv=, fps=0) [trace] 2023/03/28 10:55:21.998626 [126462][1000] Run publish url=webrtc://192.168.88.178:8088/1234/livestream, audio=avatar.ogg, video=, fps=0, audio-level=true, twcc=true [trace] 2023/03/28 10:55:22.001240 [126462][1000] Set offer {offer v=0 o=- 7392817501431756607 1679972122 IN IP4 0.0.0.0 s=- t=0 0 a=fingerprint:sha-256 61:27:EB:79:59:86:D6:76:39:0A:AC:11:68:6B:DC:11:33:C9:6F:D7:F0:40:91:FC:71:29:44:65:03:3C:15:49 a=group:BUNDLE 0 m=audio 9 UDP/TLS/RTP/SAVPF 111 9 0 8 c=IN IP4 0.0.0.0 a=setup:actpass a=mid:0 a=ice-ufrag:VjuPZtqBmoPzUSZP a=ice-pwd:nzCKhKOKsOGCimMJxLzCTjCrOjeSmeuH a=rtcp-mux a=rtcp-rsize a=rtpmap:111 opus/48000/2 a=fmtp:111 minptime=10;useinbandfec=1 a=rtpmap:9 G722/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id a=extmap:4 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=ssrc:3526003795 cname:pion a=ssrc:3526003795 msid:pion audio a=ssrc:3526003795 mslabel:pion a=ssrc:3526003795 label:audio a=msid:pion audio a=sendrecv 0xc000171440} [trace] 2023/03/28 10:55:22.001387 [126462][1000] Request url api=http://192.168.88.178:8088/janus/ with {"janus":"create","transaction":"ipeaoxkhlzii"} [trace] 2023/03/28 10:55:22.003156 [126462][1000] Response from http://192.168.88.178:8088/janus/ is {"data":{"id":5493304360137365},"janus":"success","transaction":"ipeaoxkhlzii"} [trace] 2023/03/28 10:55:22.003197 [126462][1000] Parse create sessionID=5493304360137365 [trace] 2023/03/28 10:55:22.003224 [126462][1000] Request url api=http://192.168.88.178:8088/janus/5493304360137365 with {"janus":"attach","opaque_id":"zctdtwpnnqih","plugin":"janus.plugin.videoroom","transaction":"csidqvfknpzr"} [trace] 2023/03/28 10:55:22.003332 [126462][1000] Polling: Request url api=http://192.168.88.178:8088/janus/5493304360137365?rid=1679972122003&maxev=1 [trace] 2023/03/28 10:55:22.019645 [126462][1000] Response from http://192.168.88.178:8088/janus/5493304360137365 is {"data":{"id":3354791645369246},"janus":"success","session_id":5493304360137365,"transaction":"csidqvfknpzr"} [trace] 2023/03/28 10:55:22.019712 [126462][1000] Parse create handleID=3354791645369246 [trace] 2023/03/28 10:55:22.020122 [126462][1000] Request url api=http://192.168.88.178:8088/janus/5493304360137365/3354791645369246 with {"janus":"message","transaction":"xywwwepgscdy","body":{"request":"join","ptype":"publisher","room":1234,"display":"livestream"}} [trace] 2023/03/28 10:55:22.021810 [126462][1000] Polling: Response from http://192.168.88.178:8088/janus/5493304360137365?rid=1679972122003&maxev=1 is {"janus":"event","plugindata":{"data":{"description":"Demo Room","id":1391934482954362,"private_id":389113390,"publishers":[],"room":1234,"videoroom":"joined"},"plugin":"janus.plugin.videoroom"},"sender":3354791645369246,"session_id":5493304360137365,"transaction":"xywwwepgscdy"} [trace] 2023/03/28 10:55:22.021856 [126462][1000] Polling: Reply tid=xywwwepgscdy ok, {"janus":"event","plugindata":{"data":{"description":"Demo Room","id":1391934482954362,"private_id":389113390,"publishers":[],"room":1234,"videoroom":"joined"},"plugin":"janus.plugin.videoroom"},"sender":3354791645369246,"session_id":5493304360137365,"transaction":"xywwwepgscdy"} [trace] 2023/03/28 10:55:22.021879 [126462][1000] Polling: Request url api=http://192.168.88.178:8088/janus/5493304360137365?rid=1679972122021&maxev=1 [trace] 2023/03/28 10:55:22.022271 [126462][1000] Response from http://192.168.88.178:8088/janus/5493304360137365/3354791645369246 is {"janus":"ack","session_id":5493304360137365,"transaction":"xywwwepgscdy"} [trace] 2023/03/28 10:55:22.022354 [126462][1000] Response tid=xywwwepgscdy ack [trace] 2023/03/28 10:55:22.022445 [126462][1000] Async response tid=xywwwepgscdy, reply={"janus":"event","plugindata":{"data":{"description":"Demo Room","id":1391934482954362,"private_id":389113390,"publishers":[],"room":1234,"videoroom":"joined"},"plugin":"janus.plugin.videoroom"},"sender":3354791645369246,"session_id":5493304360137365,"transaction":"xywwwepgscdy"} [trace] 2023/03/28 10:55:22.023074 [126462][1000] Join as publisher room=1234, display=livestream, tid=xywwwepgscdy ok, event=event, plugin=joined, id=1391934482954362, private=389113390, publishers=0 [trace] 2023/03/28 10:55:22.023339 [126462][1000] Request url api=http://192.168.88.178:8088/janus/5493304360137365/3354791645369246 with {"janus":"message","transaction":"seyyjdibcopf","body":{"request":"configure","video":true,"audio":true},"jsep":{"type":"offer","sdp":"v=0\r\no=- 7392817501431756607 1679972122 IN IP4 0.0.0.0\r\ns=-\r\nt=0 0\r\na=fingerprint:sha-256 61:27:EB:79:59:86:D6:76:39:0A:AC:11:68:6B:DC:11:33:C9:6F:D7:F0:40:91:FC:71:29:44:65:03:3C:15:49\r\na=group:BUNDLE 0\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111 9 0 8\r\nc=IN IP4 0.0.0.0\r\na=setup:actpass\r\na=mid:0\r\na=ice-ufrag:VjuPZtqBmoPzUSZP\r\na=ice-pwd:nzCKhKOKsOGCimMJxLzCTjCrOjeSmeuH\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:111 opus/48000/2\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=rtpmap:9 G722/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:2 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:4 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=ssrc:3526003795 cname:pion\r\na=ssrc:3526003795 msid:pion audio\r\na=ssrc:3526003795 mslabel:pion\r\na=ssrc:3526003795 label:audio\r\na=msid:pion audio\r\na=sendrecv\r\n"}} [trace] 2023/03/28 10:55:22.026667 [126462][1000] Response from http://192.168.88.178:8088/janus/5493304360137365/3354791645369246 is {"janus":"ack","session_id":5493304360137365,"transaction":"seyyjdibcopf"} [trace] 2023/03/28 10:55:22.026689 [126462][1000] Response tid=seyyjdibcopf ack [trace] 2023/03/28 10:55:22.026743 [126462][1000] Polling: Response from http://192.168.88.178:8088/janus/5493304360137365?rid=1679972122021&maxev=1 is {"janus":"event","jsep":{"sdp":"v=0\r\no=- 7392817501431756607 1679972122 IN IP4 192.168.88.178\r\ns=VideoRoom 1234\r\nt=0 0\r\na=group:BUNDLE 0\r\na=extmap-allow-mixed\r\na=msid-semantic: WMS janus\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111\r\nc=IN IP4 192.168.88.178\r\na=recvonly\r\na=mid:0\r\na=rtcp-mux\r\na=ice-ufrag:92VL\r\na=ice-pwd:/yi94UfnBQ+vnCpw0bp2Sg\r\na=ice-options:trickle\r\na=fingerprint:sha-256 C9:A0:1E:EA:5B:0C:FE:39:FB:12:EF:48:31:20:C6:E4:56:22:2E:5E:B4:47:66:16:B4:4F:03:99:50:18:61:21\r\na=setup:active\r\na=rtpmap:111 opus/48000/2\r\na=fmtp:111 useinbandfec=1\r\na=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:2 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:4 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=msid:janus janusa0\r\na=ssrc:806311391 cname:janus\r\na=ssrc:806311391 msid:janus janusa0\r\na=ssrc:806311391 mslabel:janus\r\na=ssrc:806311391 label:janusa0\r\na=candidate:1 1 udp 2015363327 192.168.88.178 36221 typ host\r\na=end-of-candidates\r\n","type":"answer"},"plugindata":{"data":{"audio_codec":"opus","configured":"ok","room":1234,"videoroom":"event"},"plugin":"janus.plugin.videoroom"},"sender":3354791645369246,"session_id":5493304360137365,"transaction":"seyyjdibcopf"} [trace] 2023/03/28 10:55:22.026785 [126462][1000] Polling: Reply tid=seyyjdibcopf ok, {"janus":"event","jsep":{"sdp":"v=0\r\no=- 7392817501431756607 1679972122 IN IP4 192.168.88.178\r\ns=VideoRoom 1234\r\nt=0 0\r\na=group:BUNDLE 0\r\na=extmap-allow-mixed\r\na=msid-semantic: WMS janus\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111\r\nc=IN IP4 192.168.88.178\r\na=recvonly\r\na=mid:0\r\na=rtcp-mux\r\na=ice-ufrag:92VL\r\na=ice-pwd:/yi94UfnBQ+vnCpw0bp2Sg\r\na=ice-options:trickle\r\na=fingerprint:sha-256 C9:A0:1E:EA:5B:0C:FE:39:FB:12:EF:48:31:20:C6:E4:56:22:2E:5E:B4:47:66:16:B4:4F:03:99:50:18:61:21\r\na=setup:active\r\na=rtpmap:111 opus/48000/2\r\na=fmtp:111 useinbandfec=1\r\na=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:2 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:4 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=msid:janus janusa0\r\na=ssrc:806311391 cname:janus\r\na=ssrc:806311391 msid:janus janusa0\r\na=ssrc:806311391 mslabel:janus\r\na=ssrc:806311391 label:janusa0\r\na=candidate:1 1 udp 2015363327 192.168.88.178 36221 typ host\r\na=end-of-candidates\r\n","type":"answer"},"plugindata":{"data":{"audio_codec":"opus","configured":"ok","room":1234,"videoroom":"event"},"plugin":"janus.plugin.videoroom"},"sender":3354791645369246,"session_id":5493304360137365,"transaction":"seyyjdibcopf"} [trace] 2023/03/28 10:55:22.026807 [126462][1000] Polling: Request url api=http://192.168.88.178:8088/janus/5493304360137365?rid=1679972122026&maxev=1 [trace] 2023/03/28 10:55:22.026905 [126462][1000] Async response tid=seyyjdibcopf, reply={"janus":"event","jsep":{"sdp":"v=0\r\no=- 7392817501431756607 1679972122 IN IP4 192.168.88.178\r\ns=VideoRoom 1234\r\nt=0 0\r\na=group:BUNDLE 0\r\na=extmap-allow-mixed\r\na=msid-semantic: WMS janus\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111\r\nc=IN IP4 192.168.88.178\r\na=recvonly\r\na=mid:0\r\na=rtcp-mux\r\na=ice-ufrag:92VL\r\na=ice-pwd:/yi94UfnBQ+vnCpw0bp2Sg\r\na=ice-options:trickle\r\na=fingerprint:sha-256 C9:A0:1E:EA:5B:0C:FE:39:FB:12:EF:48:31:20:C6:E4:56:22:2E:5E:B4:47:66:16:B4:4F:03:99:50:18:61:21\r\na=setup:active\r\na=rtpmap:111 opus/48000/2\r\na=fmtp:111 useinbandfec=1\r\na=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:2 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:4 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=msid:janus janusa0\r\na=ssrc:806311391 cname:janus\r\na=ssrc:806311391 msid:janus janusa0\r\na=ssrc:806311391 mslabel:janus\r\na=ssrc:806311391 label:janusa0\r\na=candidate:1 1 udp 2015363327 192.168.88.178 36221 typ host\r\na=end-of-candidates\r\n","type":"answer"},"plugindata":{"data":{"audio_codec":"opus","configured":"ok","room":1234,"videoroom":"event"},"plugin":"janus.plugin.videoroom"},"sender":3354791645369246,"session_id":5493304360137365,"transaction":"seyyjdibcopf"} [trace] 2023/03/28 10:55:22.026994 [126462][1000] Configure publisher offer=841B, tid=seyyjdibcopf ok, event=event, plugin=event, answer=909B [trace] 2023/03/28 10:55:22.027403 [126462][1000] Request url api=http://192.168.88.178:8088/janus/5493304360137365/3354791645369246 with {"janus":"message","transaction":"bpqelhenofgn","body":{"request":"unpublish"}} [trace] 2023/03/28 10:55:22.028398 [126462][1000] Response from http://192.168.88.178:8088/janus/5493304360137365/3354791645369246 is {"janus":"ack","session_id":5493304360137365,"transaction":"bpqelhenofgn"} [trace] 2023/03/28 10:55:22.028425 [126462][1000] UnPublish tid=bpqelhenofgn done [trace] 2023/03/28 10:55:22.028441 [126462][1000] Polling: Response from http://192.168.88.178:8088/janus/5493304360137365?rid=1679972122026&maxev=1 is {"janus":"event","plugindata":{"data":{"room":1234,"unpublished":"ok","videoroom":"event"},"plugin":"janus.plugin.videoroom"},"sender":3354791645369246,"session_id":5493304360137365,"transaction":"bpqelhenofgn"} [trace] 2023/03/28 10:55:22.028441 [126462][1000] Request url api=http://192.168.88.178:8088/janus/5493304360137365/3354791645369246 with {"janus":"detach","transaction":"embyolycnpms"} [warn] 2023/03/28 10:55:22.029142 [126462][1000] Polling: Handle call event fail {"janus":"event","plugindata":{"data":{"room":1234,"unpublished":"ok","videoroom":"event"},"plugin":"janus.plugin.videoroom"},"sender":3354791645369246,"session_id":5493304360137365,"transaction":"bpqelhenofgn"}, err json: cannot unmarshal string into Go struct field .plugindata.data.unpublished of type uint64 [trace] 2023/03/28 10:55:22.029156 [126462][1000] Polling: Request url api=http://192.168.88.178:8088/janus/5493304360137365?rid=1679972122029&maxev=1 [trace] 2023/03/28 10:55:22.030274 [126462][1000] Response from http://192.168.88.178:8088/janus/5493304360137365/3354791645369246 is {"janus":"success","session_id":5493304360137365,"transaction":"embyolycnpms"} [trace] 2023/03/28 10:55:22.030282 [126462][1000] Polling: Response from http://192.168.88.178:8088/janus/5493304360137365?rid=1679972122029&maxev=1 is {"janus":"hangup","reason":"Close PC","sender":3354791645369246,"session_id":5493304360137365} [warn] 2023/03/28 10:55:22.030315 [126462][1000] Polling: Unknown janus=hangup {"janus":"hangup","reason":"Close PC","sender":3354791645369246,"sessionid":5493304360137365} [trace] 2023/03/28 10:55:22.030328 [126462][1000] Polling: Request url api=http://192.168.88.178:8088/janus/5493304360137365?rid=1679972122030&maxev=1 [trace] 2023/03/28 10:55:22.030286 [126462][1000] Detach tid=embyolycnpms done **[warn] 2023/03/28 10:55:22.030955 Run err unable to start track, codec is not supported by remote_** Set answer v=0 o=- 7392817501431756607 1679972122 IN IP4 192.168.88.178 s=VideoRoom 1234 t=0 0 a=group:BUNDLE 0 a=extmap-allow-mixed a=msid-semantic: WMS janus m=audio 9 UDP/TLS/RTP/SAVPF 111 c=IN IP4 192.168.88.178 a=recvonly a=mid:0 a=rtcp-mux a=ice-ufrag:92VL a=ice-pwd:/yi94UfnBQ+vnCpw0bp2Sg a=ice-options:trickle a=fingerprint:sha-256 C9:A0:1E:EA:5B:0C:FE:39:FB:12:EF:48:31:20:C6:E4:56:22:2E:5E:B4:47:66:16:B4:4F:03:99:50:18:61:21 a=setup:active a=rtpmap:111 opus/48000/2 a=fmtp:111 useinbandfec=1 a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id a=extmap:4 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=msid:janus janusa0 a=ssrc:806311391 cname:janus a=ssrc:806311391 msid:janus janusa0 a=ssrc:806311391 mslabel:janus a=ssrc:806311391 label:janusa0 a=candidate:1 1 udp 2015363327 192.168.88.178 36221 typ host a=end-of-candidates

github.com/ossrs/srs-bench/janus.startPublish /home/hmm/work/hjgh/open_media_server/srs-bench-feature-rtc/janus/publisher.go:201 github.com/ossrs/srs-bench/janus.Run.func2 /home/hmm/work/hjgh/open_media_server/srs-bench-feature-rtc/janus/janus.go:185 runtime.goexit /opt/go/src/runtime/asm_amd64.s:1571 [trace] 2023/03/28 10:55:22.049160 Done

请教下,answer回的音频codec(a=rtpmap:111 opus/48000/2)与offer中的一致,为何还会出现codec is not supported by remote的报错?

xunlujiehuo commented 1 year ago

楼主遇到这个问题是如何解决的,我现在也遇到这个问题了

ewan1988 commented 1 year ago

sdp中fmtp两边不一致的原因,建议pion库升级到新版本,这个pion库比较旧

xunlujiehuo commented 1 year ago

楼主能详细说一下如何升级吗,对go不太了解。我的理解有两种一种手动在vendor/github.com/poin手动下载需要的库,第二种是将go.mod,require,和go.sum中的poin的版本升级一下嘛

xunlujiehuo commented 1 year ago

sdp中fmtp两边不一致的原因,建议pion库升级到新版本,这个pion库比较旧

楼主我将pion/里的十几种库都更新了一遍,报了很多错,有指定需要更新pion的哪几种库吗

xunlujiehuo commented 1 year ago

sdp中fmtp两边不一致的原因,建议pion库升级到新版本,这个pion库比较旧

楼主我将pion/里的十几种库都更新了一遍,报了很多错,有指定需要更新pion的哪几种库吗

xunlujiehuo commented 1 year ago

sdp中fmtp两边不一致的原因,建议pion库升级到新版本,这个pion库比较旧 因为pion里面库比较多,升级没有统一的版本,编译出现比较多的问题

ewan1988 commented 1 year ago

sdp中fmtp两边不一致的原因,建议pion库升级到新版本,这个pion库比较旧 因为pion里面库比较多,升级没有统一的版本,编译出现比较多的问题

go语言不熟悉的话不建议用这个工具,因为有些pion的api用法已经不一样了,更新pion库后需要修改srs_bench源码。

xunlujiehuo commented 1 year ago

太坑了,可惜已经花了很长时间了,现在能测试了,想再向前辈您请教下,两个问题

  1. -sr -pr 这两种拉流推流, 我写的是 拉流 ./objs/srsbench -sfu janus -sr webrtc://192.168.0.160:8088/2345/livestream%d -fps 25 -sn 100 -nn 100 ,然后推流也对于为 ./objs/srsbench -sfu janus -pr webrtc://192.168.0.160:8088/2345/livestream%d -sv avatar.h264 -fps 25 -sn 100。 我理解的这个应该是100人的会议,100个推流,以及针对于每个人应该有99个拉流。 但是这和srs-bench的--help中 理解不太一致,向问您我的理解正确吗?
  2. 我只能通过丢包来看会议是否正常,我用网页版入会最多可以打开一百多个网页就是极限了,但是我应该如何保证我大量压测的情况下,janus存在的会议是正常的,特别是测一个会议室能最大容量时候,怎样才能确认会议是正常的。
xunlujiehuo commented 1 year ago

前辈可以解答一下吗

xunlujiehuo commented 1 year ago

想有偿购买更改过的版本