Twilio VideoのInsights機能を活用してビデオ通話品質を向上する

この記事は、[Twilio Advent Calendar 2022](https://qiita.com/advent-calendar/2022/twilio)の11日目の記事となります。

2022-05-10 にTwilio VideoのVideo Insights機能が正式リリースされました。
https://www.twilio.com/blog/video-insights-is-now-generally-available-jp

今年一年のTwilioの振り返りとして、この機能に助けられたので、この機能を使って実際にビデオ通話の品質を改善した取り組みについて紹介したいと思います。なお実際の改善はチームメンバーとともに行いました。（というかチームメンバーの[@gogutan](https://twitter.com/gogutan )がすべて実施してくれて、わたしはその調査報告をここにポストしただけになります）

## どこが変わったか

まず下記のようにダッシュボード上で取得できる情報が圧倒的に増えました。
![スクリーンショット 2022-12-04 1.21.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29088/f8f9633c-88a8-4bef-49bc-38f2423415b8.png)

それぞれの個別Roomに対しても通話履歴としてパケットロス、ビットレートなど各種情報を取得することができるようになりました。
![スクリーンショット 2022-12-04 1.22.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29088/9738a921-47f1-c815-70fd-0808c07c42cd.png)

## Insightsの情報をもとに調査→改善したポイント

### その(1) 

まず不具合報告をもとに問題がありそうな通話をチェックしました。赤枠のところがAudio:4となっていて、すでに怪しいです。
![スクリーンショット 2022-12-04 1.25.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29088/2b3edb36-de6d-6961-616c-be9332dacdd2.png)

対象のパケットロスを見ると添付のようになっていました。
（ユーザーA）
![スクリーンショット 2022-12-04 1.31.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29088/6d782268-bfaf-883d-ca12-91518315a0ac.png)

Packet Loss の説明を見ると overloaded routersとhigh CPU load on the machineを解決する必要があるらしいです。

> Packet Loss
Packet loss is the measurement of packets that are expected but never arrive. High packet loss can result in frequent video freezing, video frame rate drops, and choppy audio. Packet loss is usually caused by overloaded routers or high CPU load on the machine. Packet loss might also occur [if there is a large number of routers in the connection path between a Participant and Twilio's servers](https://www.twilio.com/docs/video/tutorials/video-regions-and-global-low-latency#geolocation-and-quality).

https://www.twilio.com/docs/video/troubleshooting/insights#participant-summary


つづいて、[Video Regions and Global Low Latency \| Twilio](https://www.twilio.com/docs/video/tutorials/video-regions-and-global-low-latency#regions-and-gll)を読むと、Media Region の設定を`gll(Global Low Latency)`に変更すると、participantごとに適切なSignaling Regionが選択されるようになって通話品質が良くなる…かもしれないと気づき設定を変更しました。

（実際にビデオ通話は最初国内でテストしていたのですが、グローバルで接続するようになっていました）

下記のRoom Settingのところから変更できます。
![スクリーンショット 2022-12-04 1.34.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29088/2e383fec-71c4-c1a7-322a-54b7a0f2683d.png)

詳しく計測していないのですが、全体的にネットワークが遅いエリアに住むユーザーに関わる不具合報告は減ったように思います。


### その(2) 

若干、パケットロスの回数は減ったようなのですが、引き続き発生しているようでした。

（ユーザーA-before）
![スクリーンショット 2022-12-04 1.31.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29088/6d782268-bfaf-883d-ca12-91518315a0ac.png)
（ユーザーA-after）
![スクリーンショット 2022-12-04 1.37.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29088/40305e52-8fb6-9619-005d-115a3f3aa1a8.png)

問題がないユーザーのグラフは下記のような感じです。
![スクリーンショット 2022-12-04 1.39.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29088/cd23134e-66b2-2a6f-298e-543fd9701c52.png)

そこで同様のトラブル報告があるユーザーを集めて傾向を調査してみることにしました。

### その(3)

（ユーザーB）
![スクリーンショット 2022-12-04 1.41.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29088/e0ce6a67-a1d2-b974-df30-780730a6c88a.png)

（ユーザーC）
![スクリーンショット 2022-12-04 1.42.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29088/4d46643e-c712-e255-7cb3-0e0e58702f0e.png)

（ユーザーD）
![スクリーンショット 2022-12-04 1.43.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29088/5f0a45bd-3022-e4cf-cbc2-037870411790.png)

（ユーザーE）
![スクリーンショット 2022-12-04 1.44.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29088/8cb70848-fe66-3a70-80c2-7734b11283ea.png)

なんとなく傾向がみてきているのですが、手元で細い回線と旧型のPCを用意してデータも取ってみました。
![スクリーンショット 2022-12-04 1.45.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29088/d1bd3d68-73d6-ec26-44ff-982e897de7a6.png)

なお実際試してみた時のコメント
> 0.2Mbpsのテザリング回線と9年前のWindows機（↑のURLに貼っているスペック）でプログレスシートとビデオ通話を開いてみたんですが、めちゃくちゃ軽快に動作して驚きました。ビデオはさすがにfpsが落ちたり時々止まったりしますが、動作が重いみたいな感じではありませんでした👀

この確認で、Twilio Videoは低スペックなPCでも正常に動作するが、`回線速度に問題があるときは、パケットロスはAudioとVideo同時に発生し、ビデオのfpsが落ちて止まる`などの症状が見られることがわかりました。それに対して、報告があった中で一部のユーザーは不自然にAudioのパケットロスのみ発生している事に気づきます。これは回線速度以外の部分に問題がありそうです。つまり、`ハードウェアに何らかの問題があるとき、Audioのパケットロスのみ発生する`ことがあると言えそうです。

## 調査と対応策まとめ

調査からの対応索をまとめると下記のとおりです。

## Audioのみ不自然なパケットロスが発生しているユーザー
（ユーザーA）
![スクリーンショット 2022-12-04 1.37.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29088/40305e52-8fb6-9619-005d-115a3f3aa1a8.png)
（ユーザーB）
![スクリーンショット 2022-12-04 1.41.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29088/e0ce6a67-a1d2-b974-df30-780730a6c88a.png)

**これらのユーザーに対してはハードウェア、PCやカメラなどの設定を見直してもらうことにしました。**

## Audio, Videoともにパケットロスが発生しているユーザー
（ユーザーC）
![スクリーンショット 2022-12-04 1.42.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29088/4d46643e-c712-e255-7cb3-0e0e58702f0e.png)

（ユーザーD）
![スクリーンショット 2022-12-04 1.43.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29088/5f0a45bd-3022-e4cf-cbc2-037870411790.png)

（ユーザーE）
![スクリーンショット 2022-12-04 1.44.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29088/8cb70848-fe66-3a70-80c2-7734b11283ea.png)

**これらのユーザーに関してはネットワーク回線を見直してもらうようにしました。**


他にも考えられることは、OSの設定や、ウィルス対策ソフト、デフォルトインストールソフト（プライバシー系）の動きで、ブロックされている可能性等も考慮したのですが、一旦調査としてはここまでにしました。また開発的な対応として、問題発生時のアラートを上記の情報によってわかりやすく表記し直したり、適宜リロードを行うような改修を実施しました。


## まとめ

従来ではユーザーからの報告に頼らざるを得なかったトラブルシュートに対して、Twilio VideoのVideo Insights機能によってログによる調査とピンポイントの対応ができるようになりました。グローバルなビデオ通話は比較的トラブルも多く非常に助かりました。実際に使える機能改善だったと思います。Twilioの機能改善に今後も期待していきたいです。