通信中にKeyframeが欠損した場合、次のKeyframe受信まで映像が正常に表示できません。これを避けるため、次の点を確認して下さい。
- 受信側の再生アプリケーション起動後にRTPを送信開始する
- "/media/connections/#{media_connection_id}/events" を監視し "STREAM" イベント(*)発火後にRTPメディアを送信する
*このイベントは、STUNパケットを受信したタイミングで発火しますので、相手側がRTPパケットを送信していなくても、MediaStream確立に成功した時点で発火します。
時間内にSkyWayサーバに接続できない場合にクラッシュするようです。以下のようなケースが考えられます
- 名前解決が極端に遅い
- SkyWayサーバへの接続がfirewallで制限されている
- インターネットに接続されていない
payload typeの指定が間違っているとredirectされません。これはWebRTCのmediaはmultiprexされて送信されるため、payload typeをチェックすることでmediaを識別してredirectするためです。
x264encを利用した場合、H.264のChrome側で無視されるようです。OpenH264でエンコードすることにより表示されることを確認しています。 https://github.com/skyway/skyway-webrtc-gateway/issues/14
OpenH264でエンコードした映像をGStreamerで送信するサンプルコードを用意しています。 https://github.com/skyway/skyway-webrtc-gateway/blob/master/gst-sample-script/video_openh264_send.sh