[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1. 概要

一般的な構文は次のとおりです:

 
ffmpeg [[infile options][‘-iinfile]]... {[outfile options] outfile}...

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2. 説明

FFmpeg はとても高速なビデオ およびオーディオコンバーターです。 またライブのオーディオ/ビデオのソースを捕捉(grab)することもできます。

コマンドラインインターフェースは直観的になるよう設計されており、 というのも FFmpeg は自動的に導くことのできるすべてのパラメーターを理解します。 たいていの場合あなたが望む目標ビットレートを指定するだけで済みます。

FFmpeg はまた任意のサンプルレートから他の任意のサンプルレートへ変換することができ、 そして高品質のポリフェーズフィルターで動的に映像をリサイズすることができます。

一般的な規則として、オプションは次に並ぶ指定されたファイルに 適用されます。したがって、順序は重要であり、コマンドラインに 複数回同じオプションを与えることができます。それぞれ出てくる ごとに次にくる入力または出力ファイルに適用されます。

* 出力ファイルのビデオのビットレートを64kbit/sに設定するには:

 
ffmpeg -i input.avi -b 64k output.avi

* 出力ファイルのフレームレートを24fpsに強制するには:

 
ffmpeg -i input.avi -r 24 output.avi

* 入力ファイルのフレームレートを1fpsに強制し(raw フォーマットの場合のみ正しい)、 出力ファイルのフレームレートを24fpsにするには:

 
ffmpeg -r 1 -i input.m2v -r 24 output.avi

未加工の入力ファイルにはフォーマットオプションが必要になってくるでしょう。

デフォルトとしては、FFmpeg はできる限りロスレスに変換しようと試みます: 入力に指定されたものと同じ音声および映像のパラメーターを出力に使います。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3. オプション

数値のオプションは全て(そうではないと明記していない限り) 1つの数を表す入力文字列を受け取ります。それには国際単位系の接頭辞 (例えば ’K’、’M’、’G’)を1つ含めてもかまいません。 この接頭辞の直後に ’i’ を付け加えると、10の累乗の代わりに2の累乗 が使われます。 ’B’ という接尾辞は値を8倍し、また他の接尾辞に付け加えても単独でも どちらでも使えます。これによって例えば ’KB’、’MiB’、’G’ や ’B’ が接尾辞として許されます。

引数をとらないオプションはブール値のオプションであり、対応する値を true にします。オプション名の前に "no" をつけることで false に できます。例えば、コマンドラインで "-nofoo" とすることで "foo" という 名前のブール値のオプションが false になります。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.1 一般的なオプション

これらのオプションは ff* ツールの間で共有されます。

-L

ライセンスを表示します。

-h, -?, -help, --help

ヘルプを表示します。

-version

バージョンを表示します。

-formats

利用可能なフォーマットを表示します。

フォーマット名の前にあるフィールドは次のような意味があります:

D

デコーディングが利用できる

E

エンコーディングが利用できる

-codecs

利用可能なコーデックを表示します。

コーデック名の前にあるフィールドは次のような意味があります:

D

デコーディングが利用できる

E

エンコーディングが利用できる

V/A/S

映像/音声/サブタイトルコーデック

S

コーデックがスライスをサポートしている

D

コーデックが direct rendering をサポートしている

T

コーデックがフレーム境界でだけでなくランダムな場所での切り取られた入力を扱える

-bsfs

利用可能な bitstream フィルターを表示します。

-protocols

利用可能なプロトコルを表示します。

-filters

利用可能な libavfilter フィルターを表示します。

-pix_fmts

利用可能な pixel フォーマットを表示します。

-loglevel loglevel

そのライブラリで使用されるログの冗長さを設定します。 loglevel は以下の値の1つを含んだ数値または文字列:

quiet
panic
fatal
error
warning
info
verbose
debug

既定ではプログラムは標準エラー出力にログを出力し、端末が色付けに 対応していれば、エラーと警告に印をつけるように色が使われます。 ログの色付けは環境変数 NO_COLOR をセットすることで無効にできます。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.2 主なオプション

-f fmt

フォーマットを強制します。

-i filename

入力のファイル名

-y

出力ファイルを上書きします。

-t duration

コード変換/キャプチャーされるビデオシーケンスを 秒単位で指定された持続時間に制限します。 hh:mm:ss[.xxx] という構文もサポートされています。

-fs limit_size

ファイルサイズの上限を設定します。

-ss position

秒単位で与えられた時刻の位置を探します。 hh:mm:ss[.xxx] という構文もサポートされています。

-itsoffset offset

秒単位で入力時間のオフセットを設定します。 [-]hh:mm:ss[.xxx] という構文もサポートされています。 このオプションはそれに続く全ての入力ファイルに影響します。 オフセットは入力ファイルのタイムスタンプに加えられます。 正のオフセットを指定するということは ’offset’ 秒だけ 対応するストリームが遅延させられることを意味します。

-timestamp time

コンテナに記録するタイムスタンプを設定します。 time の構文は:

 
now|([(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH[:MM[:SS[.m...]]])|(HH[MM[SS[.m...]]]))[Z|z])

その値が "now" なら、現在の時刻をとります。 ’Z’ または ’z’ がついていなければ時刻はローカルタイムで、ついていれば UTC と解釈されます。 year-month-day 部分が指定されていなければ、現在の year-month-day をとります。

-metadata key=value

メタデータ key/value の組を設定します。

例えば、出力ファイルにタイトルを設定するには:

 
ffmpeg -i in.avi -metadata title="my title" out.flv
-v number

ログの冗長さの水準を設定します。

-target type

目標のファイルの型("vcd"、"svcd"、"dvd"、"dv"、"dv50"、"pal-vcd"、 "ntsc-svcd"、等)を指定します。そのとき全てのフォーマットのオプション (ビットレート、コーデック、バッファサイズ)は自動的に設定されます。 単に次のようにタイプできます:

 
ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg

ですが、標準のものと衝突しない限り追加のオプションを指定すること ができ、次のようになります:

 
ffmpeg -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg
-dframes number

録画録音されるデータフレームの数を設定します。

-scodec codec

サブタイトルのコーデックを強制します(’copy’ ならストリームをコピーします)。

-newsubtitle

現在の出力ストリームに新しいサブタイトルストリームを追加します。

-slang code

現在のサブタイトルストリームに(3文字の)ISO 639 言語コードを設定します。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.3 ビデオのオプション

-b bitrate

ビデオのビットレートをbit/sで設定します(既定値は200kb/s)。

-vframes number

録画するビデオフレームの数を設定します。

-r fps

フレームレート(Hz での値、分数または省略形)を設定します(既定値は25)。

-s size

フレームサイズを設定します。 書式は‘wxh’(ffserver の既定値は160x128、ffmpeg の既定値は元と同じ)です。 次の省略形も認識できます:

sqcif

128x96

qcif

176x144

cif

352x288

4cif

704x576

16cif

1408x1152

qqvga

160x120

qvga

320x240

vga

640x480

svga

800x600

xga

1024x768

uxga

1600x1200

qxga

2048x1536

sxga

1280x1024

qsxga

2560x2048

hsxga

5120x4096

wvga

852x480

wxga

1366x768

wsxga

1600x1024

wuxga

1920x1200

woxga

2560x1600

wqsxga

3200x2048

wquxga

3840x2400

whsxga

6400x4096

whuxga

7680x4800

cga

320x200

ega

640x350

hd480

852x480

hd720

1280x720

hd1080

1920x1080

-aspect aspect

アスペクト比(4:3、16:9 もしくは 1.3333、1.7777)を設定します。

-croptop size
-cropbottom size
-cropleft size
-cropright size

これらの切り取りオプションは全て削除されました。代わりに -vf crop=width:height:x:y を使ってください。

-padtop size
-padbottom size
-padleft size
-padright size
-padcolor hex color

pad オプションは全て削除されました。代わりに -vf pad=width:height:x:y:color を使ってください。

-vn

映像の録画を無効にします。

-bt tolerance

ビデオのビットレート誤差許容量(bit/sで、既定値は4000k)を設定します。 最小値として (target_bitrate/target_framerate) を持ちます。 1-パスモードでは、ビットレート誤差許容量はどのくらい目標平均ビットレート値から 外れることを許すかということを指定します。 これは最小/最大ビットレートには関係しません。 過度に許容量を下げることは品質の点で不利な影響を及ぼします。

-maxrate bitrate

ビデオの最大ビットレートを(bit/sで)設定します。 -bufxize が設定されいてる必要があります。

-minrate bitrate

ビデオの最小ビットレートを(bit/sで)設定します。 CBR エンコードを設定する場合に最も有用です:

 
ffmpeg -i myfile.avi -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2v

それ以外ではあまり使途がありません。

-bufsize size

video buffer verifier バッファサイズを(bitsで)設定します。

-vcodec codec

ビデオのコーデックを codec に強制します。未加工のコーデックデータ をありのままコピーするには copy という特別な値を使ってください。 値を使ってください。

-sameq

ソースと同じ映像品質を使います(暗に VBR になります)。

-pass n

パス数(1または2)を選択します。2パスビデオエンコーディングをするのに 使われます。映像の統計情報が最初のパスでログファイル(オプション -passlogfile も参照してください)に記録されます。そして2番目のパスでこのログファイルを使って 正確に要求されたビットレートに映像が生成されます。 パス1では、ちょうど音声を無効にし出力を null にすることもできます。 Windows や Unix での例:

 
ffmpeg -i foo.mov -vcodec libxvid -pass 1 -an -f rawvideo -y NUL
ffmpeg -i foo.mov -vcodec libxvid -pass 1 -an -f rawvideo -y /dev/null
-passlogfile prefix

2パスのログファイル名の接頭辞を prefix に設定します。既定の名前の 接頭辞は “ffmpeg2pass” です。完全なファイル名は ‘PREFIX-N.log’ で、 ただし N は出力ストリーム別の番号です。

-newvideo

現在の出力ストリームに新しいビデオストリームを追加します。

-vlang code

現在の映像ストリームの ISO 639 言語コード(3文字)を設定します。

-vf filter_graph

filter_graph は入力映像に適用されるフィルターグラフの 説明です。 (ソースとシンクを含んだ)利用可能な全てのフィルターを表示するには "-filters" オプションを使ってください。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.4 高度なビデオのオプション

-pix_fmt format

ピクセルフォーマットを設定します。全てのサポートされているピクセルフォーマットを表示する ためには、パラメーターとして ’list’ を使ってください。

-sws_flags flags

SwScaler フラグを設定します。

-g gop_size

gop(the group of pictures) の大きさを設定します。

-intra

イントラフレームのみを用います。

-vdt n

出発点を破棄します。

-qscale q

固定されたビデオ量子化スケールを使います(VBR)。

-qmin q

最小のビデオ量子化スケール(VBR)

-qmax q

最大のビデオ量子化スケール(VBR)

-qdiff q

ビデオ量子化スケール間の最大の差分(VBR)

-qblur blur

ビデオ量子化スケールブラー(VBR) (範囲 0.0 - 1.0)

-qcomp compression

ビデオ量子化スケール圧縮(VBR) (既定値 0.5)。 レートコントロール方程式の定数。既定の rc_eq について推奨される範囲: 0.0-1.0

-lmin lambda

最小のビデオラグランジュ因子(VBR)

-lmax lambda

最大のビデオラグランジュ因子(VBR)

-mblmin lambda

最小のマクロブロック量子化スケール(VBR)

-mblmax lambda

最大ののマクロブロック量子化スケール(VBR)

これらの4つのオプション(lmin、lmax、mblmin、mblmax)は ’lambda’ 単位を使いますが、 ’q’ 単位から簡単に変換するには QP2LAMBDA 定数を使えます:

 
ffmpeg -i src.ext -lmax 21*QP2LAMBDA dst.ext
-rc_init_cplx complexity

単一パスエンコーディングのための初期複雑度

-b_qfactor factor

P- および B-フレーム間の qp 因子

-i_qfactor factor

P- および I-フレーム間の qp 因子

-b_qoffset offset

P- および B-フレーム間の qp オフセット

-i_qoffset offset

P- および I-フレーム間の qp オフセット

-rc_eq equation

レート制御方程式を設定する(セクション "式の評価" を見てください) (既定値は tex^qComp)。

レート制御方程式の式を計算する際、セクション "式の評価" で定義 されている標準的な関数とともに、以下の関数が利用できます:

bits2qp(bits)
qp2bits(qp)

かつ以下の定数が利用できます:

iTex
pTex
tex
mv
fCode
iCount
mcVar
var
isI
isP
isB
avgQP
qComp
avgIITex
avgPITex
avgPPTex
avgBPTex
avgTex
-rc_override override

特定のインターバルに対するレート制御の変更

-me_method method

モーション推定手法を method に設定する。 利用できる手法は次のとおり(順に最低から最高品質へ):

zero

単に(0, 0)ベクトルを試す。

phods
log
x1
hex
umh
epzs

(既定の手法)

full

網羅的な探索(遅く、わずかに epzs より良い)

-dct_algo algo

DCT アルゴリズムを algo に設定する。利用可能な値は次のとおり:

0

FF_DCT_AUTO (既定値)

1

FF_DCT_FASTINT

2

FF_DCT_INT

3

FF_DCT_MMX

4

FF_DCT_MLIB

5

FF_DCT_ALTIVEC

-idct_algo algo

IDCT アルゴリズムを algo に設定する。利用可能な値は次のとおり:

0

FF_IDCT_AUTO (既定値)

1

FF_IDCT_INT

2

FF_IDCT_SIMPLE

3

FF_IDCT_SIMPLEMMX

4

FF_IDCT_LIBMPEG2MMX

5

FF_IDCT_PS2

6

FF_IDCT_MLIB

7

FF_IDCT_ARM

8

FF_IDCT_ALTIVEC

9

FF_IDCT_SH4

10

FF_IDCT_SIMPLEARM

-er n

エラー回復を n に設定する。

1

FF_ER_CAREFUL (既定値)

2

FF_ER_COMPLIANT

3

FF_ER_AGGRESSIVE

4

FF_ER_VERY_AGGRESSIVE

-ec bit_mask

エラー補正を bit_mask に設定する。 bit_mask は次の値のビットマスクです:

1

FF_EC_GUESS_MVS (既定値では有効)

2

FF_EC_DEBLOCK (既定値では有効)

-bf frames

’frames’ の B-フレームを使います(MPEG-1、MPEG-2、および MPEG-4 でサポート)。

-mbd mode

マクロブロック判定

0

FF_MB_DECISION_SIMPLE: mb_cmp を使います(FFmpeg ではまだ変更できません)。

1

FF_MB_DECISION_BITS: 最小のビットが必要になるものを選びます。

2

FF_MB_DECISION_RD: レート歪曲。

-4mv

マクロブロックによって4つのモーションベクトルを使います(MPEG-4 のみ)。

-part

データパーティションを使います(MPEG-4 only)。

-bug param

自動検出されないエンコーダーのバグへの対処。

-strict strictness

どのくらい厳密に標準に従っているか。

-aic

高度なイントラコーディングを有効にします(h263+)。

-umv

非限定モーションベクトルを有効にします(h263+)。

-deinterlace

画像のインターレースを外します。

-ilme

エンコーダーのインターレースサポートを強制します(MPEG-2 と MPEG-4 のみ)。 入力ファイルがインターレースされており、かつ最小のロスでインターレース されたフォーマットを維持したい時に、このオプションを使ってください。 代替案として入力ストリームのインターレースを ‘-deinterlace’ で外す ことがありますが、インターレースを外すとロスが生まれます。

-psnr

圧縮されたフレームの PSNR を計算します。

-vstats

映像のコーディング統計情報を ‘vstats_HHMMSS.log’ にダンプします。

-vstats_file file

映像のコーディング統計情報を file にダンプします。

-top n

top=1/bottom=0/auto=-1 領域を最初に

-dc precision

イントラ DC 精度。 pp

-vtag fourcc/tag

ビデオタグ/fourcc を強制します。

-qphist

QP 棒グラフを見せます。

-vbsf bitstream filter

ビットストリームフィルター。"dump_extra"、"remove_extra"、"noise"、"h264_mp4toannexb"、"imxdump"、"mjpegadump"、"mjpeg2jpeg" が利用できます。

 
ffmpeg -i h264.mp4 -vcodec copy -vbsf h264_mp4toannexb -an out.h264
-force_key_frames time[,time...]

キーフレームを指定されたタイムスタンプに強制します、より正確には その最初のフレームを指定された各タイムスタンプの後に強制します。 このオプションはチャプターマークやその他の出力ファイルの中で 指示された場所にシークポイントが示されることを保証するために便利 となります。このタイムスタンプは昇順に指定される必要があります。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.5 オーディオのオプション

-aframes number

録音するオーディオフレームの数を設定します。

-ar freq

オーディオサンプリング頻度を設定します(既定値は44100Hz)。

-ab bitrate

オーディオビットレートをbit/sで設定します(既定値は64k)。

-aq q

オーディオ品質を設定します(コーデック別、VBR)。

-ac channels

オーディオチャンネルの数を設定します。入力ストリームについては、既定では1に 設定されます。出力ストリームについては、既定では入力にあるオーディオチャンネルと 同じ数に設定されます。入力ファイルにチャンネル数と異なる数のオーディオストリームが ある場合、その振る舞いは不定です。

-an

音声の録音を無効にします。

-acodec codec

オーディオのコーデックを codec に強制します。未加工のコーデックデータ をありのままコピーするには copy という特別な値を使ってください。 値を使ってください。

-newaudio

出力ファイルに新しいオーディオトラックを追加氏増す。パラメーターを指定したい場合には、 -newaudio の前にそうしてください(-acodec-ab、など)。

出力ストリームの数が入力ストリームの数と等しい場合には、対応づけは自動的にされます。 そうでない場合には、マッチする最初のものが選ばれます。 いつものように対応づけは -map を使って変更できます。

例:

 
ffmpeg -i file.mpg -vcodec copy -acodec ac3 -ab 384k test.mpg -acodec mp2 -ab 192k -newaudio
-alang code

現在の音声ストリームの ISO 639 言語コード(3文字)を設定します。

-sn

サブタイトルの記録を無効にします。

-sbsf bitstream_filter

ビットストリームフィルター。"mov2textsub"、"text2movsub" が利用できます。

 
ffmpeg -i file.mov -an -vn -sbsf mov2textsub -scodec copy -f rawvideo sub.txt

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.6 高度なオーディオのオプション:

-atag fourcc/tag

オーディオのタグ/fourcc を強制します。

-absf bitstream_filter

ビットストリームフィルター。"dump_extra"、"remove_extra"、"noise"、"mp3comp"、"mp3decomp" が利用できます。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.7 サブタイトルのオプション:

-scodec codec

サブタイトルのコーデックを強制します(’copy’ ならストリームをコピーします)。

-newsubtitle

現在の出力ストリームに新しいサブタイトルストリームを追加します。

-slang code

現在のサブタイトルストリームの ISO 639 言語コード(3文字)を設定します。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.8 オーディオ/ビデオのグラブのオプション

-vc channel

ビデオのグラブチャンネルを設定します(DV1394 のみ)。

-tvstd standard

テレビ放送方式を設定します(NTSC、PAL (SECAM))。

-isync

入力を同期読み込みします。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.9 高度なオプション

-map input_stream_id[:sync_stream_id]

入力ストリームから出力ストリームへのストリームの対応付けを設定します。 入力ストリームを出力したい順に並べてください。 sync_stream_id が指定された場合、同期する入力ストリームを設定します。

-map_meta_data outfile[,metadata]:infile[,metadata]

infile から outfile のメタデータ情報を設定します。これらは (0から始まる)ファイルのインデックスであり、ファイル名ではないことに注意してください。 省略可能な metadata パラメータはどのメタデータをコピーするか - (g)lobal (つまり、ファイル全体に適用されるメタデータ)、per-(s)tream、per-(c)hapter または per-(p)rogram です。global 以外の全てのメタデータ指定子では stream/chapter/program 番号が続かなければなりません。メタデータ指定子が省略された場合、既定の global に なります。

既定では、global メタデータは最初の入力ファイルから全ての出力ファイルにコピーされ、 per-stream および per-chapter メタデータは stream/chapter に合わせてコピーされます。 これらの既定のマッピングは関連する種類のマッピングを作成することで無効になります。 自動的なコピーを無効にするだけのダミーのマッピングを作成するために、負のファイルインデックスが利用できます。

例えばメタデータを入力ファイルの最初のストリームから出力ファイルの global メタデータ にコピーするには:

 
ffmpeg -i in.ogg -map_meta_data 0:0,s0 out.mp3
-map_chapters outfile:infile

infile から outfile へチャプターをコピーします。チャプターマッピングが指定されていなければ、 少なくとも1つチャプターがある最初の入力ファイルから全ての出力ファイルへコピーされます。チャプターのコピーを 一切無効にするには負のファイルインデックスを使ってください。

-debug

特定のデバグ情報を印字します。

-benchmark

エンコードの終了時にベンチマーク情報を表示します。 CPU 時間と最大メモリ消費を表示します。 最大メモリ消費は全てのシステムでサポートされているわけではなく、 サポートされていない場合にはたいてい 0 として表示します。

-dump

各入力パケットをダンプします。

-hex

パケットをダンプする際に、ペイロードもダンプします。

-bitexact

(コーデックのテストのために)bit exact アルゴリズムのみを使います。

-ps size

バイト単位で RTP ペイロードサイズを設定します。

-re

ネイティブのフレームレートで入力を読み込みます。主にグラブデバイスをシミュレートするために使います。

-loop_input

入力ストリームをループします。現時点では画像ストリームに対してのみ 動作します。このオプションは自動的な FFserver テストに使われます。

-loop_output number_of_times

アニメーション GIF のようなループをサポートしているフォーマット向けに 繰り返しループして出力します(0 で無限にループ出力します)。

-threads count

スレッド数。

-vsync parameter

ビデオ同期方式。 0 demuxer から muxer へタイムスタンプとともに各フレームを渡します。 1 要求された定数フレームレートを実現するためにフレームを重複させたり 抜かしたりします。 2 フレームはタイムスタンプとともに渡されますが、同じタイムスタンプの2つの フレームがあれば抜かします。 -1 muxer の能力に応じて 1 か 2 を選択する。これが既定の方法です。 -map を併用することでどのストリームからタイムスタンプを取得するべきか選択できます。 ビデオまたはオーディオを変更せずにおいておくことができ、その変更しないものに対し 残りのストリームを同期することができます。

-async samples_per_second

オーディオ同期方式。タイムスタンプに合わせて音声ストリームを“伸長/圧縮”し、 パラメーターは音声を変更するときに用いられる秒間最大サンプル数です。 -async 1 は音声ストリームの開始のみを補正し以後補正しないという特殊な場合です。

-copyts

入力から出力へタイムスタンプをコピーします。

-shortest

最も短い入力ストリームが終わり次第エンコーディングを終えます。

-dts_delta_threshold

タイムスタンプを不連続差分閾値にする。

-muxdelay seconds

demux-デコード遅延の最大値を設定する。

-muxpreload seconds

初期 demux-デコード遅延を設定する。

-streamid output-stream-index:new-value

次の出力ファイルの中の、あるストリームの stream-id フィールドに新しい値を 割り当てます。各出力ファイルにおいて、全ての stream-id フィールドは既定値に リセットされます。

例えば、ある出力 mpegts ファイルに対して stream 0 PID に33を、そして stream 1 PID に36を設定するためには:

 
ffmpeg -i infile -streamid 0:33 -streamid 1:36 out.ts

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.10 プリセットファイル

プリセットファイルには option=value の組の列が含まれています。 それぞれの組は行ごとになっており、コマンドラインで指定するには扱いにくい オプションの列を指定します。ハッシュ(’#’)で始まる行は無視され、コメントを 与えるために使われます。例としては FFmpeg のソースツリーにある ‘ffpresets’ ディレクトリを確認してください。

プリセットファイルは vpreaprespre、および fpre オプションとともに指定されます。 fpre オプションは入力として プリセット名の代わりにプリセットのファイル名をとり、どんな種類のコーデックでも 利用できます。vpreapre、および spre オプションでは、 プリセットファイルの中で指定されるこれらのオプションはプリセットオプションと 同じ種類の現時点で選択しているコーデックに対して適用されます。

vpreapre、および spre プリセットオプションに渡される 引数は、次の規則に従って利用するプリセットファイルを定めます:

まず ffmpeg は arg.ffpreset という名前のファイルをディレクトリ ‘$FFMPEG_DATADIR’ (設定されていれば)、‘$HOME/.ffmpeg’、 および configuration 時に定義された datadir(大抵の場合 ‘PREFIX/share/ffmpeg’)の中からこの順序で探します。 例えば、引数が libx264-max なら、‘libx264-max.ffpreset’ というファイルを探します。

そういったファイルが見つからなければ、ffmpeg は codec_name-arg.ffpreset という名前のファイルを先ほど述べたディレクトリの中から探します。 ここで codec_name はプリセットファイルオプションが適用されるであろう コーデックの名前です。たとえば、ビデオコーデックを -vcodec libx264 で 選択し、-vpre max を使っていた場合、‘libx264-max.ffpreset’ というファイルを探します。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4. ヒント


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5. 例


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.1 ビデオおよびオーディオを捕捉する

FFmpeg はあなたが指定する入力フォーマットおよびデバイスから ビデオおよびオーディオを捕捉することができます。

 
ffmpeg -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg

Gerd Knorr による xawtv (http://linux.bytesex.org/xawtv/) のようなテレビビューアと ともに FFmpeg を動作させる前に、正しい映像のソースとチャンネルを有効にしなければ ならないことに注意してください。 また標準的なミキサーを用いて正確に音声録音水準を設定しなければなりません。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.2 X11 を捕捉する

FFmpeg は X11 ディスプレイを捕捉することができます。

 
ffmpeg -f x11grab -s cif -r 25 -i :0.0 /tmp/out.mpg

0.0はあなたの X11 サーバのディスプレイ.スクリーン番号であり、DISPLAY 環境変数と 同じものです。

 
ffmpeg -f x11grab -s cif -r 25 -i :0.0+10,20 /tmp/out.mpg

0.0はあなたの X11 サーバのディスプレイ.スクリーン番号であり、DISPLAY 環境変数と 同じものです。10は捕捉するための x-オフセットで、20は y-オフセットです。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.3 ビデオおよびオーディオのファイルフォーマット変換

* FFmpeg は入力としてサポートしている任意のファイルフォーマットおよびプロトコルを使うことができます:

例:

* 入力として YUV ファイルが使えます:

 
ffmpeg -i /tmp/test%d.Y /tmp/out.mpg

これで次のファイルを使います:

 
/tmp/test0.Y、/tmp/test0.U、/tmp/test0.V、
/tmp/test1.Y、/tmp/test1.U、/tmp/test1.V、など

この Y ファイルは U ファイルと V ファイルの解像度を2度使います。 これらは未加工のファイルで、ヘッダーがありません。 全てのまともなビデオデコーダーでこれらが生成できます。 FFmpeg が推測できない場合には -s オプションで画像のサイズを指定しなければなりません。

* 未加工の YUV420P ファイルを入力することができます:

 
ffmpeg -i /tmp/test.yuv /tmp/out.avi

test.yuv は未加工の YUV 平面データを含むファイルです。 各フレームは Y 平面と、それに続く U および V 平面から 半水平および垂直解像度で合成される。

* 未加工の YUV420P ファイルを出力することができます:

 
ffmpeg -i mydivx.avi hugefile.yuv

* 複数の入力ファイルと複数の出力ファイルを設定できます:

 
ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg

上は音声ファイル a.wav と未加工の YUV 映像ファイル a.yuv を MPEG ファイル a.mpg に変換します。

* また同時に音声と映像の変換ができます:

 
ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2

上は a.wav を22050 Hzのサンプルレートで MPEG 音声に変換します。

* 同時に複数のフォーマットへ変換でき、入力ストリームから出力ストリームへの 対応を定義できます:

 
ffmpeg -i /tmp/a.wav -ab 64k /tmp/a.mp2 -ab 128k /tmp/b.mp2 -map 0:0 -map 0:0

上は a.wav を a.mp2 へ64kbitsで変換し、b.mp2へ128 kbitsで変換します。 ’-mapfile:index’ は各出力ストリームに対してどの入力ストリームが使われるかを 指定し、出力ストリームの定義の順に対応されます。

* 解読された VOB をコード変換できます:

 
ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800k -g 300 -bf 2 -acodec libmp3lame -ab 128k snatch.avi

これは典型的な DVD リッピングの例です; 入力は VOB ファイルで、出力は MPEG-4 ビデオと MP3 オーディオからなる AVI ファイルです。 このコマンドでは B-フレームを使っているため MPEG-4 ストリームは DivX5 互換であり、 GOP サイズが300(29.97fpsの入力ビデオに対して10秒毎に1つの intra フレームを意味する)になっていることに注意してください。 さらに、音声ストリームは MP3-エンコードされているため、 --enable-libmp3lame を渡して configure することで LAME サポートを 有効にする必要があります。 このマッピングはお望みの音声言語を得るための DVD コード変換のために 特に便利です。

注意: サポートされている入力フォーマットを見るには、ffmpeg -formats を使ってください。

* ビデオから画像を引き出すことができ、また多数の画像からビデオを作ることができます:

ビデオから画像を抽出するには:

 
ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg

これはビデオから毎秒1つのビデオフレームを引き出し、それらを ‘foo-001.jpeg’、‘foo-002.jpeg’ などの名前をつけたファイルに出力します。新しい WxH 値に合うように再スケールされます。

限られた数のフレームだけを引き出したい場合には、上記のコマンドを -vframes オプションまたは -t オプションと組み合わせて、もしくは特定の時刻の点から引き出しを始めるように -ss を組み合わせて 使うことができます。

多数の画像からビデオを作成するには:

 
ffmpeg -f image2 -i foo-%03d.jpeg -r 12 -s WxH foo.avi

構文 foo-%03d.jpeg は列番号を表現する0を並べて3つの桁に揃えられた10進数字を使うことを 指定します。これは C の printf 関数によってサポートされているのと同じ構文ですが、 標準の整数1つを受け付ける書式のみが適しています。

* 出力に同じタイプの多くのストリームを含めることができます:

 
ffmpeg -i test1.avi -i test2.avi -vcodec copy -acodec copy -vcodec copy -acodec copy test12.avi -newvideo -newaudio

1番目のビデオおよびオーディオストリームに加えて、結果の出力ファイル ‘test12.avi’ は入力ストリームリストのうちに見つかる2番目のビデオ および2番目のオーディオストリームも含むことになります。

-newvideo および -newaudio-newsubtitle オプションは それを追加したい出力ファイルの名前の直後に指定しなければなりません。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6. 式の評価

算術的な式を評価する際に、FFmpeg は内部の数式評価器を使います。 これは ‘libavutil/eval.h’ インターフェイスを通じて実装されて います。

式は1引数および2引数演算子、定数および関数を含みます。

2つの式 expr1expr2 を結合して別の式 "expr1;expr2" を構成することができます。 expr1expr2 が順に評価され、この新しい式は expr2 の値を自身の値とします。

次の2引数演算子が利用できます: +-*/^

次の1引数演算子が利用できます: +-

次の関数が利用できます:

sinh(x)
cosh(x)
tanh(x)
sin(x)
cos(x)
tan(x)
atan(x)
asin(x)
acos(x)
exp(x)
log(x)
abs(x)
squish(x)
gauss(x)
isnan(x)

x が NAN なら1.0、さもなくば0.0。

mod(x, y)
max(x, y)
min(x, y)
eq(x, y)
gte(x, y)
gt(x, y)
lte(x, y)
lt(x, y)
st(var, expr)

expr の値を内部の変数に格納できます。 var は値を格納する変数を示す番号で、 0から9までの範囲の値です。 この関数は内部の変数に格納される値を返します。

ld(var)

番号 var を持つ内部の変数の値をロードできます。 これは以前に st(var, expr) で格納されたものです。 この関数はロードされた値を返します。

while(cond, expr)

cond が0でない間、式 expr を評価します。 そして最後の expr の評価の値を返します。 cond がいつも false なら NAN を返します。

以下の点に注意してください:

* は AND のように動作します

+ は OR のように動作します

したがって

 
A ならば B、さもなくば C

は次と同値です:

 
A*B + not(A)*C

A が1または0に評価されるなら、これは次と同じです:

 
A*B + eq(A,0)*C

C のコードでは、1引数および2引数関数の一覧を広げることができ、 解読される定数を定義することができるので、それらを式で利用することが できます。

評価器はまた International System number postfix を解読します。 ’i’ が postfix の直後に追加されると、10の累乗の代わりに2の累乗が 用いられます。’B’ postfix によって8倍になり、他の postfix の直後 または単独で利用できます。これによって例えば ’KB’、’MiB’、’G’ および ’B’ が postfix として許されます。

以下は利用できる International System postfix の一覧で、 10の累乗および2の累乗に対応する表示をともないます。

y

-24 / -80

z

-21 / -70

a

-18 / -60

f

-15 / -50

p

-12 / -40

n

-9 / -30

u

-6 / -20

m

-3 / -10

c

-2

d

-1

h

2

k

3 / 10

K

3 / 10

M

6 / 20

G

9 / 30

T

12 / 40

P

15 / 40

E

18 / 50

Z

21 / 60

Y

24 / 70


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7. Input Devices

入力デバイスは、FFmpeg 上でシステムに取り付けられたマルチメディアデバイスから やって来るデータにアクセスすることを許す構成された要素です。

FFmpeg のビルドを構成(configure)する際は、既定ではサポートされている全ての 入力デバイスが有効になっています。configure オプション "–list-indevs" を使うと 全ての利用可能な入力デバイスがリストアップされます。

configure オプション "–disable-indevs" を使えば全ての入力デバイスを無効にする ことができ、 "–enable-indev=INDEV" で特定の入力デバイスを選択して有効にでき、 または "–disable-indev=INDEV" で特定の入力デバイスを無効にできます。

ff* ツールのオプション "-formats" は(demuxer と一緒に)サポートされている入力デバイス のリストを表示します。

現在利用可能な入力デバイスの説明は以下の通りです。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7.1 alsa

ALSA (Advanced Linux Sound Architecture) 入力デバイス。

configure でこの入力デバイスを有効にするには、システムに libasound がインストールされて いる必要があります。

このデバイスによって ALSA デバイスからキャプチャすることができます。キャプチャする デバイスの名前は ALSA カード識別子でなくてはなりません。

ALSA 識別は次の構文をもちます:

 
hw:CARD[,DEV[,SUBDEV]]

ただし DEVSUBDEV という成分は省略できます。

この3つの引数(順に: CARD,DEV,SUBDEV)は カード番号もしくは識別子、デバイス番号、そしてサブデバイス番号を 特定します。(-1 はいずれかを意味します)。

現時点でシステムによって認識されるカードのリストを見るには、ファイル ‘/proc/asound/cards’ および ‘/proc/asound/devices’ を確認してください。

例えば ‘ffmpeg’ によってある card id 0 の ALSA デバイスから キャプチャするためには、次のコマンドを実行します:

 
ffmpeg -f alsa -i hw:0 alsaout.wav

さらなる情報については、次を見てください: http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7.2 bktr

BSD 映像入力デバイス。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7.3 dv1394

Linux DV 1394 入力デバイス。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7.4 jack

JACK 入力デバイス。

configure でこの入力デバイスを有効にするには、システムに libjack がインストールされて いる必要があります。

JACK 入力デバイスは1つまたはそれ以上の JACK 書き込み可能クライアントを 各音声チャンネルごとに1つ、client_name:input_N という名前で 作成します。ただし client_name はアプリケーションによって提供される 名前で、N はそのチャンネルを識別する番号です。 各書き込み可能なクライアントは FFmpeg 入力デバイスに対して取得したデータ を送信します。

一旦1つまたはそれ以上の JACK 読み取り可能クライアントを作成すると、 1つまたはそれ以上の JACK 書き込み可能クライアントにそれらを接続する必要 があります。

JACK クライアントに接続をつないだり切ったりするためには、 ‘jack_connect’ や ‘jack_disconnect’ プログラムが使えます。 または、例えば ‘qjackctl’ のようなグラフィカルインターフェイスを 通じて行えます。

JACK クライアントやそのプロパティをリストアップするには、コマンド ‘jack_lsp’ を実行します。

以下は ‘ffmpeg’ で JACK 読み取り可能クライアントをキャプチャする やり方を示す例です。

 
# "ffmpeg" という名前のついた JACK 書き込み可能クライアントを作成します。
$ ffmpeg -f jack -i ffmpeg -y out.wav

# サンプルの jack_metro 読み取りクライアントを開始します。
$ jack_metro -b 120 -d 0.2 -f 4000

# 現在の JACK クライアントをリストアップします。
$ jack_lsp -c
system:capture_1
system:capture_2
system:playback_1
system:playback_2
ffmpeg:input_1
metro:120_bpm

# ffmpeg 書き込み可能クライアントに metro を接続します。
$ jack_connect metro:120_bpm ffmpeg:input_1

さらなる情報については、次を読んでください: http://jackaudio.org/


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7.5 libdc1394

IIDC1394 入力デバイス、libdc1394 および libraw1394 に基づいています。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7.6 oss

Open Sound System 入力デバイス。

入力デバイスに充てられるファイル名はその OSS 入力 を表すデバイスノードで、 それはたいていの場合 ‘/dev/dsp’ になります。

例えば ‘ffmpeg’ から ‘/dev/dsp’ をグラブするためには、 次のコマンドを使います。

 
ffmpeg -f oss -i /dev/dsp /tmp/oss.wav

OSS についてのさらなる情報には、次を見てください: http://manuals.opensound.com/usersguide/dsp.html


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7.7 video4linux および video4linux2

Video4Linux および Video4Linux2 入力映像デバイス。

グラブするデバイスの名前はファイルデバイスノードです。たいていの Linux システムは、デバイス(例えば USB ウェブカム)をシステムに差し込んだ際、 そういったノードを自動的に作成するようになっています。そして ‘/dev/videoN’ のような名前を持ちます。ただし N は そのデバイスに結びつけられた番号です。

Video4Linux と Video4Linux2 デバイスは限られた種類の widthxheight サイズとフレームレートのみに対応しています。いずれに対応しているかを確認するために、 例えば Video4Linux デバイスならコマンド ‘dov4l’、そして Video4Linux2 デバイスならコマンド ‘v4l-info’ が使えます。

デバイスのサイズが 0x0 に設定されている場合、入力デバイスは使用するサイズを 自動検出しようとします。

Video4Linux 対応は Linux 2.6.30 から非推奨になっており、今後のバージョンで 無くなるでしょう。

以下が ff* ツールで video4linux デバイスを使う例です。

 
# Video4linux デバイスの入力をグラブし表示します。
ffplay -s 320x240 -f video4linux /dev/video0

# Video4linux2 デバイスの入力をグラブし表示します。サイズは自動調整です。
ffplay -f video4linux2 /dev/video0

# Video4linux2 デバイスの入力をグラブし録画します。サイズは自動調整です。
ffmpeg -f video4linux2 -i /dev/video0 out.mpeg

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7.8 vfwcap

VfW (Video For Windows) キャプチャ入力デバイス。

入力として渡すファイル名はキャプチャドライバー番号で、0から9の範囲です。 ドライバーの一覧を表示するために "list" をファイル名に使えます。 それ以外のファイル名はデバイス番号0として解釈されます。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7.9 x11grab

X11 映像入力デバイス。

このデバイスで X11 ディスプレイの領域をキャプチャすることができます。

入力として渡すファイル名は次の構文を持ちます:

 
[hostname]:display_number.screen_number[+x_offset,y_offset]

hostname:display_number.screen_number でグラブする スクリーンlの X11 ディスプレイ名を指定します。hostname は省略 されてもよく、既定では "localhost" です。環境変数 DISPLAY が既定のディスプレイ名を含みます。

x_offset および y_offset でグラブされる領域の X11 スクリーン イメージの左上端からオフセットを指定します。これらは既定では0です。

さらなる細かい情報については X11 ドキュメンテーション(例えば man X)を 参照してください。

X11 ディスプレイのプロパティについての基本情報(例えば "name" または "dimensions" を grep する)を得るためには、‘dpyinfo’ プログラムを使ってください。

例えば ‘ffmpeg’ を使って ‘:0.0’ からグラブするには

 
ffmpeg -f x11grab -r 25 -s cif -i :0.0 out.mpg

# 位置 10,20 でグラブします。
ffmpeg -f x11grab -25 -s cif -i :0.0+10,20 out.mpg

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

8. Output Devices

出力デバイスは、FFmpeg 上でシステムに取り付けられた出力デバイスへ マルチメディアデータを書き出すことを許す構成された要素です。

FFmpeg のビルドを構成(configure)する際は、既定ではサポートされている全ての 出力デバイスが有効になっています。configure オプション "–list-outdevs" を使うと 全ての利用可能な出力デバイスがリストアップされます。

configure オプション "–disable-outdevs" を使えば全ての出力デバイスを無効にする ことができ、 "–enable-outdev=OUTDEV" で特定の出力デバイスを選択して有効にでき、 または "–disable-outdev=OUTDEV" で特定の出力デバイスを無効にできます。

ff* ツールのオプション "-formats" は(muxer と一緒に)サポートされている出力デバイス のリストを表示します。

現在利用可能な出力デバイスの説明は以下の通りです。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

8.1 alsa

ALSA (Advanced Linux Sound Architecture) 出力デバイス。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

8.2 oss

OSS (Open Sound System) 出力デバイス。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9. プロトコル

プロトコルは、特定のプロトコルを使用するために必要になるリソースへの アクセスを可能にする FFmpeg 上の構成される要素です。

FFmpeg のビルドを構成(configure)する際は、既定ではサポートされている全ての プロトコルが有効になっています。configure オプション "–list-protocols" を使うと 全ての利用可能なプロトコルがリストアップされます。

configure オプション "–disable-protocols" を使えば全てのプロトコルを無効にする ことができ、 "–enable-protocol=PROTOCOL" で特定のプロトコルを選択して有効にでき、 または "–disable-protocol=PROTOCOL" で特定のプロトコルを無効にできます。

ff* ツールのオプション "-protocols" はサポートされているプロトコル のリストを表示します。

現在利用可能なプロトコルの説明は以下の通りです。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.1 concat

物理的な連結プロトコル。

多くのリソースから順に、1つの独自のリソースであるかのように 読んだりシークしたりできます。

このプロトコルが受け取る URL は次の構文を持ちます:

 
concat:URL1|URL2|...|URLN

ただし URL1URL2、...、URLN は連結されるリソースの URL で、それぞれは異なるプロトコルを指定していてもかまいません。

例えばファイル列 ‘split1.mpeg’、‘split2.mpeg’、‘split3.mpeg’ を ‘ffplay’ で読むには、次のコマンドを使ってください:

 
ffplay concat:split1.mpeg\|split2.mpeg\|split3.mpeg

多くのシェルで特別扱いされる文字 "|" をエスケープしなけばならないかもしれない ことに注意してください。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.2 file

ファイルアクセスプロトコル。

1つのファイルから、または1つのファイルに向けて読むことができます。

例えば ‘ffmpeg’ でファイル ‘input.mpeg’ から読むには、次のコマンドを 使ってください:

 
ffmpeg -i file:input.mpeg output.mpeg

ff* ツールは既定ではこのファイルプロトコルを使います。 すなわち "FILE.mpeg" という名前で指定されたリソースは URL "file:FILE.mpeg" であるかのように解釈されます。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.3 gopher

Gopher プロトコル。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.4 http

HTTP (ハイパーテキストトランスファープロトコル)。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.5 mmst

TCP 越しの MMS (マイクロソフトメディアサーバー)プロトコル。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.6 mmsh

HTTP 越しの MMS (マイクロソフトメディアサーバー)プロトコル。

要求される構文は:

 
mmsh://server[:port][/app][/playpath]

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.7 md5

MD5 出力プロトコル。

書き出されるデータの MD5 ハッシュを計算し、クローズ時にそれを指示された 出力もしくは(指定されていなければ)標準出力に書き出します。実際のファイルに 書き出すことなく muxer をテストするために使えます。

いくつかの例を以下に挙げます。

 
# エンコードされる AVI ファイルの MD5 ハッシュをファイル output.avi.md5 に書き出します。
ffmpeg -i input.flv -f avi -y md5:output.avi.md5

# エンコードされる AVI ファイルの MD5 ハッシュを標準出力に書き出します。
ffmpeg -i input.flv -f avi -y md5:

フォーマットによっては(典型的には MOV)出力プロトコルがシーク可能である必要が あり、したがって MD5 出力プロトコルが一緒だと失敗することに注意してください。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.8 pipe

UNIX パイプアクセスプロトコル。

UNIX パイプに書き出したり読み込んだりすることができます。

受け取る構文は:

 
pipe:[number]

number はパイプのファイル記述子に対応する番号 (例えば標準入力なら0、標準出力なら1、標準エラー出力なら2)です。 number が指定されていなければ、既定ではこのプロトコルが 書き出しに用いられるときには標準出力が利用され、このプロトコルが 読み込みに用いられるときには標準入力が利用されます。

例えば ‘ffmpeg’ で標準入力から読むには:

 
cat test.wav | ffmpeg -i pipe:0
# ...これは次と同じです...
cat test.wav | ffmpeg -i pipe:

ffmpeg’ で標準出力に書くには:

 
ffmpeg -i test.wav -f avi pipe:1 | cat > test.avi
# ...これは次と同じです...
ffmpeg -i test.wav -f avi pipe: | cat > test.avi

フォーマットによっては(典型的には MOV)出力プロトコルがシーク可能である必要が あり、したがってパイプ出力プロトコルが一緒だと失敗することに注意してください。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.9 rtmp

リアルタイムメッセージングプロトコル。

リアルタイムメッセージングプロトコル(RTMP)は TCP/IP ネットワーク越しの マルチメディアコンテントのストリーミングに用いられます。

必要となる構文は:

 
rtmp://server[:port][/app][/playpath]

受け取るパラメータは以下の通りです:

server

RTMP サーバーのアドレスです。

port

利用される TCP ポートの番号です(既定では1935です)。

app

アクセスするアプリケーションの名前です。たいていの場合 RTMP サーバー にそのアプリケーションがインストールされているパスになります。 (例えば ‘/ondemand/’、‘/flash/live/’、など)。

playpath

app で指定されうアプリケーションから参照され再生される リソースのパスまたは名前です。"mp4:"が先頭につくかもしれません。

例えば ‘ffplay’ で RTMP サーバー "myserver" からアプリケーション "vod" で "sample" という名前のマルチメディアリソースを読むには:

 
ffplay rtmp://myserver/vod/sample

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.10 rtmp、rtmpe、rtmps、rtmpt、rtmpte

librtmp を通じてサポートされるリアルタイムメッセージングプロトコルとその バリエーションです。

構成(configure)の際に librtmp のヘッダとライブラリが存在しなければなりません。 "–enable-librtmp" で明示的にビルドを configure する必要があります。 有効にされるとネイティブの RTMP プロトコルは置き替えられます。

このプロトコルは、RTMP、HTTP トンネルによる RTMP (RTMPT)、暗号化 RTMP (RTMPE)、SSL/TLS オーバー RTMP (RTMPS)、そしてこれら暗号化タイプの トンネル版(RTMPTE、RTMPTS)をサポートするために必要ななるほとんどの クライアント機能と少数のサーバー機能を提供します。

必要となる構文は:

 
rtmp_proto://server[:port][/app][/playpath] options

ただし rtmp_proto は各 RTMP バリエーションに対応する文字列 "rtmp"、"rtmpt"、"rtmpe"、"rtmps"、"rtmpte"、"rtmpts" の1つで、 serverportapp および playpath は RTMP ネイティブプロトコルで指定されるものと同じ意味を持ちます。 options は空白で区切られた key=val の形のオプション のリストを含みます。

さらなる情報については librtmp のマニュアルページ(man 3 librtmp)を見てください。

例えば、‘ffmpeg’ を使ってリアルタイムに RTMP サーバーに向けてファイルをストリームするには:

 
ffmpeg -re -i myfile -f flv rtmp://myserver/live/mystream

ffplay’ を使って同じストリーミングを行なうには:

 
ffplay "rtmp://myserver/live/mystream live=1"

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.11 rtp

リアルタイムプロトコル。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.12 rtsp

RTSP は技術的には libavformat でのプロトコルハンドラではなく、demuxer であり かつ muxer です。この demuxer は通常の RTSP (RTP 越しにデータが転送される; これは例えば Apple や Microsoft で用いられています)も Real-RTSP (RDT 越しに データが転送される)もどちらにも対応しています。

muxer はストリームを RTSP ANNOUNCE を用いて、それに対応しているサーバー (現時点では Darwin Streaming Server と Mischa Spiegelmock の RTSP server http://github.com/revmischa/rtsp-server) に向けて送信するために利用できます。

RTSP のために必要となる構文は:

 
rtsp://hostname[:port]/path[?options]

options& で区切られたリストです。以下のオプションが サポートされています:

udp

下位トランスポートプロトコルに UDP を使います。

tcp

下位トランスポートプロトコルに(RTSP コントロールチャンネル内で交互にした) TCP を使います。

multicast

下位トランスポートプロトコルに UDP マルチキャストを使います。

http

下位トランスポートプロトコルに http トンネリングを使います。これは 受動的なプロキシに対して便利です。

複数の下位トランスポートプロトコルを指定することが許されており、その場合 一度に1つだけ試されます(1つの設定に失敗したら、次のものが試されます)。 muxer については、tcpudp のみがサポートされています。

UDP 越しにデータを受け取る際に、demuxer は受け取ったパケットを並べ直そうと します(これらが順番になっていない、もしくは全体的にパケットが失われている かもしれないからです)。これを有効にするためには、 AVFormatContext の max_delay フィールドで最大の遅延を指定しなければなりません。

ffplay’ でマルチビットレート Real-RTSP ストリームを観る際、 表示するストリームとして -vst n および -ast n で 映像と音声それぞれを選択できます。そして作動中に va を押すことで切り替えることが可能です。

コマンドラインの例:

UDP 越しのストリームを観る、並べ直しの最大遅延は0.5秒:

 
ffplay -max_delay 500000 rtsp://server/video.mp4?udp

HTTP トンネル経由のストリームを観る:

 
ffplay rtsp://server/video.mp4?http

他人に観せるために、RTSP サーバーにストリームをリアルタイムで送信する:

 
ffmpeg -re -i input -f rtsp -muxdelay 0.1 rtsp://server/live.sdp

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.13 sap

セッションアナウンスメントプロトコル(RFC 2974)。これは技術的には libavformat のプロトコルハンドラではなく、muxer および demuxer です。 分離されたポート上で定期的にストリームに対して SDP を通知することによって、 RTP ストリームのシグナリングのために使用されます。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.13.1 Muxer

muxer に渡される SAP url のための構文は次の通りです:

 
sap://destination[:port][?options]

RTP パケットはポート portdestination に対して送信され、 ポートが指定されていない場合にはポート 5004 に対して送信されます。 options& で区切られたリストです。以下のオプションを サポートしています:

announce_addr=address

通知を送りつける送信先の IP アドレスを指定する。 省略されていれば、通知は共通して利用されている SAP アナウンスメント マルチキャストアドレス 224.2.127.254 (sap.mcast.net)に、もしくは destination が IPv6 アドレスならば ff0e::2:7ffe に送信される。

announce_port=port

通知を送りつけるポートを指定する、指定されなければ 既定で 9875。

ttl=ttl

通知と RTP パケットのための time to live 値を指定する、 既定では 255。

same_port=0|1

1が設定されれば、全ての RTP ストリームを同じポート対で送る。0(既定) ならば、全てのストリームは独自のポートに送られ、各ストリームは先のものより 2つ数字の大きいポート番号になる。 VLC/Live555 では、ストリームを受け取れるように、これを1に設定することが求められる。 libavformat で受信するための RTP スタックは各ストリームが一意なポートで送られる 必要がある。

コマンドラインの例は以下の通り。

VLC で観るために、ローカルサブネットにストリームをブロードキャストするためには:

 
ffmpeg -re -i input -f sap sap://224.0.0.255?same_port=1

同様に、ffplay で観るには:

 
ffmpeg -re -i input -f sap sap://224.0.0.255

そして IPv6 越しに ffplay で観るには:

 
ffmpeg -re -i input -f sap sap://[ff0e::1:2:3:4]

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.13.2 Demuxer

demuxer に与える SAP url のための構文は:

 
sap://[address][:port]

address は通知のために待ち受けるマルチキャストアドレスであり、 省略されれば、既定の 224.2.127.254 (sap.mcast.net)が用いられる。 port は待ち受けるポートであり、省略された場合9875である。

demuxer は与えられたアドレスとポートで通知を待ち受ける。 いったん通知を受け取るとすぐに、特定のストリームを受信しようとする。

コマンドラインの例は以下の通り。

通常の SAP マルチキャストアドレスで通知される最初のストリームを再生するには:

 
ffplay sap://

既定の IPv6 SAP マルチキャストアドレスで通知される最初のストリームを再生するには:

 
ffplay sap://[ff0e::2:7ffe]

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.14 tcp

トランスミッションコントロールプロトコル。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.15 udp

ユーザーデータグラムプロトコル。

UDP url に要する構文は:

 
udp://hostname:port[?options]

options は & で区切られた key=val の形のオプションのリストを含む。 サポートされているオプションのリストは以下の通り:

buffer_size=size

UDP バッファサイズをバイト数で設定する

localport=port

バインドするローカル UDP ポートを上書きする

pkt_size=size

UDP パケットのバイトサイズを設定する

reuse=1|0

UDP ソケットの再利用を明示的に有効または無効にする

ttl=ttl

time to live 値を設定する(マルチキャストについてのみ)

connect=1|0

UDP ソケットを connect() で初期化する。 この場合、送り先アドレスは後から udp_set_remote_url で変えることができない。 これによって getsockname でパケットの送り元アドレスを見つけることができ、 書き出しの際 "destination unreachable" を受け取った場合には AVERROR(ECONNREFUSED) を返す。

udp プロトコルの ‘ffmpeg’ での利用例は以下の通り。

UDP 越しにリモートエンドポイントへストリームするには:

 
ffmpeg -i input -f format udp://hostname:port

188 サイズの UDP パケットを使い、大きい入力バッファで UDP 越しに mpegts 形式でストリームするには:

 
ffmpeg -i input -f mpegts udp://hostname:port?pkt_size=188&buffer_size=65535

UDP 越しにリモートエンドポイントから受け取るには:

 
ffmpeg -i udp://[multicast-address]:port

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

10. Bitstream フィルター

FFmpeg のビルドを構成する際、既定では全てのサポートされている bitstream フィルターが有効になります。configure オプション --list-bsfs を 使うと全ての利用可能な bitstream フィルターを一覧できます。

configure オプション --disable-bsfs を使うと全ての bitstream フィルターを無効にでき、オプション --enable-bsf=BSF を使うと 任意の bitstream フィルターを選択的に有効にできます。またオプション --disable-bsf=BSF を使うと特定の bitstream フィルターを無効に できます。

ff* ツールのオプション -bsfs で、ビルドに含まれる全てのサポート される bitstream フィルターが表示されます。

以下は現在利用できる bitstream フィルターの説明です。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

10.1 aac_adtstoasc


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

10.2 chomp


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

10.3 dump_extradata


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

10.4 h264_mp4toannexb


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

10.5 imx_dump_header


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

10.6 mjpeg2jpeg

MJPEG/AVI1 パケットを完全な JPEG/JFIF パケットに変換します。

MJPEG はその中で各映像フレームが本質的には JPEG 画像であるような 映像コーデックです。その個別のフレームをロスなしに抽出できます、 例えば

 
ffmpeg -i ../some_mjpeg.avi -vcodec copy frames_%d.jpg

あいにく、デコーディングのために必要となる DHT セグメントがないため、 これらのチャンクは不完全な JPEG 画像です。 http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml からの引用です:

Avery Lee が2001年に rec.video.desktop ニュースグループで以下のように コメントしています。"MJPEG、あるいは少なくとも MJPG fourcc を持つ AVI での MJPEG は、固定の – かつ*省略された* – ハフマンテーブルを持つ 制限つきの JPEG です。この JPEG では YCbCr 色空間でなくてはならず、 4:2:2 である必要があり、算術的でもプログレッシブでもない基本ハフマン エンコーディングを使わなくてはいけません. . . . 実際は MJPEG フレームを 抽出して通常の JPEG デコーダでデコードすることができますが、それらに DHT セグメントを前置しなくてはならず、さもないとそのデコーダがデータを どのように展開すればよいか分かりません。必要とされる正確なテーブルは OpenDML 仕様で与えられています。"

この bitstream フィルターは、完全に適切になった JPEG 画像を作るために、 (AVI1 ヘッダ ID を伝え、かつ DHT セグメントを欠いている)MJPEG ストリームから 抽出されたフレームのヘッダを手当てします。

 
ffmpeg -i mjpeg-movie.avi -vcodec copy -vbsf mjpeg2jpeg frame_%d.jpg
exiftran -i -9 frame*.jpg
ffmpeg -i frame_%d.jpg -vcodec copy rotated.avi

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

10.7 mjpega_dump_header


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

10.8 movsub


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

10.9 mp3_header_compress


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

10.10 mp3_header_decompress


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

10.11 noise


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

10.12 remove_extradata


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11. 音声フィルター

FFmpeg ビルドを構成(configure)する際に、–disable-filters を使って 既存のフィルターをいずれも無効にすることができる。 構成の出力(configure output)にはそのビルドに含まれる音声フィルターが 表示されている。

以下は現時点で利用できる音声フィルターの説明である。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.1 anull

音声ソースを変更せずに出力に渡す。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

12. 音声ソース

以下は現在利用可能な音声ソースの説明である。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

12.1 anullsrc

Null 音声ソース、音声フレームを一切返さない。これは主にテンプレートとして 有用であり、分析/デバッギングツールの中で用いるためのものである。

これは次の形をした文字列を省略可能なパラメータとして受け取る: sample_rate:channel_layout

sample_rate はサンプルレートを指定し、既定では 44100 とされる。

channel_layout チャンネルレイアウトを指定し、整数値または チャンネルレイアウトを表す文字列をとれる。channel_layout の既定の 値は3であり、CH_LAYOUT_STEREO に対応する。

文字列とチャンネルレイアウトの値との間のマッピングについては ‘libavcodec/audioconvert.c’ にある channel_layout_map の定義を 確認すること。

いくつかの例は以下の通り:

 
# サンプルレートを48000 Hz に、チャンネルレイアウトを CH_LAYOUT_MONO に設定する。
anullsrc=48000:4

# 同じく
anullsrc=48000:mono

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

13. 音声シンク

以下は現在利用可能な音声シンクの説明である。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

13.1 anullsink

Null 音声シンク、入力音声に対し全く何もしない。これは主にテンプレートとして 有用であり、分析/デバッギングツールで用いるためのものである。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

14. 映像フィルター

FFmpeg ビルドを構成(configure)する際に、–disable-filters を使って 既存の映像フィルターをいずれも無効にすることができる。 構成の出力(configure output)にはそのビルドに含まれる映像フィルターが 表示されている。

以下は現時点で利用できる映像フィルターの説明である。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

14.1 blackframe

(ほぼ)真っ黒なフレームを検出する。章の変わり目やコマーシャルを検出 するのに有用となりうる。出力される行は検出されたフレームのフレーム数、 黒のパーセンテージ、(分かるなら)ファイルでの位置もしくは-1、および 秒単位でのタイムスタンプからなる。

出力される行を表示するには、ログレベルを少なくとも AV_LOG_INFO に 設定する必要がある。

このフィルターは次の構文を受け取る:

 
blackframe[=amount:[threshold]]

amount は閾値以下にならなくてはならないピクセルのパーセンテージであり、 既定では98になる。

threshold はピクセルの値がこれを下回ると黒と見なされる閾値であり、 既定では32になる。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

14.2 crop

入力映像を out_w:out_h:x:y に切り取る。

このパラメータは以下の定数を含む表現である:

E, PI, PHI

e(オイラー数)、pi(ギリシャ文字のパイ)、PHI(黄金比)それぞれ対応する数学的近似値

x, y

x および y についての計算された値。これらは各新しいフレームで 評価される。

in_w, in_h

入力の幅および高さ

iw, ih

in_w および in_h と同じ

out_w, out_h

出力の(切り取られた)幅および高さ

ow, oh

out_w および out_h と同じ

n

0から始まる入力フレームの数

pos

入力フレームのファイルの中での位置、不明なら NAN

t

秒で表されたタイムスタンプ、入力タイムスタンプが不明なら NAN

パラメータ out_w および out_h は出力の(切り取られた)映像の 幅および高さのための表現を指定する。これらはフィルターのコンフィグレーション の時点で評価される。

out_w の既定値は "in_w" であり、out_h の既定値は "in_h" である。

out_w のための表現は out_h の値に依存することがあり、 out_h のための表現は out_w に依存することがあるが、 x および y の値には依存しないはずである。なぜなら x および yout_w および out_h の後で 評価からである。

パラメータ x および y は出力の(切り取られていない)領域 の左上隅の位置のための表現を指定する。これらは各フレームについて 評価される。評価された値が妥当でなければ、最も近い妥当な値に近似 される。

x の既定の値は "(in_w-out_w)/2" であり、y の既定の値は "(in_h-out_h)/2" である。これは入力画像の中央に切り取られた領域を 設定することになる。

x のための表現は y に依存することがあり、y の ための表現は x に依存することがある。

いくつかの例は以下の通り:

 
# サイズ 100x100 で入力領域の中央を切り取る
crop=100:100

# 入力映像の 2/3 のサイズで入力領域の中央を切り取る
"crop=2/3*in_w:2/3*in_h"

# 入力映像の中央を正方形に切り取る
crop=in_h

# 左上隅の位置を 100:100、右下隅を入力映像の右下隅に合わせて
# 矩形の範囲を定める
crop=in_w-100:in_h-100:100:100

# 左右のボーダーから10ピクセルを切り取り、上下のボーダーから20ピクセルを
# 切り取る
"crop=in_w-2*10:in_h-2*20"

# 入力画像の右下4分の1のみを残す
"crop=in_w/2:in_h/2:in_w/2:in_h/2"

# 黄金分割になるように縦を切り取る
"crop=in_w:1/PHI*in_w"

# 震動効果
"crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(n/10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(n/7)"

# タイムスタンプおよび位置に依存した不規則なカメラ効果
"crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(t*10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(t*13)"

# y の値に依存した x を設定する
"crop=in_w/2:in_h/2:y:10+10*sin(n/10)"

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

14.3 cropdetect

切り取るサイズを自動検出する。

切り取りに必要となるパラメータを計算し、ロギングのシステムを通じて推奨される パラメータを表示する。検出された寸法は入力映像の黒でない領域に対応する。

これは次の構文を受け取る:

 
cropdetect[=limit[:round[:reset]]]
limit

閾値、何もない(0)から全て(255)までを自由に選択することができる。 既定では24。

round

幅/高さが分割されるべき値、既定では16。 オフセットは自動的に映像の中心に調節される。 偶数の寸法のみ(4:2:2 の映像で必要となる)を得るには2を用いること。 たいていの映像コーデックでエンコーディングする際には16が最良。

reset

以前に検出された最大の映像領域をリセットし、現在の最適な 切り取り領域を検出し始めるのにどれだけのフレームを 過ぎてからにするかを決めるカウンター。 既定では0。

これはチャンネルのロゴが映像領域を歪ませる際に有用である。 0はリセットせず再生中に出てきた最大の領域を返すように 指示する。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

14.4 drawbox

入力イメージに色付けされた箱を描く。

これは次の構文を受け取る:

 
drawbox=x:y:width:height:color
x, y

箱の左上隅を指定する。既定では0。

width, height

箱の幅および高さを指定する。0なら入力の幅および高さとして解釈される。 既定では0。

color

描く箱の色を指定する。(大文字小文字を区別しない)色の名前もしくは 列 0xRRGGBB[AA] をとりうる。

いくつかの例は以下の通り:

 
# 入力画像の縁に沿って黒い箱を描く
drawbox

# 50%の透明度の赤で箱を描く
drawbox=10:20:200:60:red@0.5"

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

14.5 fifo

入力イメージをバッファし、かつ要求された時にそれらを送る。

このフィルターは主に libavfilter フレームワークによって自動的に 挿入される際に有用である。

このフィルターはパラメータを受け取らない。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

14.6 format

入力映像を指定されたピクセル形式の1つに変換する。 Libavfilter は次のフィルターの入力にサポートされているうちの1つを 選択しようと試みる。

このフィルターは、例えば "yuv420p:monow:rgb24" のように、":" によって 区切られたピクセル形式名のリストを引数として受け取る。

次のコマンド:

 
./ffmpeg -i in.avi -vf "format=yuv420p" out.avi

は入力映像を形式 "yuv420p" に変換する。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

14.7 frei0r

入力映像に frei0r 効果を適用する。

このフィルターのコンパイルを有効にするには、frei0r ヘッダをインストール し、–enable-frei0r とともに FFmpeg を configure すること。

このフィルターは次の構文をサポートする:

 
filter_name:param1:param2:...:paramN

filter_name はロードする frei0r 効果の名前である。環境変数 FREI0R_PATH が定義されていれば、FREIOR_PATH の中のコロンで 区切られたリストで指定されたディレクトリのいずれかから frei0r 効果が 探索され、さもなくば次の順番で標準的な frei0r のパスから探索される: ‘HOME/.frei0r-1/lib/’、‘/usr/local/lib/frei0r-1/’、 ‘/usr/lib/frei0r-1/’。

param1param2、...、paramN はその frei0r 効果に対する パラメータを指定する。

frei0r 効果のパラメータはブール値(その値は "y" および "n" で指定される)、 倍精度浮動小数点数、色(R/G/B という構文で指定される、ただし RG、および B は 0.0 から 1.0 までの浮動小数点数、または av_parse_color() の色の記述によって指定される)、位置(X/Y という構文で指定される、ただし XY は浮動小数点数)、および 文字列を取ることができる。

パラメータの数と種類はロードされる効果に依存する。効果のパラメータが 指定されていなければ、既定値が設定される。

以下はいくつかの例:

 
# distort0r 効果を適用、最初の2つの倍精度浮動小数点数パラメータを設定
frei0r=distort0r:0.5:0.01

# colordistance 効果を適用、最初のパラメータとして色をとる
frei0r=colordistance:0.2/0.3/0.4
frei0r=colordistance:violet
frei0r=colordistance:0x112233

# perspective 効果を適用、画像位置の左上と右上を指定
frei0r=perspective:0.2/0.2:0.8/0.2

さらなる情報については以下を見ること: http://piksel.org/frei0r


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

14.8 hflip

入力映像を水平方向に反転させる。

例えば ‘ffmpeg’ で入力の映像を水平方向に反転させるには:

 
ffmpeg -i in.avi -vf "hflip" out.avi

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

14.9 noformat

次のフィルターの入力に指定されたピクセル形式のいずれも使わないように libavfilter に強制する。

このフィルターは、例えば "yuv420p:monow:rgb24" のように、":" で区切られた ピクセル形式名のリストを引数として受け取る。

次のコマンド:

 
./ffmpeg -i in.avi -vf "noformat=yuv420p, vflip" out.avi

は、"yuv420p" と異なる形式のどれかを使って vflip フィルターに 入力するように libavfilter に強制する。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

14.10 null

映像ソースを変更せずに出力に渡す。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

14.11 ocv_smooth

libopencv を使ってスムーズ変換をほどこす。

このフィルターを有効にするには libopencv ライブラリとヘッダをインストールし FFmpeg を –enable-libopencv で configure すること。

このフィルターは以下のパラメータを受け取る: type:param1:param2:param3:param4

type はほどこすスムーズフィルターの種類で、次の値のいずれかをとる: "blur"、"blur_no_scale"、"median"、"gaussian"、"bilateral"。 既定値は "gaussian"。

param1param2param3、および param4 は スムーズの種類に応じてその意味が変わるパラメータである。 param1param2 は正の整数値または0を受け取り、param3param4 は浮動小数点数値を受け取る。

param1 に対する既定値は3で、その他のパラメータについての既定値は 0である。

これらのパラメータは libopencv 関数 cvSmooth に割り当てられている パラメータに対応する。このパラメータの正確な意味については公式の libopencv 文書を参照すること: http://opencv.willowgarage.com/documentation/c/image_filtering.html


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

14.12 overlay

映像を別の映像の上に重ねる。

これは2つの入力と1つの出力をとる。最初の入力は"主な"映像で、その上に 2番目の入力が重ねられる。

受け取るパラメータは: x:y

x は主な映像の上に重ねられる映像の x 座標。 y は y 座標。これらのパラメータは下記のパラメータを含むような 式である:

main_w, main_h

主な入力の幅と高さ

W, H

main_w および main_h と同じ

overlay_w, overlay_h

重ねる入力の幅と高さ

w, h

overlay_w および overlay_h と同じ

各入力映像から取られるフレームはタイムスタンプの順であることを意識すること。 したがって、それらの初期タイムスタンプが異なるなら、setpts=PTS-STARTPTS フィルターに通し、それらが同じゼロタイムスタンプから始まるようにして (movie フィルターの例で行っているように )2つの入力を渡すことは 良い考えである。

いくつかの例:

 
# 主な映像の右下隅から10ピクセルのところに
# 重ねて描画する
overlay=main_w-overlay_w-10:main_h-overlay_h-10

# 入力の左下隅に透過 PNG ロゴを挿入する
movie=0:png:logo.png [logo];
[in][logo] overlay=10:main_h-overlay_h-10 [out]

# 2つの異なる透過 PNG ロゴを挿入する(2番目のロゴは
# 右下隅):
movie=0:png:logo1.png [logo1];
movie=0:png:logo2.png [logo2];
[in][logo1]       overlay=10:H-h-10 [in+logo1];
[in+logo1][logo2] overlay=W-w-10:H-h-10 [out]

# 主な映像の上部に透過色レイヤーを加える、
# WxH はオ overlay フィルターに主な入力のサイズを指定する
color=red.3:WxH [over]; [in][over] overlay [out]

さらに多くの重ねを繋げることは可能だが、そういったアプローチの 効率は試験中である。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

14.13 pad

入力画像に対してパディングを加え、元の入力を与えられた座標 x, y に配置する。

次のようなパラメータを受け取る: width:height:x:y:color

受け取るパラメータの説明は以下の通り。

width, height

パディングを加えた出力画像のサイズを指定する。width または height としての値が0の場合、対応する入力サイズが出力として 用いられる。

width および height の既定値は0。

x, y

出力画像の左上隅を基準にして、パディング領域における入力画像を 配置するのオフセットを指定する。

x および y の既定値は0。

color

パディング領域の色を指定する。色の名前もしくは 0xRRGGBB[AA] 数列を とりうる。

color の既定値は "black"。

例えば:

 
# パディングを色 "violet" にして入力映像に追加する。
# 出力映像のサイズは640x480で、
# 行0、列40に入力映像の左上隅が配置される。
pad=640:480:0:40:violet

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

14.14 pixdesctest

ピクセル形式記述子テストフィルター、主に内部的なテストに有用。 出力映像は入力映像に等しくなるはずである。

例えば:

 
format=monow, pixdesctest

として monowhite ピクセル形式記述子定義をテストするために用いることができる。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

14.15 scale

入力映像を width:height に拡縮し、かつ/または画像形式を変換する。

例えば次のコマンド:

 
./ffmpeg -i in.avi -vf "scale=200:100" out.avi

は入力映像を200x100のサイズに拡縮する。

入力画像形式が次のフィルターが要求しているものと異なるなら、 この scale フィルターは入力を要求されている形式に変換する。

width または height の値が0なら、出力には対応する 入力サイズが用いられる。

width または height の値が-1なら、それぞれの出力サイズについて、 この scale フィルターは入力画像の縦横比を維持する値を用いる。

widthheight の既定の値は0。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

14.16 setpts

入力映像フレームの PTS (プレゼンテーションタイムスタンプ)を変更する。

eval API を通じて評価される式を入力として受け取ります。以下の定数を 含めることができる。

PTS

入力のプレゼンテーションタイムスタンプ

PI

ギリシャ文字のパイ

PHI

黄金比

E

自然対数の底

N

0から始まる入力フレームのカウント

STARTPTS

最初の映像フレームの PTS

INTERLACED

現在のフレームがインターレースされているかどうか

POS

フレームのファイルでの本来の位置、現在のフレームについて定義されていなければ 不定。

PREV_INPTS

直前の入力 PTS

PREV_OUTPTS

直前の出力 PTS

いくつかの例:

 
# 0から PTS を数え始める
setpts=PTS-STARTPTS

# ファーストモーション
setpts=0.5*PTS

# スローモーション
setpts=2.0*PTS

# 固定レート 25 fps
setpts=N/(25*TB)

# 固定レート 25 fps および多少の揺れ
setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

14.17 settb

出力フレームのタイムスタンプに用いる timebase を設定する。 主に timebase の構成をテストするために便利である。

入力に有理数を表す算術表現をとる。この表現には定数 "PI"、"E"、"PHI"、"AVTB"(既定の timebase)および "intb"(入力の timebase) を含めることができる。

入力のための既定の値は "intb"。

以下にいくつか例を挙げる。

 
# timebase を1/25にする
settb=1/25

# timebase を1/10にする
settb=0.1

# timebase を1001/1000にする
settb=1+0.001

# timebase を intb の2倍にする
settb=2*intb

# 既定の timebase の値にする
settb=AVTB

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

14.18 slicify

入力映像のイメージを複数のスライスとして次の映像フィルターに 渡す。

 
./ffmpeg -i in.avi -vf "slicify=32" out.avi

このフィルターはスライスの高さをパラメーターとして受け取る。 このパラメーターが指定されていなければ、16という既定値を使う。

フィルターの連鎖の最初にこれを追加すると、メモリーキャッシュを より良く使ってフィルタリングがより速くなる。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

14.19 transpose

入力映像で行を列で置き換え、場合によっては反転させる。

これは整数値を表す1つのパラメータを受け取り、それは以下の値を 仮定します:

0

90°反時計回りに回転し、かつ垂直に反転する(既定値)、つまり:

 
L.R     L.l
. . ->  . .
l.r     R.r
1

90°時計回りに回転する、つまり:

 
L.R     l.L
. . ->  . .
l.r     r.R
2

90°反時計回りに回転する、つまり:

 
L.R     R.r
. . ->  . .
l.r     L.l
3

90°時計回りに回転し、かつ垂直に反転する、つまり:

 
L.R     r.R
. . ->  . .
l.r     l.L

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

14.20 unsharp

入力映像をシャープにする、またはぼやけさせる。次のパラメータを受けつける:

名前説明最小値最大値既定値
luma_msize_xLuma matrix 水平サイズ3135
luma_msize_yLuma matrix 垂直サイズ3135
luma_amountLuma effect 強度-2.05.01.0
chroma_msize_xChroma matrix 水平サイズ3130
chroma_msize_yChroma matrix 垂直サイズ3130
chroma_amountChroma effect 強度-2.05.00.0

量を負の値にすると入力映像をぼやけさせ、正の値にするとシャープにする。 全てのパラメータは省略可能であり、既定の値は文字列 ’5:5:1.0:0:0:0.0’ と 同等である。

 
# luma sharpen effect パラメータを強くする
unsharp=7:7:2.5

# luma および chroma パラメータを両方強くぼやけさせる
unsharp=7:7:-2:7:7:-2

# ffmpeg とともに既定値を使う
./ffmpeg -i in.avi -vf "unsharp" out.mp4

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

14.21 vflip

入力映像を垂直に反転する。

 
./ffmpeg -i in.avi -vf "vflip" out.avi

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

14.22 yadif

yadif は "yet another deinterlacing filter" である。

これは次の構文を受け取る:

 
yadif=[mode[:parity]]
mode

採用するインターレースモードを指定する、下記の値の1つを受け取る。

0: 各フレームに対し1つフレームを出力。

1: 各フィールドについて1つフレームを出力。

2: 0と同じだが空間的インターレースチェックをスキップする。

3: 1 と同じだが空間的インターレースチェックをスキップする。

既定値は0。

parity

インターレースされた映像について下部フィールドが先なら0、 上部フィールドが先なら1。自動検出を有効にするなら-1。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

15. 映像ソース

以下が現在利用できる映像ソースの説明です。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

15.1 buffer

映像フレームをバッファし、かつそれらをフィルターチェーンで利用できるようにします。

このソースは主にプログラミング用に、特に ‘libavfilter/vsrc_buffer.h’ で定義されているインターフェイスを通じて使うことを意図されています。

これは次のパラメータを受け取ります: width:height:pix_fmt_string:timebase_num:timebase_den

全てのパラメータが明示的に定義される必要があります。

以下が受け取るパラメータのリストです。

width, height

バッファされる映像フレームの幅と高さを指定します。

pix_fmt_string

バッファされる映像フレームのピクセルフォーマットを表す文字列です。 あるピクセルフォーマットの対応する数字、もしくはピクセルフォーマットの 名前になります。

timebase_num, timebase_den

バッファされたフレームのタイムスタンプによって仮定される timebase の分子と分母を指定します。

例えば:

 
buffer=320:240:yuv410p:1:24

とすると、サイズが320x240で、フォーマットが"yuv410p"、タイムスタンプの timebase として1/24を仮定した映像フレームを受け取るソースを指示します。 名前"yuv410p"をもつピクセルフォーマットは数字6に対応する (‘libavutil/pixfmt.h’ にあるenum PixelFormat の定義を確認してください) ので、この例は次と同じです:

 
buffer=320:240:6:1:24

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

15.2 color

一様に色付けされた入力を提供します。

これは次のようなパラメータを受け取ります: color:frame_size:frame_rate

受け取るパラメータの説明は以下の通りです。

color

ソースの色を指定します。色の名前(大文字小文字を区別しないマッチ)か アルファ値の指定を最後につけることができる 0xRRGGBB[AA] の形の列です。 既定の値は"black"です。

frame_size

ソースとなる映像のサイズを指定します。widthxheigth という 形の文字列か、サイズの略称となる名前になります。 既定の値は"320x240"です。

frame_rate

ソースとなる映像のフレームレートを指定します。秒間に生成されるフレーム数 です。frame_rate_num/frame_rate_denという形の文字列か、 整数、浮動点数小数、または適切な映像フレームレートの略称です。 既定の値は"25"です。

例えば、以下のグラフ描写は透明度0.2をもつ赤のソースで、サイズ"qcif"、 フレームレートを10パーセカンドを生成します。そして識別子"in"をもつ 詰めものに結び付けられたソースの上にそれがオーバーレイされます。

 
"color=red@0.2:qcif:10 [color]; [in][color] overlay [out]"

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

15.3 nullsrc

Null 映像ソースは画像を一切返しません。主にテンプレートとして有用で、 分析やデバッギングのツールで使われるものです。

省略可能なパラメータとして width:height:timebase という形の文字列を受け取ります。

widthheight は設定されるソースの大きさを指定します。 widthheight の既定値は(CIF サイズ形式に対応して) それぞれ352と288です。

timebase は timebase を表す算術表現を指定します。この表現には 定数 "PI"、"E"、"PHI"、"AVTB"(既定の timebase)を含めることができ、 既定では値 "AVTB" になります。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

16. 映像シンク

以下が現在利用可能な映像シンクの説明です。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

16.1 nullsink

Null 映像シンクは、入力映像について全く何もしません。主にテンプレートとして 有用であり、分析やデバッギングのツールで使われるものです。


[Top] [Contents] [Index] [ ? ]

About This Document

This document was generated by Takeshi Abe on November 23, 2010 using texi2html 1.82.

The buttons in the navigation panels have the following meaning:

Button Name Go to From 1.2.3 go to
[ < ] Back Previous section in reading order 1.2.2
[ > ] Forward Next section in reading order 1.2.4
[ << ] FastBack Beginning of this chapter or previous chapter 1
[ Up ] Up Up section 1.2
[ >> ] FastForward Next chapter 2
[Top] Top Cover (top) of document  
[Contents] Contents Table of contents  
[Index] Index Index  
[ ? ] About About (help)  

where the Example assumes that the current position is at Subsubsection One-Two-Three of a document of the following structure:


This document was generated by Takeshi Abe on November 23, 2010 using texi2html 1.82.