FFmpegは、動画形式変換、動画ダウンロードなどで大変助かります。
しかし、パラメータをたまに忘れてしまうのでここにばっと書いていきます。
2021/02/06 コーデック追加、項目を追加しました。
2023/01/19 コーデック追加、内容を一部修正しました。
コーデックの変換
input.mp4を映像コーデックlibx264で、音声コーデックlibmp3lameでoutput.mp4に出力するとき
ffmpeg -i ./input.mp4 -c:v libx264 -c:a libmp3lame output.mp4
映像のビットレートを変える
映像ビットレート変更は-b:v [ビットレート(数字の後にk,m)]
- 600kbpsに下げるとき
ffmpeg -i ./input.mp4 -b:v 600k output.mp4
音声のサンプリングレートを変える
音声のサンプリングレート変更は-ar [周波数(Hz単位)]
- 44100Hzに変更するとき
ffmpeg -i ./input.mp4 -c:v copy -ar 44100 output.mp4
音声のビットレートを変える
音声のビットレート変更は-b:a [ビットレート(数字の後にk,m)]
- 128kbpsに変更するとき
ffmpeg -i ./input.mp4 -c:v copy -b:a 128k output.mp4
ハードウェアアクセラレーションを使う
FFmpegは様々なハードウェアアクセラレーション機能を使うことができます。
対応するハードウェアがある場合は専用の回路などで高速に動画処理を行います。画質はトレードオフとなる場合があります。(最近は向上しているようです)
Intel CPUの場合
Intel CPUの場合は、QSVというハードウェアアクセラレーションが使えます。
H.264はSandy Bridge以降、H.265とVP9はKaby Lake以降、AV1はTiger Lake以降の世代でQSVを使うことができます。
通常に比べてエンコード速度がそこそこ上がります。
アクセラレーション名は qsv
です。
NVIDIA GeForceの場合
GeForceを装着しているパソコンなら、CUDAコアを使ったアクセラレーションが使えます。
GeForce 8シリーズ以降なら使えるので、最近のGeForceは100%使えます。
アクセラレーション名は cuda
です。
Windows Vista以降の場合
CPUに関係なく、Vista以降ならDXVA(DirectX Video Acceleration)が使えます。
アクセラレーション名は dxva2
です。
macOSの場合
VideoToolboxが使えます。
H264、HEVC、ProRes(Apple Siliconのみ)で利用できます。
アクセラレーション名は videotoolbox
です。
Linuxの場合
ほとんどの環境で「vaapi」(Video-Acceleraion API)が利用可能です。
QSVなどと同等のパフォーマンスが得られます。
アクセラレーション名は vaapi
です。
動画を逆にする
逆再生をするのには、動画編集ソフトが必要かなと思うと思いますが、実はFFmpegでも処理できます。
-filter_complexオプションにreverse;areverse
をつけるだけです。
input.mp4を逆にしてoutput.mp4に保存する場合です。
ffmpeg -i ./input.mp4 -filter_complex "reverse;areverse" output.mp4
これで逆再生になります。
ただし、メモリの消費が大きいので、メモリ搭載量が多い環境での実行をおすすめします。
AACなのに、サイズが小さいのに、音質を良くする方法
ビルトイン AACエンコーダー
FFmpegには独自実装のAACエンコーダーがあります。 aac
で利用できます。
Star.flacというファイルがあって、これをAAC 192kbpsに変換します。
普通は192kbpsは音質が多少悪くなりますが、エンコーダーの設定を変えることで品質を上げられます。
ffmpeg -i Star.flac -b:a 192k -aac_coder twoloop Star.m4a
これだけです。
「-aac_coder twoloop」がポイントです。デフォルトではこの設定がfastになっています。
AudioToolbox AACエンコーダー (macOSのみ)
macOSにはAudioToolboxが提供するエンコーダーが搭載されています。中身はあのqAACと同じです。
aac_at
で利用できます。
ffmpeg -i example.wav -c:a aac_at -b:a 128k example.m4a
おまけ2
主な映像コーデック一覧
これらは-c:v
オプションで指定できます。
コーデック名 | 形式(拡張子) |
---|---|
libx264 | MPEG-4,H.264(.mp4) |
h264 | MPEG-4,H.264(.mp4) |
h264_qsv | H.264(Intel Quick Sync Video) |
h264_nvenc | H.264(NVIDIA CUDA) |
h264_vaapi | H.264(vaapi) |
h264_videotoolbox | H.264(VideoToolbox、macOSのみ) |
hevc | H.265(.mp4) |
hevc_qsv | H.265(Intel Quick Sync Video, Kaby Lake以降) |
hevc_nvenc | H.265(NVIDIA CUDA) |
hevc_videotoolbox | H.265(VideoToolbox) |
flv1 | Flashムービー(.flv) |
mjpeg | Motion JPEG(.jpeg) |
mjpeg_qsv | JPEG(Intel Quick Sync Video) |
mpeg1video | MPEG-1 Video(.mpg) |
mpeg2video | MPEG-2 Video(.m2ts、.vob) |
mpeg2_qsv | MPEG-2 Video(Intel Quick Sync Video) |
vp9 | VP9 (.webm) |
vp9_qsv | VP9 (Intel Quick Sync Video, Kaby Lake以降) |
libaom-av1 | AV1 (AOMedia版) |
librav1e-av1 | AV1 (rav1e版) |
av1_qsv | AV1 (Intel Quick Sync Video, Tiger Lake以降) |
wmv1 | Windows Media Player 7向け |
wmv2 | Windows Media Player 8向け |
wmv3 | Windows Media Player 9向け |
主な音声コーデック一覧
これらは-c:a
オプションで指定できます。
コーデック名 | 形式 |
---|---|
libmp3lame | MPEG audio layer 3 |
aac | Advanced Audio Coding |
aac_at | AAC (AudioToolbox、macOSのみ) |
alac | Apple Lossless |
flac | Free Lossless Audio Codec |
mp3 | MPEG audio layer 3 |
libopus | Opus (libopus) |
pcm_s16le | PCM 16bit(WAVファイル) |
pcm_s24le | PCM 24bit(WAVファイル) |
vorbis | Vorbis(OGGファイル) |
wmav1 | Windows Media Audio 1(WMAファイル) |
wmav2 | Windows Media Audio 2(WMAファイル) |