ビデオ品質の設定
内容紹介
TRTRTCCloudでは、以下の方式で画質を調整できます。
TRTCCloud.enterRoom のTRTCAppScene パラメータ:アプリケーションユースケースを使用するのに使用します。
TRTCCloud.setVideoEncoderParam:エンコードのパラメータを設定するのに使用します。
TRTCCloud.setNetworkQosParam:ネットワークの制御ポリシーを設定するのに使用します。
ここでは、主に上述のパラメータを設定し、TRTC SDKの画質効果を項目のニーズに適合させる方法を紹介します。
以下のDemoを参照することもできます。
サポートするプラットフォーム
iOS | Android | Mac OS | Windows | Web | Electron | Flutter |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
TRTCAppScene
VideoCall
ビデオ通信のユースケース、すなわち、長時間二人以上のビデオ通信に対応するユースケースです。内部のエンコーダーおよびネットワークプロトコルを最適化して流暢性に特化し、通話ディレーおよび遅延率を低下させます。
LIVE
ライブストリーミングのユースケース、すなわち、長時間一人でのライブストリーミングに対応し、時々多人数でのビデオインタラクティブのユースケースに対応します。内部エンコーダーおよびネットワークプロトコルは最適化して性能及び互換性に特化し、性能及び解像度をさらに良くします。
TRTCVideoEncParam
推奨する設定
ユースケース | videoResolution | videoFps | videoBitrate |
ビデオ通話(携帯電話) | 640x360 | 15 | 550kbps |
ビデオミーティング(メイン画面 @ Mac Win) | 1280x720 | 15 | 1200kbps |
ビデオミーティング(メイン画面 @ 携帯電話) | 640x360 | 15 | 900kbps |
ビデオミーティング(小画面) | 320x180 | 15 | 250kbps |
eラーニング(教師 @ Mac Win) | 960x540 | 15 | 850kbps |
eラーニング(教師 @ iPad) | 640x360 | 15 | 550kbps |
eラーニング(学生) | 320x180 | 15 | 250kbps |
各フィールドの詳細説明
(TRTCVideoResolution) videoResolution
エンコード解像度は、 例えば、640 x 360 はエンコードした画面の幅(画素) x 高さ(画素)を指し、TRTCVideoResolution で列挙した定義では、幅は高さ以上の長さとの横型スクリーン(Landscape)の解像度を定義しただけです。縦型スクリーン解像度を使用したい場合は、 resModeを Portraitに設定する必要があります。
ご注意:
多くのハードウェアのコーデックが 16 で割り切れる画素数の幅のみをサポートすることから、 SDKが実際にエンコードする解像度は、必ずしもパラメータに従って自ら設定したわけではなく、 16 で割って自動で修正したものです。例えば、 640 x 360 の解像度なら、 SDK 内部では 640 x 368に対応することがありえます。
(TRTCVideoResolutionMode) resMode
横スクリーンまたは縦スクリーンの解像度を指し、TRTCVideoResolution には横スクリーンの解像度しか定義していないことから、 360 x 640 のような縦スクリーン解像度を使用したい場合は、 resMode を TRTCVideoResolutionModePortraitに指定する必要があります。一般に PCおよび Macは、横スクリーン(Landscape)解像度を採用し、携帯電話は縦スクリーン(Portrait)解像度を採用しています。
(int) videoFps
フレームレート(FPS)も、毎秒どれだけのフレーム画面をエンコードするかを示すものです。15 FPSに設定することをお薦めします。そうすれば、画面が十分にスムーズに流れ、毎秒のフレーム数が多すぎることによりフレーム画面の明瞭度を下げることはありません。
スムーズさへの要求が高い場合は、20FPSまたは25FPSに設定することができます。しかし、25FPSより大きい数値には設定しないでください。映画の通常のフレームレートも24FPSしかないためです。
(int) videoBitrate
ビットレート(Bitrate)とは、毎秒エンコーダーがどれだけかのKbit のエンコードを出力した後のバイナリーデータのことです。 videoBitrate を 800kbpsに設定した場合は、エンコーダーが毎秒 800kbit のビデオデータを産生することになります。これらのデータを一つのファイルに保存すると、ファイル容量は 800kbit、つまり100KB、0.1MBになります。
ビデオビットレートは高ければ良いというものではなく、解像度との間にやや適切なマッピング関係があり、下表の示すとおりになります。
解像度ビットレート参照表
解像度の定義 | アスペクト比 | 推奨ビットレート(VideoCall) | 推奨ビットレート(LIVE) |
TRTCVideoResolution_120_120 | 1:1 | 80kbps | 120kbps |
TRTCVideoResolution_160_160 | 1:1 | 100kbps | 150kbps |
TRTCVideoResolution_270_270 | 1:1 | 200kbps | 300kbps |
TRTCVideoResolution_480_480 | 1:1 | 350kbps | 525kbps |
TRTCVideoResolution_160_120 | 4:3 | 100kbps | 150kbps |
TRTCVideoResolution_240_180 | 4:3 | 150kbps | 225kbps |
TRTCVideoResolution_280_210 | 4:3 | 200kbps | 300kbps |
TRTCVideoResolution_320_240 | 4:3 | 250kbps | 375kbps |
TRTCVideoResolution_400_300 | 4:3 | 300kbps | 450kbps |
TRTCVideoResolution_480_360 | 4:3 | 400kbps | 600kbps |
TRTCVideoResolution_640_480 | 4:3 | 600kbps | 900kbps |
TRTCVideoResolution_960_720 | 4:3 | 1000kbps | 1500kbps |
TRTCVideoResolution_160_90 | 16:9 | 150kbps | 250kbps |
TRTCVideoResolution_256_144 | 16:9 | 200kbps | 300kbps |
TRTCVideoResolution_320_180 | 16:9 | 250kbps | 400kbps |
TRTCVideoResolution_480_270 | 16:9 | 350kbps | 550kbps |
TRTCVideoResolution_640_360 | 16:9 | 550kbps | 900kbps |
TRTCVideoResolution_960_540 | 16:9 | 850kbps | 1300kbps |
TRTCVideoResolution_1280_720 | 16:9 | 1200kbps | 1800kbps |
TRTCVideoResolution_1920_1080 | 16:9 | 2000kbps | 3000kbps |
TRTCNetworkQosParam
QosPreference
ネットワークの帯域幅に比較的余裕がある状況では、明瞭度とスムーズさは同時に対応できます。しかし、ユーザーのネットワークが満足のいく状態でない場合は、最終的に明瞭度とスムーズさのどちらを優先するかを、TRTCNetworkQosParam の preference パラメータを指定することで選択することができます。
スムーズさを優先(TRTCVideoQosPreferenceSmooth)
ユーザーのネットワーク環境が脆弱な場合は、画面がぼやけ、モザイクが多くかかることがあります。しかし、スムーズさを維持しラグを軽減することができます。
解像度を優先(TRTCVideoQosPreferenceClear)
ユーザーのネットワーク環境が脆弱な場合は、画面はできるだけ明瞭さを維持しますが、ラグが現れやすくなります。
ControlMode
controlMode パラメータでは、 TRTCQosControlModeServer を選択すればOKです。TRTCQosControlModeClient は、Tencent Cloud研究開発チームが内部テスト用としたものですので、無視してください。
よく見られるエラー箇所
1. 解像度は高いほど良いのですか?
やや高い解像度も、やや高いビットレートでのサポートが必要です。1280 x 720の解像度を選択した場合は、ビットレートを200kbpsに指定すると、画面に大量のモザイクが出てしまいます。 解像度ビットレート参照リストを参照して設定することをお薦めします。
2. フレームレートは高いほど良いですか?
カメラで撮影する画面は、露出段階ですべての現実の物体の完全なマッピングですので、フレームレートが高いほど、スムーズに感じるわけではありません。この点でゲームのFPSと異なります。正反対に、フレームレートが高すぎると、各フレームの画質を損ない、カメラの露出時間も減少させ、効果はさらに落ちることになります。
3. ビットレートは高いほど良いですか?
高いビットレートも高い解像度によって対応します。 320 x 240 の解像度に、1000kbps のビットレートは大きすぎますので、 解像度ビットレート参照リスト を参照して設定することをお薦めします。
4. Wi-Fi を使用する場合、高い解像度およびビットレートを設定可能
Wi-Fiのネット速度がいつも変わらないということはありません。無線ルーターから遠い場合、またはルーター回線が占有されている場合は、ネット速度は4Gよりも劣ることになります。
こうした状況では、TRTC SDKは速度計測機能を提供し、ビデオ通信前に速度を計測し、測定値からネットワークの良し悪しを判断します。