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でいろいろと実装が違うみたいで、めんどくさいですね。
今後はどっちかに絞って実装するようにしましょうかね