# log **Repository Path**: rainfly123/log ## Basic Information - **Project Name**: log - **Description**: No description available - **Primary Language**: Python - **License**: AFL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-28 - **Last Updated**: 2021-03-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README model.train() 告诉模型这是训练模式 model.eval() 告诉模型这是测试模式 with torch.no_grad() 测试评估模式时,指明所有Tensor 不自动求导。 torch.cat() 按指定维度拼接矩阵 torch.view() 更改矩阵维度,但是总体数量一致。比如把[1,2,3,4] -->[[1,2],[3,4]] # SRS 编译 1. 3rdparty/libsrtp-2.0.0.zip test/utils.c buf_string 需要加static # SRS WebRTC #Offer POST http://localhost:1985/rtc/v1/play/ Origin: http://localhost:8080 Referer: httpL//localhost:8000/players/rtc_player.html { api:"http://localhost:1985/rtc/v1/play/" clientip: null sdp: "v=0 ↵o=- 864050646350021556 2 IN IP4 127.0.0.1 ↵s=- ↵t=0 0 ↵a=group:BUNDLE 0 1 ↵a=msid-semantic: WMS ↵m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126 ↵c=IN IP4 0.0.0.0 ↵a=rtcp:9 IN IP4 0.0.0.0 ↵a=ice-ufrag:eNMo ↵a=ice-pwd:SjopMx1qOHSZMseM6j+h7iI1 ↵a=ice-options:trickle ↵a=fingerprint:sha-256 FA:B0:B2:E9:CB:C9:98:A4:D1:BE:21:72:81:AF:DE:4D:C3:CA:5C:81:45:18:F6:8E:F8:A1:FD:B6:C6:87:84:AE ↵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=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id ↵a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id ↵a=recvonly ↵a=rtcp-mux ↵a=rtpmap:111 opus/48000/2 ↵a=rtcp-fb:111 transport-cc ↵a=fmtp:111 minptime=10;useinbandfec=1 ↵a=rtpmap:103 ISAC/16000 ↵a=rtpmap:104 ISAC/32000 ↵a=rtpmap:9 G722/8000 ↵a=rtpmap:0 PCMU/8000 ↵a=rtpmap:8 PCMA/8000 ↵a=rtpmap:106 CN/32000 ↵a=rtpmap:105 CN/16000 ↵a=rtpmap:13 CN/8000 ↵a=rtpmap:110 telephone-event/48000 ↵a=rtpmap:112 telephone-event/32000 ↵a=rtpmap:113 telephone-event/16000 ↵a=rtpmap:126 telephone-event/8000 ↵m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 122 102 121 127 120 125 107 108 109 124 119 123 ↵c=IN IP4 0.0.0.0 ↵a=rtcp:9 IN IP4 0.0.0.0 ↵a=ice-ufrag:eNMo ↵a=ice-pwd:SjopMx1qOHSZMseM6j+h7iI1 ↵a=ice-options:trickle ↵a=fingerprint:sha-256 FA:B0:B2:E9:CB:C9:98:A4:D1:BE:21:72:81:AF:DE:4D:C3:CA:5C:81:45:18:F6:8E:F8:A1:FD:B6:C6:87:84:AE ↵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:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay ↵a=extmap:11 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:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id ↵a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id ↵a=recvonly ↵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:98 VP9/90000 ↵a=rtcp-fb:98 goog-remb ↵a=rtcp-fb:98 transport-cc ↵a=rtcp-fb:98 ccm fir ↵a=rtcp-fb:98 nack ↵a=rtcp-fb:98 nack pli ↵a=fmtp:98 profile-id=0 ↵a=rtpmap:99 rtx/90000 ↵a=fmtp:99 apt=98 ↵a=rtpmap:100 VP9/90000 ↵a=rtcp-fb:100 goog-remb ↵a=rtcp-fb:100 transport-cc ↵a=rtcp-fb:100 ccm fir ↵a=rtcp-fb:100 nack ↵a=rtcp-fb:100 nack pli ↵a=fmtp:100 profile-id=2 ↵a=rtpmap:101 rtx/90000 ↵a=fmtp:101 apt=100 ↵a=rtpmap:122 VP9/90000 ↵a=rtcp-fb:122 goog-remb ↵a=rtcp-fb:122 transport-cc ↵a=rtcp-fb:122 ccm fir ↵a=rtcp-fb:122 nack ↵a=rtcp-fb:122 nack pli ↵a=fmtp:122 profile-id=1 ↵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:121 rtx/90000 ↵a=fmtp:121 apt=102 ↵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=0;profile-level-id=42001f ↵a=rtpmap:120 rtx/90000 ↵a=fmtp:120 apt=127 ↵a=rtpmap:125 H264/90000 ↵a=rtcp-fb:125 goog-remb ↵a=rtcp-fb:125 transport-cc ↵a=rtcp-fb:125 ccm fir ↵a=rtcp-fb:125 nack ↵a=rtcp-fb:125 nack pli ↵a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f ↵a=rtpmap:107 rtx/90000 ↵a=fmtp:107 apt=125 ↵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:124 red/90000 ↵a=rtpmap:119 rtx/90000 ↵a=fmtp:119 apt=124 ↵a=rtpmap:123 ulpfec/90000 ↵" streamurl: "webrtc://localhost/live/livestream" } # Answer { code: 0 sdp: "v=0 ↵o=SRS/4.0.65(Leo) 94546918100640 2 IN IP4 0.0.0.0 ↵s=SRSPlaySession ↵t=0 0 ↵a=ice-lite ↵a=group:BUNDLE 0 1 ↵a=msid-semantic: WMS live/livestream ### ↵m=audio 9 UDP/TLS/RTP/SAVPF 111 ↵c=IN IP4 0.0.0.0 ↵a=ice-ufrag:q5049861 ↵a=ice-pwd:67574412lu951393e1w8w315p3c3730j ↵a=fingerprint:sha-256 D7:D0:5D:9B:58:CE:35:79:AE:EE:0E:62:F4:2D:77:73:AA:5B:50:5E:3C:CA:3A:8C:14:57:5A:9F:6D:D7:89:86 ↵a=setup:passive ↵a=mid:0 ↵a=sendonly ↵a=rtcp-mux ↵a=rtcp-rsize ↵a=rtpmap:111 opus/48000/2 ↵a=ssrc:20111096 cname:v5834e73921ryurq ↵a=ssrc:20111096 label:audio-je5822i0 ↵a=candidate:0 1 udp 2130706431 192.168.43.92 8000 typ host generation 0 ↵m=video 9 UDP/TLS/RTP/SAVPF 125 ↵c=IN IP4 0.0.0.0 ↵a=ice-ufrag:q5049861 ↵a=ice-pwd:67574412lu951393e1w8w315p3c3730j ↵a=fingerprint:sha-256 D7:D0:5D:9B:58:CE:35:79:AE:EE:0E:62:F4:2D:77:73:AA:5B:50:5E:3C:CA:3A:8C:14:57:5A:9F:6D:D7:89:86 ↵a=setup:passive ↵a=mid:1 ↵a=sendonly ↵a=rtcp-mux ↵a=rtcp-rsize ### ↵a=rtpmap:125 H264/90000 ↵a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f ↵a=ssrc:20111097 cname:v5834e73921ryurq ↵a=ssrc:20111097 label:video-c6z4l7j4 ↵a=candidate:0 1 udp 2130706431 192.168.43.92 8000 typ host generation 0 ↵" server: "vid-1991-537" sessionid: "q5049861:eNMo" } # =fmtp:125 packetization-mode=1;profile-level-id=42c015;sprop-parameter-sets=Z0LAFdkBQfs BagwMDUoAAAMAAgAAAwB5HixckA==,aMuMsg==\ 添加以上信息 SRS 崩溃了 level-asymmetry-allowed=1 必须要有,否则SRS 也崩溃 sprop-parameter-sets 不能有 SDP 里的 profile-level-id 首先我们需要了解一下 SDP 里 profile-level-id 的含义,比如 SDP 里会有如下两行: a=fmtp:96 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640c1f ... a=fmtp:98 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f profile-level-id=640c1f 和 profile-level-id=42e01f 就是两种 H.264 的 Profile 和 Level 组合,它可以分为三部分,每部分为两个十六进制数字,从左至右依次为 profile_idc, profile_iop, level_idc。 通常我们只需要关注 profile_idc 和 level_idc,它们都是十六进制数字,其十进制值有明确定义。 比如 profile_idc 0x64 = 100,100 就是 High Profile 的编号值,0x42 = 66,66 就是 (Constrained) Baseline Profile 的编号值。再看 level_idc,0x1f = 31,即 Level 3.1。 更多关于 profile-level-id 的解释,可以查看 SDP Profile-level-id 解析这篇博客。 基于SIP协议的VOIP通信,该字段通常位于视频协商sdp报文中,如: video 23456 RTP/AVP 121 rtpmap:121 H264/90000 fmtp: 121 profile-level-id=42801E; packetization-mode=1 42801E分三部分 0x42 66 0x80 1000 0000 (二进制) 0x1E 30 对应profile_idc(8 bits)、profile_iop(8 bits)、level_idc(8 bits),含义如下: profile_idc:(16进制) 66 Baseline profile (VOIP中常用这个) 77 Main profile 88 Extended profile profile_iop:(8位分别意义) constraint_set0_flag 1代表编码的视频序列完全遵从A.2.1所有条款,0不一定。 constraint_set1 _flag 1代表编码的视频序列完全遵从A.2.2所有条款,0不一定。 constraint_set2_flag 1代表编码的视频序列完全遵从A.2.3所有条款,0不一定。 注意:当上面3位有任意一位设置为1时,意味着视频序列完全遵从A.2所有条款,当proifle_idc为44、100、110、122或244时,此三位必须为0。 constraint_set3_flag (1)当profile_idc为66、77或88且level_idc为11时,1代表遵从Annex A for level 1b,0代表遵从Annex for level 1.1。 (2)当profile_idc为100或110,1代表遵从Annex A for the High 10 Intra profile,0不一定。 (3)当profile_idc为122,1代表遵从Annex A for the High 4:2:2 Intra profile,0不一定。 (4)当profile_idc为44,此数据位应设置为1,0是错误的。 (5)当profile_idc为244,1代表遵从Annex A for the High 4:4:4 Intra profile,0不一定。 (6)当profile_idc为66、77或88且level_idc不为11时,1保留给未来使用,应设置为0,同时解码器应该忽略此数据位的值。 constraint_set4_flag (1)当profile_idc为77、88或100,1代表frame_mbs_only_flag等于1,0则表示frame_mbs_only_flag可能1可能0。 (2)当profile_idc为118或128,,1代表编码的视频序列遵从H.10.1.1的所有条款,0不一定。 (3)当profile_idc不为以上两条时,1保留给未来使用,应设置为0,同时解码器应该忽略此数据位的值。 constraint_set5_flag (1)当profile_idc为77、88或100,1代表Bslice类型不存在于编码的视频序列中,0不一定。 (2)当profile_idc为118,1代表遵从H.10.1.2的所有条款,0不一定。 (3)当profile_idc不为以上两条时,1保留给未来使用,应设置为0,同时解码器应该忽略此数据位的值。 constraint_set6_flag 保留,设置为0。 constraint_set7_flag 保留,设置为0。 levle_idc: 等级 最大比特率(BP、MP、EP)kbit/s 高分辨率示例@最高帧率(最大存储帧) 1 64 128*96@30.9(8) 176*144@15.0(4) 1b 128 128*96@30.9(8) 176*144@15.0(4) 1.1 192 176*144@30.3(9) 320*240@10.0(3) 352*288@7.5(2) 1.2 384 320*240@20.0(7) 352*288@15.2(6) 1.3 768 320*240@36.0(7) 352*288@30.0(6) 2 2000 320*240@36.0(7) 352*288@30.0(6) 2.1 4000 352*480@30.0(7) 352*576@25.0(6) 2.2 4000 352*480@30.7(12) 352*576@25.6(10) 720*480@15.0(6) 720*576@12.5(5) 3 10000 352*480@61.4(12) 352*576@51.1(10) 720*480@30.0(6) 720*576@25.0(5) 3.1 14000 720*480@80.0(13) 720*576@66.7(11) 1280*720@30.0(5) 3.2 20000 1280*720@60.0(5) 1280*1024@42.2(4) 4 20000 1280*720@68.3(9) 1920*1080@30.1(4) 2048*1024@30.0(4) 4.1 50000 1280*720@68.3(9) 1920*1080@30.1(4) 2048*1024@30.0(4) 4.2 50000 1280*720@145.1(9) 1920*1080@64.0(4) 2048*1080@60.0(4) 5 135000 1920*1080@72.3(13) 2048*1024@72.0(13) 2048*1080@67.8(12) 2560*1920@30.7(5) 3672*1536@26.7(5) 5.1 240000 1920*1080@120.5(16) 2560*1920@51.2(9) 3840*2160@31.7(5) 4096*2048@30.0(5) 4096*2160@28.5(5) 4096*2304@26.7(5) 5.2 240000 1920*1080@172.0(16) 2560*1920@108.0(9) 3840*2160@66.8(5) 4096*2048@63.3(5) 4096*2160@60.0(5) 4096*2304@56.3(5) 其在协商中的值=level_idc*10的16进制数,如上面的1E=30,就是等级3,另外packetization-mode表示载荷类型,范围0-2(0:NAL 1:非交错 2:交错,隔行扫描)。 # GSTREAMER --srs Sending offer: v=0 o=- 2771250770597509633 0 IN IP4 0.0.0.0 s=- t=0 0 a=ice-options:trickle a=group:BUNDLE video0 audio1 m=video 9 UDP/TLS/RTP/SAVPF 125 c=IN IP4 0.0.0.0 a=setup:actpass a=ice-ufrag:mi6Jn5p82EQjr/DO9AQxxEqpt+sDFRPn a=ice-pwd:u9BWxyCbjCWvrkEnQ53DVBYFSeayYYCA a=rtcp-mux a=rtcp-rsize a=sendrecv a=rtpmap:125 H264/90000 a=rtcp-fb:125 nack pli a=framerate:30 a=fmtp:125 packetization-mode=1;profile-level-id=42c015 a=ssrc:712087134 msid:user201198924@host-9f4bdcb6 webrtctransceiver0 a=ssrc:712087134 cname:user201198924@host-9f4bdcb6 a=mid:video0 a=fingerprint:sha-256 13:F8:C5:F3:75:2E:56:D4:80:AB:B1:D2:E7:BF:92:87:16:DC:4E:05:F2:3B:96:2E:EE:A4:49:68:55:CA:37:BC m=audio 0 UDP/TLS/RTP/SAVPF 111 c=IN IP4 0.0.0.0 a=setup:actpass a=ice-ufrag:mi6Jn5p82EQjr/DO9AQxxEqpt+sDFRPn a=ice-pwd:u9BWxyCbjCWvrkEnQ53DVBYFSeayYYCA a=bundle-only a=rtcp-mux a=rtcp-rsize a=sendrecv a=rtpmap:111 OPUS/48000/2 a=rtcp-fb:111 nack pli a=fmtp:111 sprop-maxcapturerate=48000;sprop-stereo=0 a=ssrc:4038046165 msid:user201198924@host-9f4bdcb6 webrtctransceiver1 a=ssrc:4038046165 cname:user201198924@host-9f4bdcb6 a=mid:audio1 a=fingerprint:sha-256 13:F8:C5:F3:75:2E:56:D4:80:AB:B1:D2:E7:BF:92:87:16:DC:4E:05:F2:3B:96:2E:EE:A4:49:68:55:CA:37:BC Received answer: v=0 o=SRS/4.0.65(Leo) 94530856265152 2 IN IP4 0.0.0.0 s=SRSPublishSession t=0 0 a=ice-lite a=group:BUNDLE audio1 video0 a=msid-semantic: WMS live/livestream m=audio 9 UDP/TLS/RTP/SAVPF 111 c=IN IP4 0.0.0.0 a=ice-ufrag:1h26nr68 a=ice-pwd:243k46905i638337962i81l3z53e5he7 a=fingerprint:sha-256 22:89:9D:85:12:CA:13:F8:B0:0E:3B:C5:11:12:CF:D3:AB:E3:33:99:AA:2B:82:A0:1E:7B:B0:64:0C:90:64:04 a=setup:passive a=mid:audio1 a=recvonly a=rtcp-mux a=rtcp-rsize a=rtpmap:111 OPUS/48000/2 a=rtcp-fb:111 nack pli a=candidate:0 1 udp 2130706431 192.168.43.92 8000 typ host generation 0 m=video 9 UDP/TLS/RTP/SAVPF 125 c=IN IP4 0.0.0.0 a=ice-ufrag:1h26nr68 a=ice-pwd:243k46905i638337962i81l3z53e5he7 a=fingerprint:sha-256 22:89:9D:85:12:CA:13:F8:B0:0E:3B:C5:11:12:CF:D3:AB:E3:33:99:AA:2B:82:A0:1E:7B:B0:64:0C:90:64:04 a=setup:passive a=mid:video0 a=recvonly a=rtcp-mux a=rtcp-rsize a=rtpmap:125 H264/90000 a=rtcp-fb:125 nack pli a=candidate:0 1 udp 2130706431 192.168.43.92 8000 typ host generation 0 # GSTREAM-GSTREAMER Sending offer: v=0 o=- 8295935960858362392 0 IN IP4 0.0.0.0 s=- t=0 0 a=ice-options:trickle a=group:BUNDLE video0 audio1 m=video 9 UDP/TLS/RTP/SAVPF 125 c=IN IP4 0.0.0.0 a=setup:actpass a=ice-ufrag:96CLWWE79sAPUldlQBxHyA/9krJqsLC6 a=ice-pwd:40JddnfQ0JC0L2tL2v/aaQ0534VhwF8e a=rtcp-mux a=rtcp-rsize a=sendrecv a=rtpmap:125 H264/90000 a=rtcp-fb:125 nack pli a=framerate:30 a=fmtp:125 packetization-mode=1;profile-level-id=42c015;sprop-parameter-sets=Z0LAFdkBQfsBagwMDUoAAAMAAgAAAwB5HixckA==,aMuMsg== a=ssrc:255265942 msid:user1524414216@host-925e301e webrtctransceiver0 a=ssrc:255265942 cname:user1524414216@host-925e301e a=mid:video0 a=fingerprint:sha-256 D9:F9:AD:E6:16:E6:AA:86:7B:C0:23:45:8A:20:83:C9:F5:DD:CA:D7:DE:64:B3:86:53:C1:4F:3E:D8:6C:86:52 m=audio 0 UDP/TLS/RTP/SAVPF 96 c=IN IP4 0.0.0.0 a=setup:actpass a=ice-ufrag:96CLWWE79sAPUldlQBxHyA/9krJqsLC6 a=ice-pwd:40JddnfQ0JC0L2tL2v/aaQ0534VhwF8e a=bundle-only a=rtcp-mux a=rtcp-rsize a=sendrecv a=rtpmap:96 OPUS/48000/2 a=rtcp-fb:96 nack pli a=fmtp:96 sprop-maxcapturerate=48000;sprop-stereo=0 a=ssrc:1473060281 msid:user1524414216@host-925e301e webrtctransceiver1 a=ssrc:1473060281 cname:user1524414216@host-925e301e a=mid:audio1 a=fingerprint:sha-256 D9:F9:AD:E6:16:E6:AA:86:7B:C0:23:45:8A:20:83:C9:F5:DD:CA:D7:DE:64:B3:86:53:C1:4F:3E:D8:6C:86:52 Received answer: v=0 o=- 3465236841583909292 2 IN IP4 127.0.0.1 s=- t=0 0 a=group:BUNDLE video0 audio1 a=msid-semantic: WMS o6r4zLW5ddW807kso5j1yXzkOjQfuea6NLBo m=video 9 UDP/TLS/RTP/SAVPF 125 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:iDu7 a=ice-pwd:bLxRFtq2LAOBfCeGZOf0uVEH a=ice-options:trickle a=fingerprint:sha-256 FD:B2:BC:D8:89:90:B4:9E:14:60:1F:10:D9:C7:B9:33:FA:EB:DC:A4:2A:63:1A:2E:AC:93:FF:27:70:39:53:FE a=setup:active a=mid:video0 a=sendrecv a=rtcp-mux a=rtcp-rsize a=rtpmap:125 H264/90000 a=rtcp-fb:125 nack pli a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e015 a=ssrc:710487494 cname:g0WXJZHtxHt6Idbu a=ssrc:710487494 msid:o6r4zLW5ddW807kso5j1yXzkOjQfuea6NLBo 066e1745-78c1-49df-b0ff-a0f0ea1fdeff a=ssrc:710487494 mslabel:o6r4zLW5ddW807kso5j1yXzkOjQfuea6NLBo a=ssrc:710487494 label:066e1745-78c1-49df-b0ff-a0f0ea1fdeff m=audio 9 UDP/TLS/RTP/SAVPF 96 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:iDu7 a=ice-pwd:bLxRFtq2LAOBfCeGZOf0uVEH a=ice-options:trickle a=fingerprint:sha-256 FD:B2:BC:D8:89:90:B4:9E:14:60:1F:10:D9:C7:B9:33:FA:EB:DC:A4:2A:63:1A:2E:AC:93:FF:27:70:39:53:FE a=setup:active a=mid:audio1 a=sendrecv a=rtcp-mux a=rtpmap:96 OPUS/48000/2 a=fmtp:96 minptime=10;useinbandfec=1 a=ssrc:3652908557 cname:g0WXJZHtxHt6Idbu a=ssrc:3652908557 msid:o6r4zLW5ddW807kso5j1yXzkOjQfuea6NLBo 126df883-bcfd-498d-8536-fda339069a3d a=ssrc:3652908557 mslabel:o6r4zLW5ddW807kso5j1yXzkOjQfuea6NLBo a=ssrc:3652908557 label:126df883-bcfd-498d-8536-fda339069a3d # Gstreamer 编译 git clone https://gitlab.freedesktop.org/gstreamer/gst-build.git meson build ninja -C build ninja -C build install pip3 install --user meson sudo apt install libgirepository-1.0-1 sudo apt install gobject-introspection sudo apt install libsrtp2-dev