ソフトウェア受託開発ブログ 「医療用映像配信プラットフォームの配信遅延改善例」
- TOP
- エンジニアリングサービス
- 受託開発 事例
- ソフトウェア受託開発ブログ 「医療用映像配信プラットフォームの配信遅延改善例」
(このブログは、当社がYouTubeで公開している動画を文章に起こしたものです)
今回は、お客様がご自身で開発された医療用プラットフォームの映像配信遅延を改善した例をご紹介します。 このシステムは、VRカメラを入力とし、その後録画アップロードサーバーで処理を行い最後はHUD(ヘッドアップディスプレイ)やPC、タブレット等のアプリケーションにより映像を表示するというものでした。カメラから表示アプリまでの遅延が7秒あり、これを1秒以下に改善したい、というご相談をいただきました。

1.カメラからサーバーまでの遅延改善(キャプチャー機器の見直し)
お客様のシステムでは、カメラからサーバーの間で、エンコードされた出力映像をLAN経由(RTSP)で出力する過程に2~3秒かかっていました。当社では、出力をHD MIに変え、配信サーバーを挟む形にかえることでかなりの遅延を短縮しましたが、まだお客様の要求水準には達しませんでした。
2.サーバー内部の処理時間の短縮(OSSの見直し)
次に、サーバー内部のOSSと処理を見直しました。RTSPは、OSSから当社のミドルウェアライブラリ、「Z-PRO RTP/RTSP」に置き換えました。ここで、わずか 0. 2秒ではありますが、処理時間を短縮しました。
3.サーバーから視聴用アプリケーションまでの遅延改善(通信プロトコルの変更)
通信プロトコルを、HLSからRTSPに変えました。RTSPは、サーバー側、アプリ側(表示デバイス側)とも、Ze-PRO RTP/RTSPを使いました。さらにお客様がOSSを使って開発されたビューワーアプリケーションを、当社の高速化モジュールを使うなどして開発したビューワーに変更しました。この結果、トランスコード後のサーバー各種視聴用アプリケーションまでの配信にかかっていた4. 22秒を、0. 45秒に短縮しました。この劇的な変化が全体的な遅延改善に大きく貢献しました。
最終的な遅延改善結果
上記に加えこまごまとした工夫を加え低遅延化を追求し、最終的にはお客様のご要望である遅延量1秒未満を超え、カメラから表示まで0. 85秒という短縮を実現することができました。

この成果の要因は、 次の4点にまとめられると考えています。
- (1) 各標準規格などのプロトコルを的確に選択する
- (2) OSSを適材適所に使う
- (3) 自社製プロトコルスタック(ミドルウェアライブラリ)ならではの、最適化
- (4)当社の経験やノウハウを集成した設計資産の活用
しかし、最も重要なのは、正確な遅延時間を算出することでしょう。
その他 ストリーミングにありがちな遅延問題の例
低遅延を実現するための、ストリーミングにありがちな問題として、2例挙げます。
ありがちな問題その1
再生タイミングを正しく算出しているにもかかわらず、リップシンクがずれる、音声の遅延が次第に大きくなる、音声がブチブチ途切れる。
これらの解決策として、遅延時間を測定し域値以上になったらパケットを破棄するという方法があります。この場合音の途切れの頻度と遅延はトレードオフになりますので、閾値で調整することになるでしょう。
ありがちな問題その2
画像の乱れ。例えば、正常に再生できていた動画が、実行環境、条件を変更した途端に乱れが頻発する。
これはUDP転送であるがゆえに起こる問題でもあり、アプリケーションの受信処理が追いつかず、プロトコルスタック受信バッファがあふれることに起因しています。解決策として、フレームの分割送信のタイミングを調整、1フレームレート区間で均等に送信する、フレームレートやフレームサイズの調整などが挙げられます。また、その他にも、プロトコルスタック受信バッファサイズを変更、UDPの受信バッファサイズを最大フレームサイズに調整するなどの工夫もあります。特にUDPの受信バッファサイズを最大フレームサイズに調整すること、これは比較的簡単で効果が大きいと思います。ただし、実際に指定サイズ分が確保できているとは限らないことに注意する必要があります。
当社では、エンジニアリングサービスの一環として、ストリーミングが「遅い」、「つながらない」という課題をもつお客様に、コンサルティングも提供しています。お気軽にご相談ください。