OBS Studioで配信するとキーフレーム間隔が8.3秒になってしまう現象

こんばんは。いつもお世話になっています。スティッカム開発チームです。

キーフレーム間隔を2秒に設定しているにもかかわらず、実際に配信してみると8.3秒となってしまう方をよくお見かけします。

どうしてキーフレーム間隔が8.3秒になってしまうのか?

結果から言いますと、OBS Studioにおいてはデフォルト設定から キーフレーム間隔を「0(=自動)」にした場合には、実際には8.3秒で配信されてしまいます。

「2秒に設定したはず!」という方は、

  • 「出力モード」を「詳細」にして2秒に設定したあとに再度「基本」にしてOKを押してしまった。
  • 「出力モード」を「詳細」にして2秒を入力したあとにOKを押さなかった。

というケースがほとんどとなっています。

キーフレーム間隔を2秒にしておかないとどのようなことが起こるか?

技術的なお話になるのですが、現在スティッカムではHTML5版プレーヤーでの視聴は、HLSというストリーミング形式を採用しています。

HLSの動画再生では、m3u8形式のプレイリストとtsファイルという実際の動画の分割化(パケット化)ファイルをダウンロードして、ブラウザ上で再生するという仕組みとなっています。

スティッカムではこのtsファイルを遅延と安定性のバランスを考慮して2秒間隔で作成しています。
そのためには、ユーザーの皆様が配信する映像のキーフレーム間隔が2秒間隔でないとそのパケット化を効率よく行うことができません。

したがってユーザーの皆様が視聴する際にバッファリングが頻繁に発生し、映像が遅延したり止まったりするおそれがあります。

スティッカム側でキーフレームを2秒間隔で再作成することも可能ですが、そうするとさらに映像が遅延することになりますので、現在はそのようなことは行っていません。

なぜOBS Studioではキーフレーム間隔「自動」が8.3秒という中途半端な値なのか

ここからはなぜOBS Studioのキーフレーム間隔「自動」が8.3秒という中途半端な数値になるのかについて説明します。

キーフレーム間隔は、内部的には秒数ではなく ”何フレーム毎にキーフレームを作成するか” という設定方法になっています。

つまり、キーフレーム間隔(秒)は次の式で求まります。

キーフレーム間隔(秒)= キーフレーム間隔(フレーム数)÷ FPS(秒間フレーム数) 

OBS Studioにおいては、キーフレーム間隔「自動」にすると、 250フレーム毎にキーフレーム となっています。したがって30fpsの映像を配信する場合

キーフレーム間隔(秒)= 250 / 30fps = 8.333...(秒)

ということになります。
キーフレーム間隔を0(=自動)にした場合のキーフレーム間隔(フレーム数)は、250固定となっているためFPS(秒間フレーム数)の値を変更することで、キーフレーム間隔(秒)の値が変化することがおわかりいただけましたでしょうか。

前の投稿 次の投稿

過去の投稿

スティッカム開発チーム

スティッカム開発チーム

devのスティッカムホームです。

dev
スティッカム開発チームのマスコットキャラクターdevです。すてぃっくんの中とは違う人です。 動作確認のために足跡を残す場合がありますがご了承ください。 不具合やご不便がありましたらご報告お待ちしています。
詳細