この記事の要点
• ffmpeg -i input.mp4 output.aviで基本的な形式変換
• -c copyで再エンコードせず高速コピー、-ssと-tで切り出し
• -vfでフィルタ適用、-crfで品質とサイズを調整
基本コマンド
| コマンド | 説明 |
|---|
ffmpeg -i input.mp4 output.avi | 形式変換 |
ffmpeg -i input.mp4 -c copy output.mp4 | コーデックコピー(再エンコードなし) |
ffmpeg -i input.mp4 -vn output.mp3 | 音声のみ抽出 |
ffmpeg -i input.mp3 -i cover.jpg output.mp4 | 音声と画像から動画作成 |
ffmpeg -formats | サポートされる形式一覧 |
ffmpeg -codecs | コーデック一覧 |
ポイント: -c copyは再エンコードせずストリームをコピーします。処理が高速で画質劣化もありませんが、コンテナ形式だけを変えたいときに使います。
動画の切り出し
| コマンド | 説明 |
|---|
ffmpeg -ss 00:01:30 -i input.mp4 -t 10 output.mp4 | 1分30秒から10秒間切り出し |
ffmpeg -i input.mp4 -ss 00:01:00 -to 00:02:00 output.mp4 | 1分から2分まで切り出し |
ffmpeg -ss 00:00:30 -i input.mp4 -c copy -t 20 output.mp4 | 再エンコードなしで切り出し |
| オプション | 説明 |
|---|
-ss HH:MM:SS | 開始位置(秒でも可: -ss 90) |
-t 秒数 | 切り出す長さ |
-to HH:MM:SS | 終了位置 |
実践メモ: -ssを-iの前に置くと高速ですが精度が落ちます。正確な位置で切りたい場合は-iの後に置きます。
エンコード設定
| コマンド | 説明 |
|---|
ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4 | H.264 でエンコード |
ffmpeg -i input.mp4 -c:v libx265 -crf 28 output.mp4 | H.265(HEVC)でエンコード |
ffmpeg -i input.mp4 -b:v 1M output.mp4 | ビットレート指定 |
ffmpeg -i input.mp4 -c:a aac -b:a 128k output.mp4 | 音声ビットレート指定 |
ffmpeg -i input.mp4 -preset fast -crf 22 output.mp4 | エンコード速度調整 |
| オプション | 説明 |
|---|
-c:v libx264 | ビデオコーデック H.264 |
-crf 23 | 品質指定(0-51、低いほど高品質、デフォルト23) |
-b:v 1M | ビットレート指定(1Mbps) |
-preset | ultrafast, fast, medium, slow, veryslow |
ポイント: -crfは品質優先モードで、-b:vはサイズ優先です。Web 用なら crf 23-28、アーカイブ用なら 18-22 が目安です。
解像度とフレームレート
| コマンド | 説明 |
|---|
ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4 | 720p にリサイズ |
ffmpeg -i input.mp4 -vf scale=-1:480 output.mp4 | 高さ480px、幅は自動 |
ffmpeg -i input.mp4 -r 30 output.mp4 | フレームレート30fps に変更 |
ffmpeg -i input.mp4 -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2" output.mp4 | アスペクト比維持してパディング |
実践メモ: scale=-1:720の-1はアスペクト比を保ったままもう一方を自動計算します。縦横比を崩したくないときに便利です。
フィルタ適用
| コマンド | 説明 |
|---|
ffmpeg -i input.mp4 -vf "rotate=90*PI/180" output.mp4 | 90度回転 |
ffmpeg -i input.mp4 -vf "hflip" output.mp4 | 水平反転 |
ffmpeg -i input.mp4 -vf "vflip" output.mp4 | 垂直反転 |
ffmpeg -i input.mp4 -vf "eq=brightness=0.1:contrast=1.2" output.mp4 | 明るさ・コントラスト調整 |
ffmpeg -i input.mp4 -vf "drawtext=text='Sample':x=10:y=10:fontsize=24:fontcolor=white" output.mp4 | テキスト埋め込み |
注意: -vfでフィルタを適用すると再エンコードが発生します。複数フィルタを適用する場合は-vf "scale=1280:720,hflip"のようにカンマで繋ぎます。
音声処理
| コマンド | 説明 |
|---|
ffmpeg -i input.mp4 -an output.mp4 | 音声削除 |
ffmpeg -i input.mp4 -vn output.mp3 | 映像削除、音声のみ |
ffmpeg -i input.mp4 -af "volume=2.0" output.mp4 | 音量2倍 |
ffmpeg -i input.mp4 -af "volume=0.5" output.mp4 | 音量半分 |
ffmpeg -i input.mp4 -c:a aac -b:a 192k output.mp4 | 音声コーデックとビットレート指定 |
| オプション | 説明 |
|---|
-an | 音声ストリーム無効化 |
-vn | 映像ストリーム無効化 |
-af | 音声フィルタ |
-c:a aac | 音声コーデック AAC |
ポイント: -af "volume=1.5"で音量調整できます。1.0 が元の音量で、2.0 で2倍、0.5 で半分になります。
ストリーム選択
| コマンド | 説明 |
|---|
ffmpeg -i input.mkv -map 0:v -map 0:a:1 output.mp4 | 映像と2番目の音声を選択 |
ffmpeg -i input.mp4 -map 0 -c copy -metadata:s:a:0 language=eng output.mp4 | 音声トラックに言語メタデータ追加 |
| オプション | 説明 |
|---|
-map 0:v | 映像ストリーム |
-map 0:a:0 | 最初の音声ストリーム |
-map 0:s | 字幕ストリーム |
実践メモ: -mapで複数の音声トラックや字幕から必要なものだけを選べます。不要なトラックを削除してファイルサイズ削減できます。
連結
concat demuxer(同じコーデック)
file 'input1.mp4'
file 'input2.mp4'
file 'input3.mp4'
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4
concat filter(異なるコーデック)
ffmpeg -i input1.mp4 -i input2.mp4 \
-filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[outv][outa]" \
-map "[outv]" -map "[outa]" output.mp4
注意: concat demuxerは同じコーデック・解像度・フレームレートでないと失敗します。異なる場合は concat filter で再エンコードが必要です。
GIF 作成
| コマンド | 説明 |
|---|
ffmpeg -i input.mp4 -vf "fps=10,scale=320:-1" output.gif | 10fps、幅320px の GIF |
ffmpeg -ss 5 -t 3 -i input.mp4 -vf "fps=15,scale=480:-1:flags=lanczos,palettegen" palette.png | パレット生成 |
ffmpeg -ss 5 -t 3 -i input.mp4 -i palette.png -filter_complex "fps=15,scale=480:-1:flags=lanczos[x];[x][1:v]paletteuse" output.gif | パレット適用 |
実践メモ: palettegenとpaletteuseの2段階でエンコードすると、GIF の色数制限内で最適な色を選べます。単純変換よりも高品質です。
情報表示
| コマンド | 説明 |
|---|
ffmpeg -i input.mp4 | ファイル情報表示 |
ffprobe -v error -show_format -show_streams input.mp4 | 詳細情報表示 |
ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=p=0 input.mp4 | 解像度だけ取得 |
参考リソース
関連記事
この技術を体系的に学びたいですか?
未来学では東証プライム上場企業のITエンジニアが24時間サポート。月額24,800円から、退会金0円のオンラインIT塾です。
メールで無料相談する
← 一覧に戻る