Help us understand the problem. What is going on with this article?

[MPEG-DASH] パフォーマンスチューニングを行う

はじめに

  • 映像/音声の品質
  • ダウンロードからの再生速度
  • シーク操作(再生位置の変更)の精度

アダプティブストリーミングにおいて、映像の画質や音声の音質は、ビットレートが関係しています。ビットレートが低くなると映像にブロックノイズが発生したり、音が割れたりします。映像の滑らかさは、フレームレートが関係しています。フレームレートが低くなるとコマ落ちが発生します。
ダウンロードからの再生速度は、帯域幅やファイルサイズが関係しています。帯域幅が小さくなったり、ファイルサイズが大きくなるとバッファリング時間(再生までの待ち時間)が発生します。
シーク操作の精度は、セグメントファイルの再生時間が関係しています。セグメントの再生時間が長くなると、指定した再生位置からズレて再生される可能性があります。

今回は「ダウンロードからの再生速度」と「シーク操作」の2つのパフォーマンスチューニングを紹介します。

パフォーマンスチューニング

コーデック

コーデックとは、映像や音声を圧縮する方式です。ここでは映像コーデックを説明します。

映像コーデック

H.264

H.264(MPEG-4 AVC)では、フレーム(静止画像の1コマ)間で似たような部分を圧縮してファイルサイズを小さくしています。前フレームと後フレーム画像の一部または全体で変化が少ない箇所を予測してファイルサイズを圧縮しています。H.264は、この動き予測のアルゴリズムが優れています。画面全体を細かくブロックに分割して、そのままフレーム間の変化量を送っています。

H.265

H.265(HEVC)では、フレーム間の変化量からブロックサイズを最適化して送っています。H.264に比べると約2倍の圧縮率になりますが、圧縮にかける時間が数倍~10数倍くらいになります。

フレームの種類

  • Iフレーム
  • Bフレーム
  • Pフレーム

H.264, H.265では、フレームの種類が3つあります。Iフレームは、キーフレームとも呼ばれます。圧縮率は他のフレームに比べると最小です。動画のシークを行う場合、シークした位置にキーフレームがある必要があります。そのため、キーフレームが多いほどシークの精度があがります。(ただし、その分ファイルサイズが大きくなります。)BフレームやPフレームの圧縮率は高いです。

GOP

GOP(Group of Picture)は、Iフレームを含むフレームの集合体を指します。特定の順序(IBBPBB,IBBPBB..)で編成されています。

GOPサイズ

  • GOPサイズが小さい
    • シーク精度が上がる
  • GOPサイズが大きい
    • シーク精度が下がる

GOPサイズは、値が小さいほどキーフレームが頻繁に作成されます。GOPサイズを小さくするとシーク精度が上がりますが、ファイルサイズが大きくなります。

GOPサイズの求め方

  • GOPサイズ=フラグメントサイズ×フレームレート

GOPサイズの出力方法

実行
mp4dump Bullfinch.mp4

Bento4というソフトウェアに同梱されているmp4dumpでGOPサイズを取得することができます。

ClosedGOP

ClosedGOPは、1つのGOPをClosedに設定することで1つのGOPを切り出しても前後のGOPに干渉が起きないようにする仕組みです。ClosedGOPにすることで1つのGOPで映像を完結することができるため、映像編集が容易になります。Fragmented MP4ではClosedGOPであることを推奨しています。
「BB,IBBPBBPBBPBB」のようなGOPがあった場合、先頭の2つBフレームはPフレームの差分で作成されているため、OpenGOPでこの部分を切り出してしまうと2つのBフレームは参照できなくなります。

フラグメントサイズ

  • フラグメントサイズが小さい
    • シーク精度が上がる
    • メディアのファイルサイズが大きくなる
  • フラグメントサイズが大きい
    • シーク精度が下がる
    • メディアのファイルサイズが小さくなる

フラグメントサイズは、Fragmented MP4で分割したサイズです。

セグメントサイズ

  • セグメントサイズが小さい
    • リクエスト遅延の影響を受けやすい。
  • セグメントサイズが大きい
    • 帯域不安定なワイヤレスネットワークで失速の影響を受けやすい。

セグメントサイズは、MPEG-DASHで使用されているメディアファイルを分割したサイズです。

おわりに

フラグメントサイズを小さくするとシーク精度が上がります。しかし、ファイルサイズが大きくなりバッファリングが発生する可能性があります。トレードオフの関係にあります。再生するデバイスやアプリケーションを明確にしてそれに合うようにチューニングする必要があります。

最後までご覧いただき、ありがとうございました。

関連リンク

以上です。

yun_bow
サービス志向エンジニアです。プログラミングを使ったモノづくりが好きです。AWS、Python、GO言語を勉強中。 こちらで投稿した記事は、所属会社の公式見解を示すものではないです。
pa-rk
Webアプリ、スマホアプリの開発を手掛ける技術者集団です。
https://www.pa-rk.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした