なまけもの

備忘録

ffmpegで動画をエンコードする

概要

"ffmpeg" を使い動画ファイルをエンコードする。

目次

準備

手順

映像オプション

ffmpeg -i <入力ファイル> -c:v<コーデック> -r <fps> <出力ファイル>

  • -i <入力ファイル> : 元となる動画を指定する。
  • -c:v <コーデック> : 動画のコーデックを指定する。
  • -r : 動画のフレームレート。
    • 24
    • 30000/1001

エンコードモード

1Pass(CRF)

-crf 20
ファイルサイズが重要ではなく、ある程度一定の品質を保ってエンコードしたい場合に使用する。
0-51の範囲で指定し、0=ロスレス、23=デフォルト、51=最低。

良                              悪   画質
 0------------------------------51
大                              小   ファイルサイズ

また、-maxrate <bps>で最大ビットレートを指定できる。

2Pass

ffmpeg -i <入力ファイル> -c:v <コーデック> <bps> -an -pass 1 -f mp4 NUL
&&
ffmpeg -i <入力ファイル> -c:v <コーデック> -b:v <bps> <音声オプション> -pass 2 <出力ファイル>

ファイルサイズがある制限されている場合はこちらを使用する。大体、1Passの2倍の時間が必要。

  • -an : 音声ファイルを出力しない。

プリセット

-preset:v -medium

プリセット

デフォルトでは"medium"が指定される。遅いプリセットの方がエンコードに時間が掛かるがファイルサイズに対しより高画質になる。

チューイング

-tune animation
入力する動画の種類によって指定する。デフォルトでは"none"が指定される。

  • film
  • animation

もしも、何を使えばいいか自身が持てなかったり、入力がどのチューニングにも合致しないのであれば、 その時は「-tune」オプションを省略してください。
出展 : FFmpeg, H.264 エンコーディングガイド

プロファイル

-profile:v baseline -level 3.0
古い再生デバイスなどと互換を持たせたい場合に使用する。

一般的にはこの設定をする必要はないでしょう (そしてそれゆえに「-profile:v」と「-level」を使うのは避けてください)。
出展 : FFmpeg, H.264 エンコーディングガイド

リサイズする

Pixelでサイズを指定する

-s <横>x<縦>

アスペクト比

アスペクト比を指定する

-aspect 16:9

アスペクト比など自動計算に任せる

-vf scale=640:-1

インターレースを解除する

-filter:v yadif

音声オプション

ffmpeg -i <入力ファイル> -c:a <コーデック> -b:a <bps> -ar <サンプル周波数> <出力ファイル>

  • -c:a <コーデック> : 音声のコーデックを指定する。
    • AAC : libfaac
    • mp3 : libmp3lame
  • -b:a <bps> : 音声のビットレート
  • -ar <サンプル周波数> : 音声のサンプル周波数を指定する。基本的に44100or48000

参考


以上。