FFmpeg コマンド 100 連発:入力・出力・フィルタ・ストリーム指定の定番集

動画編集やメディア処理の現場で、FFmpeg は欠かせないツールとなっています。コマンドライン一つで動画変換、フィルタ処理、ストリーム操作など、あらゆる作業を高速に実行できる FFmpeg ですが、その豊富なオプションと機能の多さゆえに「何ができるのか」「どう書けばいいのか」を把握するのは簡単ではありません。
本記事では、FFmpeg を使った実践的なコマンドを 100 個厳選し、入力・出力の基本からフィルタ活用、ストリーム指定まで、カテゴリ別に整理してご紹介します。初心者の方が基礎を固めるのはもちろん、中級者以上の方にとっても「あのコマンドどう書くんだっけ?」という場面で役立つリファレンスとなるでしょう。
それでは、FFmpeg コマンド 100 連発を一緒に見ていきましょう。
FFmpeg コマンド早見表
以下は本記事で紹介する FFmpeg コマンド 100 連発の早見表です。必要なコマンドを素早く見つけられます。
# | カテゴリ | コマンド概要 | コマンド例 | 参照セクション |
---|---|---|---|---|
1 | 基本変換 | MP4 から AVI への変換 | ffmpeg -i input.mp4 output.avi | 基本的な入力・出力操作 |
2 | 基本変換 | 動画から音声を抽出 | ffmpeg -i input.mp4 -vn -acodec copy output.aac | 基本的な入力・出力操作 |
3 | 基本変換 | 音声ファイルの形式変換 | ffmpeg -i input.mp3 output.wav | 基本的な入力・出力操作 |
4 | 基本変換 | 動画情報の表示 | ffmpeg -i input.mp4 | 基本的な入力・出力操作 |
5 | 基本変換 | コーデック指定なしコピー | ffmpeg -i input.mp4 -codec copy output.mp4 | 基本的な入力・出力操作 |
6 | コーデック指定 | H.264 エンコード | ffmpeg -i input.mp4 -vcodec libx264 output.mp4 | コーデック指定の基本 |
7 | コーデック指定 | H.265/HEVC エンコード | ffmpeg -i input.mp4 -vcodec libx265 output.mp4 | コーデック指定の基本 |
8 | コーデック指定 | VP9 エンコード | ffmpeg -i input.mp4 -vcodec libvpx-vp9 output.webm | コーデック指定の基本 |
9 | コーデック指定 | AV1 エンコード | ffmpeg -i input.mp4 -vcodec libaom-av1 output.mp4 | コーデック指定の基本 |
10 | コーデック指定 | AAC 音声エンコード | ffmpeg -i input.mp4 -acodec aac -b:a 192k output.mp4 | コーデック指定の基本 |
11 | ビットレート | 動画ビットレート指定 | ffmpeg -i input.mp4 -b:v 2M output.mp4 | ビットレートとクオリティ制御 |
12 | ビットレート | 音声ビットレート指定 | ffmpeg -i input.mp4 -b:a 128k output.mp4 | ビットレートとクオリティ制御 |
13 | ビットレート | CRF による品質指定 | ffmpeg -i input.mp4 -vcodec libx264 -crf 23 output.mp4 | ビットレートとクオリティ制御 |
14 | ビットレート | 2 パスエンコード(1 パス目) | ffmpeg -i input.mp4 -vcodec libx264 -b:v 2M -pass 1 -f mp4 /dev/null | ビットレートとクオリティ制御 |
15 | ビットレート | 2 パスエンコード(2 パス目) | ffmpeg -i input.mp4 -vcodec libx264 -b:v 2M -pass 2 output.mp4 | ビットレートとクオリティ制御 |
16 | 解像度 | 解像度変更(720p) | ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4 | 解像度とアスペクト比 |
17 | 解像度 | 解像度変更(1080p) | ffmpeg -i input.mp4 -vf scale=1920:1080 output.mp4 | 解像度とアスペクト比 |
18 | 解像度 | 横幅固定でアスペクト比維持 | ffmpeg -i input.mp4 -vf scale=640:-1 output.mp4 | 解像度とアスペクト比 |
19 | 解像度 | 縦幅固定でアスペクト比維持 | ffmpeg -i input.mp4 -vf scale=-1:480 output.mp4 | 解像度とアスペクト比 |
20 | 解像度 | アスペクト比 16:9 に強制 | ffmpeg -i input.mp4 -aspect 16:9 output.mp4 | 解像度とアスペクト比 |
21 | フレームレート | フレームレート変更(30fps) | ffmpeg -i input.mp4 -r 30 output.mp4 | フレームレートとタイムコード |
22 | フレームレート | フレームレート変更(60fps) | ffmpeg -i input.mp4 -r 60 output.mp4 | フレームレートとタイムコード |
23 | フレームレート | フレームレート変更(24fps) | ffmpeg -i input.mp4 -r 24 output.mp4 | フレームレートとタイムコード |
24 | フレームレート | 可変フレームレートを固定に | ffmpeg -i input.mp4 -vsync cfr output.mp4 | フレームレートとタイムコード |
25 | フレームレート | タイムコード付与 | ffmpeg -i input.mp4 -timecode 00:00:00:00 output.mp4 | フレームレートとタイムコード |
26 | トリミング | 開始位置と長さ指定 | ffmpeg -i input.mp4 -ss 00:01:00 -t 00:00:30 output.mp4 | 動画のトリミングと切り出し |
27 | トリミング | 開始位置と終了位置指定 | ffmpeg -i input.mp4 -ss 00:01:00 -to 00:02:00 output.mp4 | 動画のトリミングと切り出し |
28 | トリミング | 最初の 10 秒を切り出し | ffmpeg -i input.mp4 -t 10 output.mp4 | 動画のトリミングと切り出し |
29 | トリミング | 最後の 10 秒を切り出し | ffmpeg -sseof -10 -i input.mp4 output.mp4 | 動画のトリミングと切り出し |
30 | トリミング | 高速コピーモード | ffmpeg -ss 00:01:00 -i input.mp4 -t 30 -c copy output.mp4 | 動画のトリミングと切り出し |
31 | 連結 | 連結リストファイル使用 | ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4 | 動画の連結と分割 |
32 | 連結 | コピーモードで連結 | `ffmpeg -i "concat | input2.mp4 |
33 | 連結 | フィルタを使った連結 | ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[v][a]" -map "[v]" -map "[a]" output.mp4 | 動画の連結と分割 |
34 | 分割 | 一定時間ごとに分割 | ffmpeg -i input.mp4 -c copy -f segment -segment_time 60 output%03d.mp4 | 動画の連結と分割 |
35 | 分割 | フレーム単位で分割 | ffmpeg -i input.mp4 -c copy -f segment -segment_frames 300 output%03d.mp4 | 動画の連結と分割 |
36 | 画像抽出 | 特定フレームを画像化 | ffmpeg -i input.mp4 -ss 00:00:05 -vframes 1 output.png | 画像との相互変換 |
37 | 画像抽出 | 1 秒ごとに画像抽出 | ffmpeg -i input.mp4 -vf fps=1 output%04d.png | 画像との相互変換 |
38 | 画像抽出 | 全フレーム画像化 | ffmpeg -i input.mp4 output%04d.png | 画像との相互変換 |
39 | 画像抽出 | サムネイル生成 | ffmpeg -i input.mp4 -ss 00:00:10 -vframes 1 -vf scale=320:-1 thumbnail.jpg | 画像との相互変換 |
40 | 画像から動画 | 画像シーケンスから動画作成 | ffmpeg -framerate 30 -i input%04d.png -c:v libx264 -pix_fmt yuv420p output.mp4 | 画像との相互変換 |
41 | 画像から動画 | 1 枚の画像で動画作成 | ffmpeg -loop 1 -i image.jpg -t 10 -c:v libx264 -pix_fmt yuv420p output.mp4 | 画像との相互変換 |
42 | 画像から動画 | スライドショー作成 | ffmpeg -framerate 1/5 -i input%04d.jpg -c:v libx264 -pix_fmt yuv420p output.mp4 | 画像との相互変換 |
43 | フィルタ基本 | 明るさ調整 | ffmpeg -i input.mp4 -vf eq=brightness=0.1 output.mp4 | 基本的なビデオフィルタ |
44 | フィルタ基本 | コントラスト調整 | ffmpeg -i input.mp4 -vf eq=contrast=1.5 output.mp4 | 基本的なビデオフィルタ |
45 | フィルタ基本 | 彩度調整 | ffmpeg -i input.mp4 -vf eq=saturation=1.5 output.mp4 | 基本的なビデオフィルタ |
46 | フィルタ基本 | ガンマ補正 | ffmpeg -i input.mp4 -vf eq=gamma=1.5 output.mp4 | 基本的なビデオフィルタ |
47 | フィルタ基本 | 色相変更 | ffmpeg -i input.mp4 -vf hue=h=90 output.mp4 | 基本的なビデオフィルタ |
48 | フィルタ回転 | 90 度回転(時計回り) | ffmpeg -i input.mp4 -vf "transpose=1" output.mp4 | 回転・反転・クロップ |
49 | フィルタ回転 | 90 度回転(反時計回り) | ffmpeg -i input.mp4 -vf "transpose=2" output.mp4 | 回転・反転・クロップ |
50 | フィルタ回転 | 180 度回転 | ffmpeg -i input.mp4 -vf "transpose=2,transpose=2" output.mp4 | 回転・反転・クロップ |
51 | フィルタ反転 | 水平反転 | ffmpeg -i input.mp4 -vf "hflip" output.mp4 | 回転・反転・クロップ |
52 | フィルタ反転 | 垂直反転 | ffmpeg -i input.mp4 -vf "vflip" output.mp4 | 回転・反転・クロップ |
53 | クロップ | 中央部分を切り出し | ffmpeg -i input.mp4 -vf "crop=640:480" output.mp4 | 回転・反転・クロップ |
54 | クロップ | 左上から切り出し | ffmpeg -i input.mp4 -vf "crop=640:480:0:0" output.mp4 | 回転・反転・クロップ |
55 | クロップ | 黒帯自動削除 | ffmpeg -i input.mp4 -vf "cropdetect=24:16:0" output.mp4 | 回転・反転・クロップ |
56 | パディング | 上下に黒帯追加 | ffmpeg -i input.mp4 -vf "pad=1920:1080:0:40" output.mp4 | パディングとオーバーレイ |
57 | パディング | 左右に黒帯追加 | ffmpeg -i input.mp4 -vf "pad=1920:1080:140:0" output.mp4 | パディングとオーバーレイ |
58 | パディング | 16:9 化(中央配置) | ffmpeg -i input.mp4 -vf "pad=1920:1080:(ow-iw)/2:(oh-ih)/2" output.mp4 | パディングとオーバーレイ |
59 | オーバーレイ | ウォーターマーク追加 | ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=10:10" output.mp4 | パディングとオーバーレイ |
60 | オーバーレイ | ロゴを右下に配置 | ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=W-w-10:H-h-10" output.mp4 | パディングとオーバーレイ |
61 | オーバーレイ | 半透明ロゴ | ffmpeg -i input.mp4 -i logo.png -filter_complex "[1:v]format=rgba,colorchannelmixer=aa=0.5[logo];[0:v][logo]overlay=10:10" output.mp4 | パディングとオーバーレイ |
62 | テキスト | テキスト描画 | ffmpeg -i input.mp4 -vf "drawtext=text='Hello World':fontsize=24:fontcolor=white:x=10:y=10" output.mp4 | テキストと字幕の追加 |
63 | テキスト | タイムコード表示 | ffmpeg -i input.mp4 -vf "drawtext=text='%{pts\\:hms}':fontsize=24:fontcolor=white:x=10:y=10" output.mp4 | テキストと字幕の追加 |
64 | テキスト | カスタムフォント使用 | ffmpeg -i input.mp4 -vf "drawtext=text='日本語':fontfile=/path/to/font.ttf:fontsize=24:fontcolor=white:x=10:y=10" output.mp4 | テキストと字幕の追加 |
65 | 字幕 | SRT 字幕焼き込み | ffmpeg -i input.mp4 -vf "subtitles=subtitle.srt" output.mp4 | テキストと字幕の追加 |
66 | 字幕 | ASS 字幕焼き込み | ffmpeg -i input.mp4 -vf "ass=subtitle.ass" output.mp4 | テキストと字幕の追加 |
67 | ブラー | ぼかし効果 | ffmpeg -i input.mp4 -vf "boxblur=5:1" output.mp4 | ブラーとシャープネス |
68 | ブラー | 部分的にぼかし | ffmpeg -i input.mp4 -vf "crop=100:100:50:50,boxblur=10[blurred];[0:v][blurred]overlay=50:50" output.mp4 | ブラーとシャープネス |
69 | シャープネス | シャープネス強化 | ffmpeg -i input.mp4 -vf "unsharp=5:5:1.0:5:5:0.0" output.mp4 | ブラーとシャープネス |
70 | シャープネス | アンシャープマスク | ffmpeg -i input.mp4 -vf "unsharp=7:7:2.5:7:7:0.0" output.mp4 | ブラーとシャープネス |
71 | ノイズ | ノイズ除去 | ffmpeg -i input.mp4 -vf "hqdn3d" output.mp4 | ノイズとデインターレース |
72 | ノイズ | 時間軸ノイズ除去 | ffmpeg -i input.mp4 -vf "nlmeans" output.mp4 | ノイズとデインターレース |
73 | デインターレース | インターレース解除 | ffmpeg -i input.mp4 -vf "yadif" output.mp4 | ノイズとデインターレース |
74 | デインターレース | yadif フィルタ | ffmpeg -i input.mp4 -vf "yadif=mode=0:parity=-1:deint=0" output.mp4 | ノイズとデインターレース |
75 | 速度変更 | 2 倍速再生 | ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output.mp4 | 速度変更と逆再生 |
76 | 速度変更 | 0.5 倍速再生 | ffmpeg -i input.mp4 -vf "setpts=2.0*PTS" output.mp4 | 速度変更と逆再生 |
77 | 速度変更 | 音声付き 2 倍速 | ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mp4 | 速度変更と逆再生 |
78 | 速度変更 | 音声付き 0.5 倍速 | ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=2.0*PTS[v];[0:a]atempo=0.5[a]" -map "[v]" -map "[a]" output.mp4 | 速度変更と逆再生 |
79 | 逆再生 | 動画を逆再生 | ffmpeg -i input.mp4 -vf "reverse" output.mp4 | 速度変更と逆再生 |
80 | 逆再生 | 音声付き逆再生 | ffmpeg -i input.mp4 -vf "reverse" -af "areverse" output.mp4 | 速度変更と逆再生 |
81 | 音声フィルタ | 音量調整(+10dB) | ffmpeg -i input.mp4 -af "volume=10dB" output.mp4 | 音声フィルタとエフェクト |
82 | 音声フィルタ | 音量調整(-5dB) | ffmpeg -i input.mp4 -af "volume=-5dB" output.mp4 | 音声フィルタとエフェクト |
83 | 音声フィルタ | 音量正規化 | ffmpeg -i input.mp4 -af "loudnorm" output.mp4 | 音声フィルタとエフェクト |
84 | 音声フィルタ | フェードイン | ffmpeg -i input.mp4 -af "afade=t=in:st=0:d=3" output.mp4 | 音声フィルタとエフェクト |
85 | 音声フィルタ | フェードアウト | ffmpeg -i input.mp4 -af "afade=t=out:st=57:d=3" output.mp4 | 音声フィルタとエフェクト |
86 | 音声効果 | エコー効果 | ffmpeg -i input.mp4 -af "aecho=0.8:0.9:1000:0.3" output.mp4 | 音声フィルタとエフェクト |
87 | 音声効果 | ローパスフィルタ | ffmpeg -i input.mp4 -af "lowpass=f=1000" output.mp4 | 音声フィルタとエフェクト |
88 | 音声効果 | ハイパスフィルタ | ffmpeg -i input.mp4 -af "highpass=f=200" output.mp4 | 音声フィルタとエフェクト |
89 | ストリーム選択 | 特定の動画ストリーム選択 | ffmpeg -i input.mp4 -map 0:v:0 -c copy output.mp4 | ストリーム指定とマッピング |
90 | ストリーム選択 | 特定の音声ストリーム選択 | ffmpeg -i input.mp4 -map 0:v:0 -map 0:a:1 -c copy output.mp4 | ストリーム指定とマッピング |
91 | ストリーム選択 | 字幕ストリーム選択 | ffmpeg -i input.mkv -map 0:v -map 0:a -map 0:s:0 -c copy output.mkv | ストリーム指定とマッピング |
92 | ストリーム選択 | 複数音声トラック保持 | ffmpeg -i input.mkv -map 0:v -map 0:a:0 -map 0:a:1 -c copy output.mkv | ストリーム指定とマッピング |
93 | マルチ出力 | 複数解像度同時出力 | ffmpeg -i input.mp4 -vf scale=1920:1080 -c:v libx264 -b:v 5M output_1080p.mp4 ... | ストリーム指定とマッピング |
94 | メタデータ | タイトル設定 | ffmpeg -i input.mp4 -metadata title="My Video Title" -c copy output.mp4 | メタデータとチャプター |
95 | メタデータ | 作成者設定 | ffmpeg -i input.mp4 -metadata author="John Doe" -c copy output.mp4 | メタデータとチャプター |
96 | メタデータ | コメント設定 | ffmpeg -i input.mp4 -metadata comment="This is a sample video" -c copy output.mp4 | メタデータとチャプター |
97 | メタデータ | メタデータ削除 | ffmpeg -i input.mp4 -map_metadata -1 -c copy output.mp4 | メタデータとチャプター |
98 | ストリーミング | HLS 配信用変換 | ffmpeg -i input.mp4 -c:v libx264 -c:a aac -f hls -hls_time 10 -hls_playlist_type vod output.m3u8 | ストリーミングとライブ配信 |
99 | ストリーミング | DASH 配信用変換 | ffmpeg -i input.mp4 -c:v libx264 -c:a aac -f dash output.mpd | ストリーミングとライブ配信 |
100 | ストリーミング | RTMP ストリーミング | ffmpeg -re -i input.mp4 -c:v libx264 -preset veryfast -maxrate 3000k -bufsize 6000k -c:a aac -f flv rtmp://live.example.com/app/streamkey | ストリーミングとライブ配信 |
背景
FFmpeg とは何か
FFmpeg は、動画や音声ファイルを記録・変換・ストリーミングするためのオープンソースのマルチメディアフレームワークです。1990 年代後半から開発が続いており、現在では業界標準のツールとして広く認知されています。
FFmpeg が対応するコーデックやフォーマットは非常に多岐にわたります。
mermaidflowchart TB
input["入力<br/>(様々な形式・コーデック)"]
ffmpeg["FFmpeg エンジン"]
decode["デコード処理"]
filter["フィルタ処理<br/>(任意)"]
encode["エンコード処理"]
output["出力<br/>(指定形式・コーデック)"]
input --> ffmpeg
ffmpeg --> decode
decode --> filter
filter --> encode
encode --> output
図で理解できる要点
- FFmpeg は入力から出力まで一貫して処理する
- デコード → フィルタ → エンコードの流れが基本
- フィルタ処理は任意で追加可能
なぜコマンドラインなのか
GUI ツールも数多く存在しますが、コマンドラインでの FFmpeg 操作には以下のような利点があります。
- 自動化が容易: シェルスクリプトやバッチ処理で大量のファイルを一括処理できます
- 柔軟性が高い: GUI では実現できない細かい設定やフィルタの組み合わせが可能です
- リソース効率: GUI のオーバーヘッドがないため、サーバー環境でも軽快に動作します
- 再現性: コマンド履歴を残すことで、同じ処理を確実に再実行できます
FFmpeg の主要コンポーネント
FFmpeg プロジェクトは、複数のコマンドラインツールから構成されています。
# | ツール名 | 主な用途 |
---|---|---|
1 | ffmpeg | メディアファイルの変換・処理 |
2 | ffprobe | メディアファイルの情報表示 |
3 | ffplay | メディアファイルの再生 |
4 | ffserver | ストリーミングサーバー(廃止) |
本記事では、主に ffmpeg
コマンドに焦点を当てて解説します。
課題
FFmpeg の学習障壁
FFmpeg は非常に強力なツールですが、初めて使う方にとってはいくつかの課題があります。
mermaidflowchart TD
start["FFmpeg 学習開始"]
opt["膨大なオプション"]
syntax["複雑な構文"]
doc["分散したドキュメント"]
trial["試行錯誤"]
frustration["挫折しやすい"]
start --> opt
start --> syntax
start --> doc
opt --> trial
syntax --> trial
doc --> trial
trial --> frustration
図で理解できる要点
- オプションの多さが学習の障壁になる
- 構文の複雑さが理解を妨げる
- 試行錯誤を繰り返すうちに挫折しやすい
具体的な課題
オプションの多様性
FFmpeg には数百ものオプションが存在し、それぞれが特定の機能を持っています。どのオプションをどの順序で指定すべきか、初見では判断が困難です。
構文の複雑さ
フィルタの指定方法や、複数ストリームの扱い、出力ファイルのマッピングなど、構文ルールが複雑で、エラーメッセージも初心者には分かりにくいことがあります。
ドキュメントの分散
公式ドキュメントは充実していますが、情報が分散しており、目的の情報にたどり着くまでに時間がかかります。また、英語であることも日本語話者にとってはハードルとなります。
バージョンによる差異
FFmpeg は活発に開発が続いているため、バージョンによってオプションの挙動や利用可能なフィルタが異なることがあります。
これらの課題により、「やりたいことはあるのにコマンドが分からない」という状況に陥りがちです。
解決策
体系的なコマンド集の提供
本記事では、FFmpeg の機能を以下のカテゴリに分類し、それぞれに代表的なコマンドを提供します。
mermaidflowchart LR
basic["基本操作"]
codec["コーデック指定"]
quality["品質制御"]
transform["変形・調整"]
filter["フィルタ処理"]
stream["ストリーム操作"]
basic --> codec
codec --> quality
quality --> transform
transform --> filter
filter --> stream
図で理解できる要点
- 基本操作から高度な操作へ段階的に学習できる
- 各カテゴリが論理的に繋がっている
- 自分のレベルに応じて必要な部分を参照できる
カテゴリ構成
本記事で扱うカテゴリは以下の通りです。
# | カテゴリ | 含まれる内容 |
---|---|---|
1 | 基本的な入力・出力操作 | ファイル変換、情報表示、コピー |
2 | コーデック指定の基本 | H.264、H.265、VP9、AV1 など |
3 | ビットレートとクオリティ制御 | ビットレート指定、CRF、2 パスエンコード |
4 | 解像度とアスペクト比 | リサイズ、アスペクト比変更 |
5 | フレームレートとタイムコード | fps 変更、タイムコード付与 |
6 | 動画のトリミングと切り出し | 開始位置、長さ、範囲指定 |
7 | 動画の連結と分割 | 複数ファイルの結合、セグメント分割 |
8 | 画像との相互変換 | 動画から画像、画像から動画 |
9 | 基本的なビデオフィルタ | 明るさ、コントラスト、彩度調整 |
10 | 回転・反転・クロップ | 向き変更、切り抜き |
11 | パディングとオーバーレイ | 黒帯追加、ウォーターマーク |
12 | テキストと字幕の追加 | テキスト描画、字幕焼き込み |
13 | ブラーとシャープネス | ぼかし、シャープ化 |
14 | ノイズとデインターレース | ノイズ除去、インターレース解除 |
15 | 速度変更と逆再生 | 倍速、スロー、逆再生 |
16 | 音声フィルタとエフェクト | 音量調整、フェード、エコー |
17 | ストリーム指定とマッピング | 特定ストリームの選択、複数出力 |
18 | メタデータとチャプター | タイトル、作成者、コメント設定 |
19 | ストリーミングとライブ配信 | HLS、DASH、RTMP |
実用的なコマンド例の提供
各カテゴリでは、実際にそのまま使える、または少しの変更で使えるコマンド例を提供します。コメント付きでオプションの意味を明示することで、理解を深めやすくしています。
具体例
それでは、100 個の FFmpeg コマンドを順番に見ていきましょう。
基本的な入力・出力操作
まずは FFmpeg の基本となる、ファイルの入出力操作からです。
1. MP4 から AVI への変換
最もシンプルな形式変換です。
bashffmpeg -i input.mp4 output.avi
-i input.mp4
: 入力ファイルを指定しますoutput.avi
: 出力ファイル名で、拡張子から形式を自動判別します
2. 動画から音声を抽出
動画ファイルから音声トラックのみを取り出します。
bashffmpeg -i input.mp4 -vn -acodec copy output.aac
-vn
: 動画ストリームを無効化します-acodec copy
: 音声コーデックを再エンコードせずコピーします
3. 音声ファイルの形式変換
音声ファイルのフォーマットを変換します。
bashffmpeg -i input.mp3 output.wav
拡張子を変えるだけで、FFmpeg が適切なコーデックを選択してくれます。
4. 動画情報の表示
ファイルの詳細情報を確認する際に使います。
bashffmpeg -i input.mp4
エラーとして終了しますが、ファイル情報は表示されます。より詳細な情報が必要な場合は ffprobe
を使用します。
bashffprobe -show_format -show_streams input.mp4
-show_format
: コンテナフォーマットの情報を表示します-show_streams
: 各ストリームの詳細情報を表示します
5. コーデック指定なしコピー
再エンコードせず、ストリームをそのままコピーします。高速で画質劣化がありません。
bashffmpeg -i input.mp4 -codec copy output.mp4
-codec copy
: すべてのストリームをコピーモードにします
コーデック指定の基本
動画や音声のコーデックを明示的に指定する方法です。
6. H.264 エンコード
最も一般的な動画コーデックです。
bashffmpeg -i input.mp4 -vcodec libx264 output.mp4
-vcodec libx264
: H.264 コーデックを使用しますlibx264
は FFmpeg での H.264 エンコーダの名称です
7. H.265/HEVC エンコード
H.264 よりも高圧縮率のコーデックです。
bashffmpeg -i input.mp4 -vcodec libx265 output.mp4
-vcodec libx265
: H.265/HEVC コーデックを使用します- ファイルサイズを抑えつつ高画質を維持できます
8. VP9 エンコード
Google が開発したオープンソースコーデックです。
bashffmpeg -i input.mp4 -vcodec libvpx-vp9 output.webm
-vcodec libvpx-vp9
: VP9 コーデックを使用します- WebM コンテナと組み合わせるのが一般的です
9. AV1 エンコード
次世代の高効率コーデックです。
bashffmpeg -i input.mp4 -vcodec libaom-av1 output.mp4
-vcodec libaom-av1
: AV1 コーデックを使用します- エンコード時間は長いですが、圧縮効率は非常に高いです
10. AAC 音声エンコード
高品質な音声コーデックです。
bashffmpeg -i input.mp4 -acodec aac -b:a 192k output.mp4
-acodec aac
: AAC コーデックを使用します-b:a 192k
: 音声ビットレートを 192kbps に設定します
ビットレートとクオリティ制御
動画の品質やファイルサイズを制御する方法です。
11. 動画ビットレート指定
動画ストリームのビットレートを明示的に設定します。
bashffmpeg -i input.mp4 -b:v 2M output.mp4
-b:v 2M
: 動画ビットレートを 2Mbps に設定しますM
はメガビット、k
はキロビットを表します
12. 音声ビットレート指定
音声ストリームのビットレートを設定します。
bashffmpeg -i input.mp4 -b:a 128k output.mp4
-b:a 128k
: 音声ビットレートを 128kbps に設定します- 一般的には 128k から 320k の範囲で指定します
13. CRF による品質指定
Constant Rate Factor を使った品質ベースのエンコードです。
bashffmpeg -i input.mp4 -vcodec libx264 -crf 23 output.mp4
-crf 23
: 品質を指定します(0 が最高品質、51 が最低品質)- 23 がデフォルト値で、視覚的に高品質とされます
14. 2 パスエンコード(1 パス目)
より正確なビットレート制御のための 2 パスエンコードです。
bashffmpeg -i input.mp4 -vcodec libx264 -b:v 2M -pass 1 -f mp4 /dev/null
-pass 1
: 1 パス目を実行します-f mp4 /dev/null
: 出力を破棄します(統計情報のみ生成)
15. 2 パスエンコード(2 パス目)
1 パス目で収集した情報を元に本エンコードを行います。
bashffmpeg -i input.mp4 -vcodec libx264 -b:v 2M -pass 2 output.mp4
-pass 2
: 2 パス目を実行します- 1 パス目の統計情報を使って最適化されたエンコードを行います
解像度とアスペクト比
動画の解像度やアスペクト比を変更する方法です。
16. 解像度変更(720p)
HD 解像度に変換します。
bashffmpeg -i input.mp4 -vf scale=1280:720 output.mp4
-vf scale=1280:720
: 幅 1280、高さ 720 にリサイズしますvf
は video filter の略です
17. 解像度変更(1080p)
フル HD 解像度に変換します。
bashffmpeg -i input.mp4 -vf scale=1920:1080 output.mp4
-vf scale=1920:1080
: 1920x1080 にリサイズします
18. 横幅固定でアスペクト比維持
横幅を指定し、縦幅を自動計算します。
bashffmpeg -i input.mp4 -vf scale=640:-1 output.mp4
scale=640:-1
: 横幅 640、縦幅は元のアスペクト比を維持-1
は自動計算を意味します
19. 縦幅固定でアスペクト比維持
縦幅を指定し、横幅を自動計算します。
bashffmpeg -i input.mp4 -vf scale=-1:480 output.mp4
scale=-1:480
: 縦幅 480、横幅は元のアスペクト比を維持します
20. アスペクト比 16:9 に強制
表示アスペクト比を強制的に変更します(映像は変形します)。
bashffmpeg -i input.mp4 -aspect 16:9 output.mp4
-aspect 16:9
: 表示アスペクト比を 16:9 に設定します
フレームレートとタイムコード
フレームレートの変更やタイムコードの操作です。
21. フレームレート変更(30fps)
動画のフレームレートを 30fps に変更します。
bashffmpeg -i input.mp4 -r 30 output.mp4
-r 30
: 出力フレームレートを 30fps に設定します
22. フレームレート変更(60fps)
高フレームレートに変換します。
bashffmpeg -i input.mp4 -r 60 output.mp4
-r 60
: 60fps に設定します- フレーム補間は行われず、単純に重複またはスキップされます
23. フレームレート変更(24fps)
映画的なフレームレートに変換します。
bashffmpeg -i input.mp4 -r 24 output.mp4
-r 24
: 24fps に設定します(映画標準)
24. 可変フレームレートを固定に
VFR を CFR に変換します。
bashffmpeg -i input.mp4 -vsync cfr output.mp4
-vsync cfr
: Constant Frame Rate モードにします- 編集ソフトでの互換性が向上します
25. タイムコード付与
SMPTE タイムコードを付与します。
bashffmpeg -i input.mp4 -timecode 00:00:00:00 output.mp4
-timecode 00:00:00:00
: 開始タイムコードを指定します- 形式は
HH:MM:SS:FF
(時:分:秒:フレーム)です
動画のトリミングと切り出し
動画の一部分を切り出す方法です。
26. 開始位置と長さ指定
指定した位置から指定時間分を切り出します。
bashffmpeg -i input.mp4 -ss 00:01:00 -t 00:00:30 output.mp4
-ss 00:01:00
: 1 分の位置から開始します-t 00:00:30
: 30 秒間切り出します
27. 開始位置と終了位置指定
開始と終了の両方を時刻で指定します。
bashffmpeg -i input.mp4 -ss 00:01:00 -to 00:02:00 output.mp4
-ss 00:01:00
: 1 分の位置から開始します-to 00:02:00
: 2 分の位置まで切り出します
28. 最初の 10 秒を切り出し
動画の冒頭部分を取得します。
bashffmpeg -i input.mp4 -t 10 output.mp4
-t 10
: 最初の 10 秒を取得します
29. 最後の 10 秒を切り出し
動画の終盤部分を取得します。まず動画の長さを確認してから計算します。
bashffmpeg -sseof -10 -i input.mp4 output.mp4
-sseof -10
: 終端から 10 秒前から開始します
30. 高速コピーモード
再エンコードせずに高速切り出しを行います。
bashffmpeg -ss 00:01:00 -i input.mp4 -t 30 -c copy output.mp4
-ss
を-i
の前に置くことで高速シーク-c copy
: 再エンコードなしでコピーします
動画の連結と分割
複数の動画を結合したり、分割したりする方法です。
31. 連結リストファイル使用
テキストファイルで連結するファイルを指定します。
まず、list.txt
というファイルを作成します。
textfile 'input1.mp4'
file 'input2.mp4'
file 'input3.mp4'
次に、以下のコマンドで連結します。
bashffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4
-f concat
: concat デマルチプレクサを使用します-safe 0
: 安全性チェックを無効化します-c copy
: 再エンコードなしでコピーします
32. コピーモードで連結
高速に連結を行います。
bashffmpeg -i "concat:input1.mp4|input2.mp4|input3.mp4" -c copy output.mp4
concat:
プロトコルを使用します- すべてのファイルが同じコーデック・解像度である必要があります
33. フィルタを使った連結
異なる形式のファイルでも連結できます。
bashffmpeg -i input1.mp4 -i input2.mp4 -filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[v][a]" -map "[v]" -map "[a]" output.mp4
concat=n=2:v=1:a=1
: 2 つのファイル、動画 1 本、音声 1 本を連結します-map
でストリームをマッピングします
34. 一定時間ごとに分割
指定した長さでセグメント分割します。
bashffmpeg -i input.mp4 -c copy -f segment -segment_time 60 output%03d.mp4
-segment_time 60
: 60 秒ごとに分割します%03d
: 連番を 3 桁で付与します(例: output001.mp4)
35. フレーム単位で分割
指定フレーム数ごとに分割します。
bashffmpeg -i input.mp4 -c copy -f segment -segment_frames 300 output%03d.mp4
-segment_frames 300
: 300 フレームごとに分割します
画像との相互変換
動画と静止画を相互に変換する方法です。
36. 特定フレームを画像化
指定した時刻のフレームを画像として保存します。
bashffmpeg -i input.mp4 -ss 00:00:05 -vframes 1 output.png
-ss 00:00:05
: 5 秒の位置にシークします-vframes 1
: 1 フレームのみ出力します
37. 1 秒ごとに画像抽出
定期的にフレームを抽出します。
bashffmpeg -i input.mp4 -vf fps=1 output%04d.png
fps=1
: 1 秒に 1 フレームの割合で抽出します%04d
: 4 桁の連番を付与します
38. 全フレーム画像化
すべてのフレームを個別の画像として保存します。
bashffmpeg -i input.mp4 output%04d.png
元のフレームレートのまま、すべてのフレームが連番画像として出力されます。
39. サムネイル生成
動画の中央付近からサムネイルを生成します。
bashffmpeg -i input.mp4 -ss 00:00:10 -vframes 1 -vf scale=320:-1 thumbnail.jpg
-vf scale=320:-1
: 横幅 320px にリサイズします- JPG 形式でサムネイルを作成します
40. 画像シーケンスから動画作成
連番画像を動画に変換します。
bashffmpeg -framerate 30 -i input%04d.png -c:v libx264 -pix_fmt yuv420p output.mp4
-framerate 30
: 入力フレームレートを 30fps に設定します-pix_fmt yuv420p
: 互換性の高いピクセルフォーマットを指定します
41. 1 枚の画像で動画作成
静止画を指定時間の動画にします。
bashffmpeg -loop 1 -i image.jpg -t 10 -c:v libx264 -pix_fmt yuv420p output.mp4
-loop 1
: 画像をループします-t 10
: 10 秒の動画を作成します
42. スライドショー作成
複数画像をスライドショー形式で動画化します。
bashffmpeg -framerate 1/5 -i input%04d.jpg -c:v libx264 -pix_fmt yuv420p output.mp4
-framerate 1/5
: 5 秒に 1 枚の割合で表示します
基本的なビデオフィルタ
色調整などの基本的なフィルタです。
43. 明るさ調整
動画の明るさを変更します。
bashffmpeg -i input.mp4 -vf eq=brightness=0.1 output.mp4
eq=brightness=0.1
: 明るさを +0.1 調整します- 範囲は -1.0 から 1.0 です
44. コントラスト調整
コントラストを変更します。
bashffmpeg -i input.mp4 -vf eq=contrast=1.5 output.mp4
eq=contrast=1.5
: コントラストを 1.5 倍にします- 1.0 が標準値です
45. 彩度調整
色の鮮やかさを変更します。
bashffmpeg -i input.mp4 -vf eq=saturation=1.5 output.mp4
eq=saturation=1.5
: 彩度を 1.5 倍にします- 0.0 でモノクロになります
46. ガンマ補正
ガンマ値を調整します。
bashffmpeg -i input.mp4 -vf eq=gamma=1.5 output.mp4
eq=gamma=1.5
: ガンマを 1.5 に設定します- 明るい部分と暗い部分のバランスを調整します
47. 色相変更
色合いを変更します。
bashffmpeg -i input.mp4 -vf hue=h=90 output.mp4
hue=h=90
: 色相を 90 度回転します- 範囲は -360 から 360 度です
回転・反転・クロップ
動画の向きや表示範囲を変更する方法です。
48. 90 度回転(時計回り)
動画を時計回りに回転します。
bashffmpeg -i input.mp4 -vf "transpose=1" output.mp4
transpose=1
: 時計回りに 90 度回転します
49. 90 度回転(反時計回り)
動画を反時計回りに回転します。
bashffmpeg -i input.mp4 -vf "transpose=2" output.mp4
transpose=2
: 反時計回りに 90 度回転します
50. 180 度回転
動画を上下逆さまにします。
bashffmpeg -i input.mp4 -vf "transpose=2,transpose=2" output.mp4
transpose=2,transpose=2
: 90 度回転を 2 回適用します
または、以下のように書くこともできます。
bashffmpeg -i input.mp4 -vf "hflip,vflip" output.mp4
hflip,vflip
: 水平反転と垂直反転を組み合わせます
51. 水平反転
左右を反転します。
bashffmpeg -i input.mp4 -vf "hflip" output.mp4
hflip
: horizontal flip の略です
52. 垂直反転
上下を反転します。
bashffmpeg -i input.mp4 -vf "vflip" output.mp4
vflip
: vertical flip の略です
53. 中央部分を切り出し
動画の中央部分を指定サイズで切り抜きます。
bashffmpeg -i input.mp4 -vf "crop=640:480" output.mp4
crop=640:480
: 640x480 のサイズで中央を切り出します
54. 左上から切り出し
位置を指定して切り抜きます。
bashffmpeg -i input.mp4 -vf "crop=640:480:0:0" output.mp4
crop=640:480:0:0
: 幅:高さ座標 座標を指定します
55. 黒帯自動削除
上下左右の黒帯を自動検出して削除します。
bashffmpeg -i input.mp4 -vf "cropdetect=24:16:0" output.mp4
cropdetect
: 黒帯を検出します(実際には検出結果を元に crop を実行する必要があります)
実際に削除するには、まず検出を行い、その結果を使います。
bashffmpeg -i input.mp4 -vf "crop=1920:800:0:140" output.mp4
パディングとオーバーレイ
余白の追加や画像の重ね合わせです。
56. 上下に黒帯追加
動画の上下に黒い余白を追加します。
bashffmpeg -i input.mp4 -vf "pad=1920:1080:0:40" output.mp4
pad=1920:1080:0:40
: 幅:高さ位置 位置を指定します - 元動画は y=40 の位置に配置されます
57. 左右に黒帯追加
動画の左右に黒い余白を追加します。
bashffmpeg -i input.mp4 -vf "pad=1920:1080:140:0" output.mp4
- 元動画は x=140 の位置に配置されます
58. 16:9 化(中央配置)
4:3 動画を 16:9 にパディングします。
bashffmpeg -i input.mp4 -vf "pad=1920:1080:(ow-iw)/2:(oh-ih)/2" output.mp4
(ow-iw)/2
: 出力幅 - 入力幅 の半分(左右中央)(oh-ih)/2
: 出力高さ - 入力高さ の半分(上下中央)
59. ウォーターマーク追加
ロゴ画像を動画に重ねます。
bashffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=10:10" output.mp4
overlay=10:10
: x=10, y=10 の位置にロゴを配置します
60. ロゴを右下に配置
画面の右下隅にロゴを配置します。
bashffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=W-w-10:H-h-10" output.mp4
W-w-10
: 動画幅 - ロゴ幅 - 10px のマージンH-h-10
: 動画高さ - ロゴ高さ - 10px のマージン
61. 半透明ロゴ
ロゴを半透明で重ねます。
bashffmpeg -i input.mp4 -i logo.png -filter_complex "[1:v]format=rgba,colorchannelmixer=aa=0.5[logo];[0:v][logo]overlay=10:10" output.mp4
colorchannelmixer=aa=0.5
: アルファチャンネルを 0.5 に設定します
テキストと字幕の追加
テキストや字幕を動画に焼き込む方法です。
62. テキスト描画
画面にテキストを表示します。
bashffmpeg -i input.mp4 -vf "drawtext=text='Hello World':fontsize=24:fontcolor=white:x=10:y=10" output.mp4
drawtext
: テキスト描画フィルタですx=10:y=10
: 表示位置を指定します
63. タイムコード表示
現在のタイムコードを表示します。
bashffmpeg -i input.mp4 -vf "drawtext=text='%{pts\:hms}':fontsize=24:fontcolor=white:x=10:y=10" output.mp4
%{pts\:hms}
: 現在の再生時刻を時:分:秒形式で表示します
64. カスタムフォント使用
指定したフォントファイルを使用します。
bashffmpeg -i input.mp4 -vf "drawtext=text='日本語テキスト':fontfile=/path/to/font.ttf:fontsize=24:fontcolor=white:x=10:y=10" output.mp4
fontfile
: フォントファイルのパスを指定します
65. SRT 字幕焼き込み
SRT 形式の字幕ファイルを動画に焼き込みます。
bashffmpeg -i input.mp4 -vf "subtitles=subtitle.srt" output.mp4
subtitles
: 字幕フィルタです
66. ASS 字幕焼き込み
ASS 形式の字幕ファイルを焼き込みます。
bashffmpeg -i input.mp4 -vf "ass=subtitle.ass" output.mp4
ass
: Advanced SubStation Alpha 形式の字幕を処理します
ブラーとシャープネス
ぼかしやシャープ化の処理です。
67. ぼかし効果
画面全体にぼかしをかけます。
bashffmpeg -i input.mp4 -vf "boxblur=5:1" output.mp4
boxblur=5:1
: ぼかし半径 5、適用回数 1 を指定します
68. 部分的にぼかし
画面の一部分だけをぼかします。
bashffmpeg -i input.mp4 -vf "crop=100:100:50:50,boxblur=10[blurred];[0:v][blurred]overlay=50:50" output.mp4
- 指定領域を切り出してぼかし、元の位置に重ねます
69. シャープネス強化
画像をシャープにします。
bashffmpeg -i input.mp4 -vf "unsharp=5:5:1.0:5:5:0.0" output.mp4
unsharp
: アンシャープマスクフィルタです- 最初の 3 つの値がルーマ(明度)、次の 3 つがクロマ(色)の設定です
70. アンシャープマスク
より強力なシャープ化を行います。
bashffmpeg -i input.mp4 -vf "unsharp=7:7:2.5:7:7:0.0" output.mp4
- シャープの強度を上げたバージョンです
ノイズとデインターレース
ノイズ除去やインターレース解除の処理です。
71. ノイズ除去
動画のノイズを軽減します。
bashffmpeg -i input.mp4 -vf "hqdn3d" output.mp4
hqdn3d
: High Quality Denoising 3D フィルタです
72. 時間軸ノイズ除去
時間方向のノイズを除去します。
bashffmpeg -i input.mp4 -vf "nlmeans" output.mp4
nlmeans
: Non-Local Means デノイズアルゴリズムです
73. インターレース解除
インターレース映像をプログレッシブに変換します。
bashffmpeg -i input.mp4 -vf "yadif" output.mp4
yadif
: Yet Another DeInterlacing Filter です
74. yadif フィルタ
より詳細な設定でデインターレースを行います。
bashffmpeg -i input.mp4 -vf "yadif=mode=0:parity=-1:deint=0" output.mp4
mode=0
: フレームレートを変えず出力しますparity=-1
: フィールドパリティを自動検出しますdeint=0
: すべてのフレームをデインターレースします
速度変更と逆再生
再生速度の変更や逆再生の処理です。
75. 2 倍速再生
動画を 2 倍速にします(音声なし)。
bashffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output.mp4
setpts=0.5*PTS
: プレゼンテーションタイムスタンプを半分にします
76. 0.5 倍速再生
動画をスローモーションにします(音声なし)。
bashffmpeg -i input.mp4 -vf "setpts=2.0*PTS" output.mp4
setpts=2.0*PTS
: タイムスタンプを 2 倍にします
77. 音声付き 2 倍速
音声も含めて 2 倍速にします。
bashffmpeg -i input.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mp4
atempo=2.0
: 音声を 2 倍速にしますatempo
の範囲は 0.5 から 2.0 です
78. 音声付き 0.5 倍速
音声も含めてスローモーションにします。
bashffmpeg -i input.mp4 -filter_complex "[0:v]setpts=2.0*PTS[v];[0:a]atempo=0.5[a]" -map "[v]" -map "[a]" output.mp4
atempo=0.5
: 音声を 0.5 倍速にします
79. 動画を逆再生
動画を逆順に再生します(音声なし)。
bashffmpeg -i input.mp4 -vf "reverse" output.mp4
reverse
: フレームを逆順にします
80. 音声付き逆再生
音声も含めて逆再生します。
bashffmpeg -i input.mp4 -vf "reverse" -af "areverse" output.mp4
areverse
: 音声を逆順にします
音声フィルタとエフェクト
音声の調整やエフェクトの適用です。
81. 音量調整(+10dB)
音量を増幅します。
bashffmpeg -i input.mp4 -af "volume=10dB" output.mp4
volume=10dB
: 音量を 10dB 増幅します
82. 音量調整(-5dB)
音量を減衰します。
bashffmpeg -i input.mp4 -af "volume=-5dB" output.mp4
volume=-5dB
: 音量を 5dB 減衰します
83. 音量正規化
音量を自動的に最適化します。
bashffmpeg -i input.mp4 -af "loudnorm" output.mp4
loudnorm
: ラウドネス正規化フィルタです- EBU R128 規格に基づいて音量を調整します
84. フェードイン
音声を徐々に大きくします。
bashffmpeg -i input.mp4 -af "afade=t=in:st=0:d=3" output.mp4
afade=t=in
: フェードインを指定しますst=0
: 開始時刻 0 秒d=3
: 3 秒間フェードします
85. フェードアウト
音声を徐々に小さくします。
bashffmpeg -i input.mp4 -af "afade=t=out:st=57:d=3" output.mp4
afade=t=out
: フェードアウトを指定しますst=57
: 57 秒から開始します
86. エコー効果
エコーを追加します。
bashffmpeg -i input.mp4 -af "aecho=0.8:0.9:1000:0.3" output.mp4
aecho
: エコーフィルタです0.8:0.9:1000:0.3
: ゲイン:フィードバック:遅延 ms:減衰
87. ローパスフィルタ
高周波をカットします。
bashffmpeg -i input.mp4 -af "lowpass=f=1000" output.mp4
lowpass=f=1000
: 1000Hz 以下を通過させます
88. ハイパスフィルタ
低周波をカットします。
bashffmpeg -i input.mp4 -af "highpass=f=200" output.mp4
highpass=f=200
: 200Hz 以上を通過させます
ストリーム指定とマッピング
複数のストリームを扱う方法です。
mermaidflowchart LR
input["入力ファイル"]
v0["動画ストリーム 0"]
v1["動画ストリーム 1"]
a0["音声ストリーム 0"]
a1["音声ストリーム 1"]
s0["字幕ストリーム 0"]
output["出力ファイル"]
input --> v0
input --> v1
input --> a0
input --> a1
input --> s0
v0 -.map.-> output
a0 -.map.-> output
s0 -.map.-> output
図で理解できる要点
- 入力ファイルは複数のストリームを持つことができる
-map
オプションで特定のストリームを選択する- 必要なストリームだけを出力に含められる
89. 特定の動画ストリーム選択
複数の動画ストリームから 1 つを選択します。
bashffmpeg -i input.mp4 -map 0:v:0 -c copy output.mp4
-map 0:v:0
: 入力 0 の動画ストリーム 0 を選択します
90. 特定の音声ストリーム選択
複数の音声トラックから 1 つを選択します。
bashffmpeg -i input.mp4 -map 0:v:0 -map 0:a:1 -c copy output.mp4
-map 0:a:1
: 音声ストリーム 1 を選択します
91. 字幕ストリーム選択
特定の字幕トラックを選択します。
bashffmpeg -i input.mkv -map 0:v -map 0:a -map 0:s:0 -c copy output.mkv
-map 0:s:0
: 字幕ストリーム 0 を選択します
92. 複数音声トラック保持
動画と複数の音声トラックを維持します。
bashffmpeg -i input.mkv -map 0:v -map 0:a:0 -map 0:a:1 -c copy output.mkv
- 2 つの音声トラックを両方とも出力に含めます
93. 複数解像度同時出力
1 回のエンコードで複数の解像度を出力します。
bashffmpeg -i input.mp4 \
-vf scale=1920:1080 -c:v libx264 -b:v 5M output_1080p.mp4 \
-vf scale=1280:720 -c:v libx264 -b:v 2.5M output_720p.mp4 \
-vf scale=854:480 -c:v libx264 -b:v 1M output_480p.mp4
- 同時に 3 つの解像度を出力します
メタデータとチャプター
ファイルのメタ情報を編集する方法です。
94. タイトル設定
動画ファイルにタイトルを設定します。
bashffmpeg -i input.mp4 -metadata title="My Video Title" -c copy output.mp4
-metadata title
: タイトルメタデータを設定します
95. 作成者設定
作成者情報を設定します。
bashffmpeg -i input.mp4 -metadata author="John Doe" -c copy output.mp4
-metadata author
: 作成者メタデータを設定します
96. コメント設定
コメントを追加します。
bashffmpeg -i input.mp4 -metadata comment="This is a sample video" -c copy output.mp4
-metadata comment
: コメントメタデータを設定します
97. メタデータ削除
すべてのメタデータを削除します。
bashffmpeg -i input.mp4 -map_metadata -1 -c copy output.mp4
-map_metadata -1
: すべてのメタデータを削除します
ストリーミングとライブ配信
ストリーミング配信用の変換とライブ配信の方法です。
98. HLS 配信用変換
HTTP Live Streaming 用のファイルを生成します。
bashffmpeg -i input.mp4 -c:v libx264 -c:a aac -f hls -hls_time 10 -hls_playlist_type vod output.m3u8
-f hls
: HLS フォーマットを指定します-hls_time 10
: 10 秒ごとにセグメント分割します-hls_playlist_type vod
: VOD 用プレイリストを作成します
99. DASH 配信用変換
Dynamic Adaptive Streaming over HTTP 用に変換します。
bashffmpeg -i input.mp4 -c:v libx264 -c:a aac -f dash output.mpd
-f dash
: DASH フォーマットを指定します.mpd
ファイルが生成されます
100. RTMP ストリーミング
RTMP プロトコルでライブ配信を行います。
bashffmpeg -re -i input.mp4 -c:v libx264 -preset veryfast -maxrate 3000k -bufsize 6000k -c:a aac -f flv rtmp://live.example.com/app/streamkey
-re
: リアルタイムレートで読み込みます-preset veryfast
: 低遅延エンコード設定を使用します-f flv
: FLV コンテナで出力しますrtmp://
: 配信先の RTMP URL を指定します
まとめ
本記事では、FFmpeg を使った実践的なコマンドを 100 個ご紹介しました。基本的なファイル変換から、高度なフィルタ処理、ストリーム操作、ストリーミング配信まで、幅広い用途をカバーしています。
FFmpeg は非常に奥が深いツールですが、まずは自分の用途に近いコマンドを見つけて試してみることが上達への近道です。本記事の早見表を活用して、必要なコマンドを素早く見つけ、実際のプロジェクトで活用してください。
各コマンドは基本形を示していますので、オプションを組み合わせたり、パラメータを調整したりすることで、さらに柔軟な処理が可能になります。FFmpeg の公式ドキュメントも参照しながら、自分のワークフローに最適なコマンドを見つけていきましょう。
動画処理の世界は広大ですが、FFmpeg というツールを味方につけることで、その可能性は無限に広がります。本記事が、あなたの動画制作や処理作業の効率化に少しでもお役に立てれば幸いです。
関連リンク
- article
FFmpeg コマンド 100 連発:入力・出力・フィルタ・ストリーム指定の定番集
- article
FFmpeg を macOS で最適導入:Homebrew +オプション選定で機能漏れゼロ
- article
FFmpeg デインターレース比較:yadif vs bwdif vs nnedi3 の画質と速度検証
- article
FFmpeg 音ズレを根治:VFR→CFR 変換と PTS 補正の実践ガイド
- article
FFmpeg アーキテクチャ超図解:demuxer→decoder→filter→encoder→muxer の流れを一望
- article
Node.js × FFmpeg で音声抽出・変換:MP3/AAC/Opus への最短手順
- article
Apollo キャッシュ操作チートシート:`cache.modify`/`writeQuery`/`readFragment` 早見表
- article
GitHub Actions 条件式チートシート:if/contains/startsWith/always/success/failure
- article
Zod で CSV/TSV インポートを安全に処理:パース → 検証 → 差分レポート
- article
Yarn のインストール完全ガイド:Corepack 有効化からバージョン固定まで
- article
Git を macOS に最適導入:Homebrew・初期設定テンプレ・credential 管理まで
- article
Web Components で作るモーダルダイアログ:フォーカス管理・閉じる動線まで実装
- blog
iPhone 17シリーズの発表!全モデルiPhone 16から進化したポイントを見やすく整理
- blog
Googleストアから訂正案内!Pixel 10ポイント有効期限「1年」表示は誤りだった
- blog
【2025年8月】Googleストア「ストアポイント」は1年表記はミス?2年ルールとの整合性を検証
- blog
Googleストアの注文キャンセルはなぜ起きる?Pixel 10購入前に知るべき注意点
- blog
Pixcel 10シリーズの発表!全モデル Pixcel 9 から進化したポイントを見やすく整理
- blog
フロントエンドエンジニアの成長戦略:コーチングで最速スキルアップする方法
- review
今の自分に満足していますか?『持たざる者の逆襲 まだ何者でもない君へ』溝口勇児
- review
ついに語られた業界の裏側!『フジテレビの正体』堀江貴文が描くテレビ局の本当の姿
- review
愛する勇気を持てば人生が変わる!『幸せになる勇気』岸見一郎・古賀史健のアドラー実践編で真の幸福を手に入れる
- review
週末を変えれば年収も変わる!『世界の一流は「休日」に何をしているのか』越川慎司の一流週末メソッド
- review
新しい自分に会いに行こう!『自分の変え方』村岡大樹の認知科学コーチングで人生リセット
- review
科学革命から AI 時代へ!『サピエンス全史 下巻』ユヴァル・ノア・ハラリが予見する人類の未来