mediasoup H264対応
mediasoupでH264コーデックで映像を配信しようとしたときの対処になります。
どうやらVP8とH264では挙動が違うようで、、困りますね。
ブラウザはchromeでバージョンは58.0を使用していまいた。
どうやら映像の送信でサーバまでは届いているようなのですが、受信時にエラーがあるみたいです。
しかもそのエラーがconsoleやサーバ側のログでわからないのが、しんどいですね。
原因はH264時のSDPのパラメータの設定が問題だった問題だったようです。
問題箇所のSDP
サーバ側
・・・ a=rtpmap:126 H264/90000 a=fmtp:126 packetization-mode=0 ・・・
クライアント側
・・・ a=rtpmap:126 H264/90000 a=fmtp:126 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f ・・・
ここの packetization-mode っていうのが違うようでダメだったみたいです。 クライアント側のpacketization-modeを0に設定を変更することで無事に繋がることができました
sdp = description.replace(/packetization-mode=1/g, 'packetization-mode=0');
こんな感じで、後はsetLocalDescriptionにsdpをセットすればOK、
ちなみにpacketization-modeっていうのはRTPペイロードタイプのプロパティか、レシーバ実装の機能を示しているようです。
下記、設定一覧です
値 | 内容 |
---|---|
0 | シングルNALモード(デフォルト) |
1 | 非インタリーブモード |
2 | インタリーブモード |
情報 : https://tools.ietf.org/html/rfc6184
ちなみにNALと言うのはH264の生のストリームデータを区切る処理階層のことを言うみたいです。(詳しくわかりません。すみません)
H264とVP8でいろいろと実装が違うみたいで、めんどくさいですね。
今後はどっちかに絞って実装するようにしましょうかね