WebRTC オーディオおよびビデオ通話 - SDP のビットレート制限パラメータを追加または変更します
ossrs サービスを設定する前に、次を確認できます: https://blog.csdn.net/gloryFlow/article/details/132257196
ossrs の音声通話とビデオ通話を呼び出すために iOS を実装する前に、次を確認できます: https://blog.csdn .net/gloryFlow/article/details/132262724
高解像度で画面に問題が表示されない前の WebRTC オーディオおよびビデオ通話については、https: //blog.csdn.net/gloryFlow/article/details/132240952を参照してください。
ここで、WebRTC オーディオおよびビデオ通話中に SDP のビットレート Bitrate を変更します。
1.SDPとは何ですか?
SDP はセッション記述プロトコル (セッション記述プロトコル) です。
SDP は 1 行以上の UTF-8 テキストで構成されます。各行は文字タイプで始まり、その後に等号 (=) が続き、その後に値または説明が含まれます。 構造化テキスト、その形式はタイプによって異なります。以下は SDP コンテンツの例です。
v=0
o=アリス 2890844526 2890844526 IN IP4
s=
c=IN IP4
t=0 0
m=オーディオ 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000
m=ビデオ 51372 RTP/AVP 31
a=rtpmap:31 H261 /90000
m=ビデオ 53000 RTP/AVP 32
a=rtpmap:32 MPV/90000
ローカルで入手した完全な SDP データは次のとおりです。
v=0
\no=SRS/6.0.64(Bee) 107408568903808 2 IN IP4 0.0.0.0
\ns=SRSPublishSession
\nt=0 0
\na=ice-lite
\na=group:BUNDLE 0 1
\na=msid-semantic : WMS ライブ/ライブストリーム
\nm=audio 9 UDP/TLS/RTP/SAVPF 111
\nc=IN IP4 0.0.0.0
\na=ice-fragment:4ahia260
\na=ice-pwd:11777k546394014cto09595g5em82339
\na=fingerprint:sha-256 26:AF:1F:AA:18:C0:4F:69:E3:19:B4:EF:9C:43:98:A9:E6:56:9A:2D:D4:2E:A8:31:D7: B1:C9:A1:08:CA:B2:13
\na=setup:passive
\na=mid:0
\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport -wide-cc-extensions-01
\na=recvonly
\na=rtcp-mux
\na=rtcp-rsize
\na=rtpmap:111 opus/48000/2
/ N N NY EPPPP:111,
301 ) 質問 質問 、10: 0 1 , 10-1
307444 \nm=video 9 UDP/TLS/RTP/SAVPF 96 127 \nc=IN IP4 0.0。 0.0 \na=ice-subfragment:4ahia260 \na=ice-pwd:11777k546394014cto09595g5em82339 \na=指紋 :sha-256 26:AF:1F:AA:18:C0:4F:69:E3:19:B4:EF:9C :43:98:A9:E6:56:9A:2D:D4:2E:A8: 31:D7:B1:C9:A1:08:CA:B2:13 \na=セットアップ:パッシブ \na=mid : 1 \na=extmap:3 http://www.ietf.org/id/draft-holmer -rmcat-transport-wide-cc-extensions-01 \na=recvonly \na=rtcp-mux \na=rtcp-rsize \ na=rtpmap:96 H264/90000
\na=rtcp-fb:96 トランスポート cc
\na=rtcp-fb:96 ナック
\na=rtcp-fb:96 ナック プリ
\na=fmtp:96 レベル非対称許可 = 1;パケット化モード = 1;プロファイル レベル ID=640c33
\na=rtpmap:127 red/90000
\na=candidate:0 1 udp 2130706431 169.254.136.162 8000 typ
ホスト世代 0 \na=candidate:1 1 udp 2130706431 192.168.10.100 8 000 typ ホスト世代 0
\n
上記のデータ形式からわかるように、
などの一般的な
m はメディアを表し、
m=audio はこの行が音声情報を記述することを意味します。
m=video は、この行がビデオ情報を記述することを意味します。
a は、a=candidate などの属性を表します。これは、この行が候補情報を記述することを意味します。
そして、解像度に関連するプロファイルレベルID 640c33が表示されます
2. SDP のビットレート制限パラメータを追加または変更します
次に、SDP のコード レート Bitrate を変更する必要があります。b=AS がない場合は、新しいものを追加します。
具体的なコードは以下の通り
+ (NSString *)setMediaBitrate:(NSString *)sdp media:(NSString *)media bitrate:(int)bitrate {
if (!(sdp && [sdp isKindOfClass:[NSString class]] && sdp.length > 0)) {
return sdp;
}
NSMutableArray *lines = [NSMutableArray arrayWithArray:[sdp componentsSeparatedByString:@"\n"]];
int line = -1;
for (int i = 0; i < lines.count; i++) {
NSString *start = [NSString stringWithFormat:@"m=%@",media];
if ([lines[i] hasPrefix:start]) {
line = i;
break;
}
}
if (line == -1) {
NSLog(@"Could not find the m line for %@", media);
return sdp;
}
NSLog(@"Found the m line for %@", media);
line++;
while ([lines[line] hasPrefix:@"i="] || [lines[line] hasPrefix:@"c="]) {
line++;
}
if ([lines[line] hasPrefix:@"b"]) {
NSLog(@"Replaced b line at line:%d", line);
lines[line] = [NSString stringWithFormat:@"b=AS:%d", bitrate];
return [lines componentsJoinedByString:@"\n"];
}
NSLog(@"Adding new b line before line:%d", line);
NSMutableArray *newLines = [NSMutableArray arrayWithArray:[lines subarrayWithRange:NSMakeRange(0, line)]];
NSMutableArray *aLeftLines = [NSMutableArray arrayWithArray:[lines subarrayWithRange:NSMakeRange(line, lines.count - line)]];
NSString *aLineStr = [NSString stringWithFormat:@"b=AS:%d", bitrate];
[newLines addObject:aLineStr];
NSMutableArray *resultLines = [NSMutableArray arrayWithCapacity:0];
[resultLines addObjectsFromArray:newLines];
[resultLines addObjectsFromArray:aLeftLines];
return [resultLines componentsJoinedByString:@"\n"];
}
レンダリング
3. まとめ
WebRTC オーディオおよびビデオ通話 - SDP のビットレート制限パラメーターを追加または変更します。内容が多く、不正確な記述があるかもしれませんが、ご容赦ください。
https://blog.csdn.net/gloryFlow/article/details/132263021
学習記録、日々改善を続けてください。