T-CREATOR

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

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.mp4input2.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 プロジェクトは、複数のコマンドラインツールから構成されています。

#ツール名主な用途
1ffmpegメディアファイルの変換・処理
2ffprobeメディアファイルの情報表示
3ffplayメディアファイルの再生
4ffserverストリーミングサーバー(廃止)

本記事では、主に 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 というツールを味方につけることで、その可能性は無限に広がります。本記事が、あなたの動画制作や処理作業の効率化に少しでもお役に立てれば幸いです。

関連リンク