search
LoginSignup
141

posted at

updated at

FFmpegでよく使う例、コーデックをまとめてみた(2023年版)

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ファイル)

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
141