SHOEISHA iD

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

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

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

配信に適した動画にする「エンコード」の技術~動画ファイルをエンコードして、HTTPサーバーで配信してみよう

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

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

ffmpegで動画ファイルをエンコードしよう

 先ほど述べたように、サービスとして何を提供するかによって提供する映像の品質が変わってくるため、今回は大まかに2つのケースを考えてみましょう。

ケース1:ビットレートを指定する

 映像の視覚的な綺麗さよりも、映像の再生をスムーズにすることが優先されるケースです。ビットレートとは映像の品質を表す指標であり、単位時間あたりに映像データがどれだけのデータ量を持つかを表します(単位はbps)。再生開始までの読み込み時間などを考慮して、提供するサービスに適したビットレートを決定した場合に、ffmpegでそれらの値を指定してエンコードすることができます。以下にその例を示します。

$ ffmpeg -i input.mp4 -c:v libx264 -r 30 -s 1024x576 -b:v 2800k -maxrate 4000k -bufsize 4000k -level 30 -pix_fmt yuv420p -aspect 16:9 -sar 1:1 -c:a aac -b:a 128k chapter3_bitrate.mp4

 とても長々としてなんのことかさっぱりかもしれませんが、それぞれの意味合いとしては以下の通りです。

オプション 意味
-i input.mp4 エンコード対象の動画ファイル
-c:v libx264 映像のエンコードに利用するコーデック
-r 30 フレームレートを30fpsに設定
-s 1024x576 解像度を1024x576に設定
-b:v 2800k 映像のビットレートを2800kbpsに設定
-maxrate 4000k 映像の最大ビットレートを4000kbpsに設定
-bufsize 4000k バッファサイズを4000kbpsに設定
-level 30 H.264のプロファイルを設定
-pix_fmt yuv420p 色フォーマットをyuv420pに設定
-aspect 16:9 アスペクト比を16:9に設定
-sar 1:1 サンプルアスペクト比を1:1に設定
-c:a aac 音声のエンコードに利用するコーデック
-b:a 128k 音声のビットレートを128kbpsに設定
chapter3_bitrate.mp4 エンコード後のファイル名

 先ほどのコマンドの意味するところは、解像度1024x576、フレームレート30fps、ビットレート2800kbpsの映像データと、ビットレート128kbpsの音声データをエンコードするということになります。

ケース2:クオリティを指定する

 映像の視覚的な綺麗さを重視するケースです。

$ ffmpeg -i input.mp4 -c:v libx264 -r 30 -s 1024x576 -crf 23 -level 30 -pix_fmt yuv420p -aspect 16:9 -sar 1:1 -c:a aac -b:a 128k chapter3_quality.mp4
オプション 意味
-i input.mp4 エンコード対象の動画ファイル
-c:v libx264 映像のエンコードに利用するコーデック
-r 30 フレームレートを30fpsに設定
-s 1024x576 解像度を1024x576に設定
-crf 23 クオリティを23に設定
-level 30 H.264のプロファイルを設定
-pix_fmt yuv420p 色フォーマットをyuv420pに設定
-aspect 16:9 アスペクト比を16:9に設定
-sar 1:1 サンプルアスペクト比を1:1に設定
-c:a aac 音声のエンコードに利用するコーデック
-b:a 128k 音声のビットレートを128kbpsに設定
chapter3_quality.mp4 エンコード後のファイル名

次のページ
いよいよ動画配信してみよう

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

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

もっと読む

この記事の著者

中村 航(合同会社DMM.com)(ナカムラ ワタル)

 2020年にDMM.comへ新卒入社。現在の配信基盤グループに配属され、今日までエンコードシステムやバックエンドシステム等の開発・運用に携わっています。その後、2022年にスタートしたDMM TVの立ち上げにも関わりました。エンタメ大好きなエンジニアです!

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング