SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

今日からできる! 動画配信基盤システム構築

【Webブラウザでストリーミング動画配信:後編】Adaptive Bit Rate(ABR)を用いて自動で画質を切り替えよう

今日からできる! 動画配信基盤システム構築 第5回

  • X ポスト
  • このエントリーをはてなブックマークに追加

 インターネットを利用した動画配信は、ブロードバンドの普及とともに急速に発展し、今や多くの人々がたくさんの動画コンテンツを視聴しています。各関連技術は発展と収束を繰り返し、昔は難解だった動画配信技術もデファクトスタンダードが確立されつつあります。本連載ではインターネットを利用したストリーミング動画配信技術についてわかりやすく紹介し、誰でも、簡単に、動画配信ができることを伝えていこうと思っています。第4回となる本記事では、回線品質がまちまちな、いわゆる「ベストエフォート」なインターネット環境にて、安定した映像視聴体験を提供するために重要な技術であるAdaptive Bit Rate、通称ABRについて解説します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

Adaptive Bit Rate(ABR)について

 前編ではプログレッシブMP4によるストリーミング配信を紹介しました。

 静的ファイルを配信するだけなので、シンプルなWebサーバーやオブジェクトストレージ(+CDN)のみで動画配信が実現でき、手軽に実現できることがわかっていただけたかと思います。

 一方で単一のストリームを提供するだけなので、ユーザーの回線環境によっては映像品質を重視すると頻繁にバッファリングが発生する可能性があり、クオリティを重視した長尺の配信には向かない旨を説明しました。

 そこで役に立つのがこのAdaptive Bit Rate、通称ABRです(エンコード時のビットレート指定方法であるAverage Bit Rateと略称が同じで混同しがちですが、別物なので注意が必要です)。

 Adaptive Bit Rateは名前の通り最適なビットレート(=ストリーム)をユーザーに提供する技術です。通信速度はもちろんのこと、場合によっては表示領域の解像度や、デバイスの再生能力(デコード能力)等も加味して、複数定義されたストリームから最適なストリームを選択できるようになる技術です。

 最適なストリームを提供するということは、すなわち複数のストリームをユーザーから取得可能にしておくということを意味します。

 一般的にはエンコードを動的に行うにはコンピューティングリソースが大量に必要となる割には圧縮率を高くすることが難しいため、ライブ配信等の即時性を求められる配信以外では、通常は静的にファイルをあらかじめエンコードしておくこととなります。

 すなわち、ABRを行うためには、まず1本の元素材から複数の動画をエンコードする必要があります。

複数のストリームを用意する

 今回は下記の4ストリームを用意し、ABR化していきます。

  • 240p
  • 480p
  • 720p
  • 1080p

 まずはMP4ファイルを作っていきましょう。下記コマンドを実行することで、240p.mp4、480p.mp4、720p.mp4、1080p.mp4 の4ファイルが完成します。このファイルは中間ファイルのため、最終的には削除して構いません。

ffmpeg \
-i bbb_sunflower_1080p_60fps_normal.mp4 \
-r 30 -g 30 -s 426x240 -sar 1:1 -preset veryslow -b:v 1000k -maxrate 1500k -bufsize 1500k -level 3 -pix_fmt yuv420p -aspect 16:9 -c:a aac -b:a 64k -ac 2 -movflags +faststart 240p.mp4 \
-r 30 -g 30 -s 854x480 -sar 1:1 -preset veryslow -b:v 2000k -maxrate 2500k -bufsize 2500k -level 31 -pix_fmt yuv420p -aspect 16:9 -c:a aac -b:a 96k -ac 2 -movflags +faststart 480p.mp4 \
-r 30 -g 30 -s 1280x720 -sar 1:1 -preset veryslow -b:v 4000k -maxrate 4500k -bufsize 4500k -level 4 -pix_fmt yuv420p -aspect 16:9 -c:a aac -b:a 128k -ac 2 -movflags +faststart 720p.mp4 \
-r 30 -g 30 -s 1920x1080 -sar 1:1 -preset veryslow -b:v 6000k -maxrate 8500k -bufsize 8500k -level 42 -pix_fmt yuv420p -aspect 16:9 -c:a aac -b:a 128k -ac 2 -movflags +faststart 1080p.mp4

 この時に大切なこととして、キーフレーム関連のパラメータは全ストリーム共通にしておきましょう。後述する配信形式に変換する際に重要になってきます。

次のページ
ABRが可能な配信形式に変換する

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
今日からできる! 動画配信基盤システム構築連載記事一覧

もっと読む

この記事の著者

矢野 完人(合同会社DMM.com)(ヤノ マサヒト)

 2016年にDMM.comへ新卒入社。CTO室に配属され、新規事業立案や動的画像リサイズエンジンのR&D等に従事。2017年に動画サービスを司る部署(現:動画配信開発部)に異動し、配信基盤グループにて設計・開発・運用・マネジメントなどさまざまな業務を行う。現在はメディア基盤開発部 部長とし...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/21096 2025/04/25 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング