USTREAM配信の最適化 | ご当地プロデューサー コバヤシノブヨシ

USTREAM配信の最適化

USTREAMの配信コーデックのFLMEやWirecastでの設定について。

USTREAMは配信側でテレビ的な画像を送り出そうとしても、視聴者のPCの再生能力に結局依存するため、その辺を考えたコーディングをしなければいけない。

テレビのフレームは29.97≒30fpsとなるわけだが、30fpsをUSTREAMで送り出すと視聴者のPCでは1/30秒の頻度で絵を描き再生する。
それを例えば20fpsにおとすことで、視聴者のPCのFLASHプレイヤーは1/20秒で絵を描く。
どちらが負担が少ないだろうか。
そう、1/20秒で描くほうがPC負担は2/3になる。
フレームレートはUSTREAMの場合は20~24程度が最適と考える。

また、コーデックの設定に「キーフレーム」という項目があるがこれはその秒数ごと(あるいは枚数ごと)に綺麗な絵を送るというタイミングの設定にあたる。
このキーフレームの間隔が短いと頻繁に高いビットレートのデータが送信されてくるので、データのボトルネックがおきやすく、結果、視聴側のPCでのコマとびや配信~サーバー間のボトルネックによるデータの欠落などが起きる。
キーフレームは10秒間隔くらいで設定したほうがよいようだ。

また、USTREAMのコーデックにh.264を使用する場合には「プロファイル」というものを設定するのだが、これもUSTREAMの仕様ではiPhone視聴も想定した形で

Baseline 3.0

を推奨する。
これはiPhone3GSが再生できるプロファイルレベルであり、また標準解像度(SD)で使用するにふさわしいプロファイルレベルである。
これよりさらに綺麗にHDまで再生できるMainプロファイルもあるのだが、現状のUSTREAMサーバーにおいてはMainプロファイルで配信したもののアーカイブが保存の段階で映像が一部壊れる現象が置きやすい。
また、Mainプロファイルは重いので視聴側に負担になりやすく、コマとびの原因にもなりやすい。

僕のお勧め

■ワイド画面での配信の場合
608px×342px
24fps
h.264 Baseline3.0
Keyflame 10sec(240f)
Video 500kbps Audio 96kbps

あたりが無難なようだ。

以上のことを踏まえて配信のコーディングを行うとコマとびやリップシンク(音ズレ)が出にくい配信が出来るようだ。