[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
一般的な構文は次のとおりです:
ffmpeg [[infile options][‘-i’ infile]]... {[outfile options] outfile}... |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
数値のオプションは全て(そうではないと明記していない限り) 1つの数を表す入力文字列を受け取ります。それには国際単位系の接頭辞 (例えば ’K’、’M’、’G’)を1つ含めてもかまいません。 この接頭辞の直後に ’i’ を付け加えると、10の累乗の代わりに2の累乗 が使われます。 ’B’ という接尾辞は値を8倍し、また他の接尾辞に付け加えても単独でも どちらでも使えます。これによって例えば ’KB’、’MiB’、’G’ や ’B’ が接尾辞として許されます。
引数をとらないオプションはブール値のオプションであり、対応する値を true にします。オプション名の前に "no" をつけることで false に できます。例えば、コマンドラインで "-nofoo" とすることで "foo" という 名前のブール値のオプションが false になります。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
これらのオプションは ff* ツールの間で共有されます。
ライセンスを表示します。
ヘルプを表示します。
バージョンを表示します。
利用可能なフォーマットを表示します。
フォーマット名の前にあるフィールドは次のような意味があります:
デコーディングが利用できる
エンコーディングが利用できる
利用可能なコーデックを表示します。
コーデック名の前にあるフィールドは次のような意味があります:
デコーディングが利用できる
エンコーディングが利用できる
映像/音声/サブタイトルコーデック
コーデックがスライスをサポートしている
コーデックが direct rendering をサポートしている
コーデックがフレーム境界でだけでなくランダムな場所での切り取られた入力を扱える
利用可能な bitstream フィルターを表示します。
利用可能なプロトコルを表示します。
利用可能な libavfilter フィルターを表示します。
利用可能な pixel フォーマットを表示します。
そのライブラリで使用されるログの冗長さを設定します。 loglevel は以下の値の1つを含んだ数値または文字列:
既定ではプログラムは標準エラー出力にログを出力し、端末が色付けに
対応していれば、エラーと警告に印をつけるように色が使われます。
ログの色付けは環境変数 NO_COLOR
をセットすることで無効にできます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
フォーマットを強制します。
入力のファイル名
出力ファイルを上書きします。
コード変換/キャプチャーされるビデオシーケンスを
秒単位で指定された持続時間に制限します。
hh:mm:ss[.xxx]
という構文もサポートされています。
ファイルサイズの上限を設定します。
秒単位で与えられた時刻の位置を探します。
hh:mm:ss[.xxx]
という構文もサポートされています。
秒単位で入力時間のオフセットを設定します。
[-]hh:mm:ss[.xxx]
という構文もサポートされています。
このオプションはそれに続く全ての入力ファイルに影響します。
オフセットは入力ファイルのタイムスタンプに加えられます。
正のオフセットを指定するということは ’offset’ 秒だけ
対応するストリームが遅延させられることを意味します。
コンテナに記録するタイムスタンプを設定します。 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 をとります。
メタデータ key/value の組を設定します。
例えば、出力ファイルにタイトルを設定するには:
ffmpeg -i in.avi -metadata title="my title" out.flv |
ログの冗長さの水準を設定します。
目標のファイルの型("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 |
録画録音されるデータフレームの数を設定します。
サブタイトルのコーデックを強制します(’copy’ ならストリームをコピーします)。
現在の出力ストリームに新しいサブタイトルストリームを追加します。
現在のサブタイトルストリームに(3文字の)ISO 639 言語コードを設定します。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ビデオのビットレートをbit/sで設定します(既定値は200kb/s)。
録画するビデオフレームの数を設定します。
フレームレート(Hz での値、分数または省略形)を設定します(既定値は25)。
フレームサイズを設定します。 書式は‘wxh’(ffserver の既定値は160x128、ffmpeg の既定値は元と同じ)です。 次の省略形も認識できます:
128x96
176x144
352x288
704x576
1408x1152
160x120
320x240
640x480
800x600
1024x768
1600x1200
2048x1536
1280x1024
2560x2048
5120x4096
852x480
1366x768
1600x1024
1920x1200
2560x1600
3200x2048
3840x2400
6400x4096
7680x4800
320x200
640x350
852x480
1280x720
1920x1080
アスペクト比(4:3、16:9 もしくは 1.3333、1.7777)を設定します。
これらの切り取りオプションは全て削除されました。代わりに -vf crop=width:height:x:y を使ってください。
pad オプションは全て削除されました。代わりに -vf pad=width:height:x:y:color を使ってください。
映像の録画を無効にします。
ビデオのビットレート誤差許容量(bit/sで、既定値は4000k)を設定します。 最小値として (target_bitrate/target_framerate) を持ちます。 1-パスモードでは、ビットレート誤差許容量はどのくらい目標平均ビットレート値から 外れることを許すかということを指定します。 これは最小/最大ビットレートには関係しません。 過度に許容量を下げることは品質の点で不利な影響を及ぼします。
ビデオの最大ビットレートを(bit/sで)設定します。 -bufxize が設定されいてる必要があります。
ビデオの最小ビットレートを(bit/sで)設定します。 CBR エンコードを設定する場合に最も有用です:
ffmpeg -i myfile.avi -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2v |
それ以外ではあまり使途がありません。
video buffer verifier バッファサイズを(bitsで)設定します。
ビデオのコーデックを codec に強制します。未加工のコーデックデータ
をありのままコピーするには copy
という特別な値を使ってください。
値を使ってください。
ソースと同じ映像品質を使います(暗に VBR になります)。
パス数(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 |
2パスのログファイル名の接頭辞を prefix に設定します。既定の名前の 接頭辞は “ffmpeg2pass” です。完全なファイル名は ‘PREFIX-N.log’ で、 ただし N は出力ストリーム別の番号です。
現在の出力ストリームに新しいビデオストリームを追加します。
現在の映像ストリームの ISO 639 言語コード(3文字)を設定します。
filter_graph は入力映像に適用されるフィルターグラフの 説明です。 (ソースとシンクを含んだ)利用可能な全てのフィルターを表示するには "-filters" オプションを使ってください。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ピクセルフォーマットを設定します。全てのサポートされているピクセルフォーマットを表示する ためには、パラメーターとして ’list’ を使ってください。
SwScaler フラグを設定します。
gop(the group of pictures) の大きさを設定します。
イントラフレームのみを用います。
出発点を破棄します。
固定されたビデオ量子化スケールを使います(VBR)。
最小のビデオ量子化スケール(VBR)
最大のビデオ量子化スケール(VBR)
ビデオ量子化スケール間の最大の差分(VBR)
ビデオ量子化スケールブラー(VBR) (範囲 0.0 - 1.0)
ビデオ量子化スケール圧縮(VBR) (既定値 0.5)。 レートコントロール方程式の定数。既定の rc_eq について推奨される範囲: 0.0-1.0
最小のビデオラグランジュ因子(VBR)
最大のビデオラグランジュ因子(VBR)
最小のマクロブロック量子化スケール(VBR)
最大ののマクロブロック量子化スケール(VBR)
これらの4つのオプション(lmin、lmax、mblmin、mblmax)は ’lambda’ 単位を使いますが、 ’q’ 単位から簡単に変換するには QP2LAMBDA 定数を使えます:
ffmpeg -i src.ext -lmax 21*QP2LAMBDA dst.ext |
単一パスエンコーディングのための初期複雑度
P- および B-フレーム間の qp 因子
P- および I-フレーム間の qp 因子
P- および B-フレーム間の qp オフセット
P- および I-フレーム間の qp オフセット
レート制御方程式を設定する(セクション "式の評価" を見てください)
(既定値は tex^qComp
)。
レート制御方程式の式を計算する際、セクション "式の評価" で定義 されている標準的な関数とともに、以下の関数が利用できます:
かつ以下の定数が利用できます:
特定のインターバルに対するレート制御の変更
モーション推定手法を method に設定する。 利用できる手法は次のとおり(順に最低から最高品質へ):
単に(0, 0)ベクトルを試す。
(既定の手法)
網羅的な探索(遅く、わずかに epzs より良い)
DCT アルゴリズムを algo に設定する。利用可能な値は次のとおり:
FF_DCT_AUTO (既定値)
FF_DCT_FASTINT
FF_DCT_INT
FF_DCT_MMX
FF_DCT_MLIB
FF_DCT_ALTIVEC
IDCT アルゴリズムを algo に設定する。利用可能な値は次のとおり:
FF_IDCT_AUTO (既定値)
FF_IDCT_INT
FF_IDCT_SIMPLE
FF_IDCT_SIMPLEMMX
FF_IDCT_LIBMPEG2MMX
FF_IDCT_PS2
FF_IDCT_MLIB
FF_IDCT_ARM
FF_IDCT_ALTIVEC
FF_IDCT_SH4
FF_IDCT_SIMPLEARM
エラー回復を n に設定する。
FF_ER_CAREFUL (既定値)
FF_ER_COMPLIANT
FF_ER_AGGRESSIVE
FF_ER_VERY_AGGRESSIVE
エラー補正を bit_mask に設定する。 bit_mask は次の値のビットマスクです:
FF_EC_GUESS_MVS (既定値では有効)
FF_EC_DEBLOCK (既定値では有効)
’frames’ の B-フレームを使います(MPEG-1、MPEG-2、および MPEG-4 でサポート)。
マクロブロック判定
FF_MB_DECISION_SIMPLE: mb_cmp を使います(FFmpeg ではまだ変更できません)。
FF_MB_DECISION_BITS: 最小のビットが必要になるものを選びます。
FF_MB_DECISION_RD: レート歪曲。
マクロブロックによって4つのモーションベクトルを使います(MPEG-4 のみ)。
データパーティションを使います(MPEG-4 only)。
自動検出されないエンコーダーのバグへの対処。
どのくらい厳密に標準に従っているか。
高度なイントラコーディングを有効にします(h263+)。
非限定モーションベクトルを有効にします(h263+)。
画像のインターレースを外します。
エンコーダーのインターレースサポートを強制します(MPEG-2 と MPEG-4 のみ)。 入力ファイルがインターレースされており、かつ最小のロスでインターレース されたフォーマットを維持したい時に、このオプションを使ってください。 代替案として入力ストリームのインターレースを ‘-deinterlace’ で外す ことがありますが、インターレースを外すとロスが生まれます。
圧縮されたフレームの PSNR を計算します。
映像のコーディング統計情報を ‘vstats_HHMMSS.log’ にダンプします。
映像のコーディング統計情報を file にダンプします。
top=1/bottom=0/auto=-1 領域を最初に
イントラ DC 精度。 pp
ビデオタグ/fourcc を強制します。
QP 棒グラフを見せます。
ビットストリームフィルター。"dump_extra"、"remove_extra"、"noise"、"h264_mp4toannexb"、"imxdump"、"mjpegadump"、"mjpeg2jpeg" が利用できます。
ffmpeg -i h264.mp4 -vcodec copy -vbsf h264_mp4toannexb -an out.h264 |
キーフレームを指定されたタイムスタンプに強制します、より正確には その最初のフレームを指定された各タイムスタンプの後に強制します。 このオプションはチャプターマークやその他の出力ファイルの中で 指示された場所にシークポイントが示されることを保証するために便利 となります。このタイムスタンプは昇順に指定される必要があります。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
録音するオーディオフレームの数を設定します。
オーディオサンプリング頻度を設定します(既定値は44100Hz)。
オーディオビットレートをbit/sで設定します(既定値は64k)。
オーディオ品質を設定します(コーデック別、VBR)。
オーディオチャンネルの数を設定します。入力ストリームについては、既定では1に 設定されます。出力ストリームについては、既定では入力にあるオーディオチャンネルと 同じ数に設定されます。入力ファイルにチャンネル数と異なる数のオーディオストリームが ある場合、その振る舞いは不定です。
音声の録音を無効にします。
オーディオのコーデックを codec に強制します。未加工のコーデックデータ
をありのままコピーするには copy
という特別な値を使ってください。
値を使ってください。
出力ファイルに新しいオーディオトラックを追加氏増す。パラメーターを指定したい場合には、
-newaudio
の前にそうしてください(-acodec
、-ab
、など)。
出力ストリームの数が入力ストリームの数と等しい場合には、対応づけは自動的にされます。
そうでない場合には、マッチする最初のものが選ばれます。
いつものように対応づけは -map
を使って変更できます。
例:
ffmpeg -i file.mpg -vcodec copy -acodec ac3 -ab 384k test.mpg -acodec mp2 -ab 192k -newaudio |
現在の音声ストリームの ISO 639 言語コード(3文字)を設定します。
サブタイトルの記録を無効にします。
ビットストリームフィルター。"mov2textsub"、"text2movsub" が利用できます。
ffmpeg -i file.mov -an -vn -sbsf mov2textsub -scodec copy -f rawvideo sub.txt |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
オーディオのタグ/fourcc を強制します。
ビットストリームフィルター。"dump_extra"、"remove_extra"、"noise"、"mp3comp"、"mp3decomp" が利用できます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
サブタイトルのコーデックを強制します(’copy’ ならストリームをコピーします)。
現在の出力ストリームに新しいサブタイトルストリームを追加します。
現在のサブタイトルストリームの ISO 639 言語コード(3文字)を設定します。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ビデオのグラブチャンネルを設定します(DV1394 のみ)。
テレビ放送方式を設定します(NTSC、PAL (SECAM))。
入力を同期読み込みします。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
入力ストリームから出力ストリームへのストリームの対応付けを設定します。 入力ストリームを出力したい順に並べてください。 sync_stream_id が指定された場合、同期する入力ストリームを設定します。
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 |
infile から outfile へチャプターをコピーします。チャプターマッピングが指定されていなければ、 少なくとも1つチャプターがある最初の入力ファイルから全ての出力ファイルへコピーされます。チャプターのコピーを 一切無効にするには負のファイルインデックスを使ってください。
特定のデバグ情報を印字します。
エンコードの終了時にベンチマーク情報を表示します。 CPU 時間と最大メモリ消費を表示します。 最大メモリ消費は全てのシステムでサポートされているわけではなく、 サポートされていない場合にはたいてい 0 として表示します。
各入力パケットをダンプします。
パケットをダンプする際に、ペイロードもダンプします。
(コーデックのテストのために)bit exact アルゴリズムのみを使います。
バイト単位で RTP ペイロードサイズを設定します。
ネイティブのフレームレートで入力を読み込みます。主にグラブデバイスをシミュレートするために使います。
入力ストリームをループします。現時点では画像ストリームに対してのみ 動作します。このオプションは自動的な FFserver テストに使われます。
アニメーション GIF のようなループをサポートしているフォーマット向けに 繰り返しループして出力します(0 で無限にループ出力します)。
スレッド数。
ビデオ同期方式。 0 demuxer から muxer へタイムスタンプとともに各フレームを渡します。 1 要求された定数フレームレートを実現するためにフレームを重複させたり 抜かしたりします。 2 フレームはタイムスタンプとともに渡されますが、同じタイムスタンプの2つの フレームがあれば抜かします。 -1 muxer の能力に応じて 1 か 2 を選択する。これが既定の方法です。 -map を併用することでどのストリームからタイムスタンプを取得するべきか選択できます。 ビデオまたはオーディオを変更せずにおいておくことができ、その変更しないものに対し 残りのストリームを同期することができます。
オーディオ同期方式。タイムスタンプに合わせて音声ストリームを“伸長/圧縮”し、 パラメーターは音声を変更するときに用いられる秒間最大サンプル数です。 -async 1 は音声ストリームの開始のみを補正し以後補正しないという特殊な場合です。
入力から出力へタイムスタンプをコピーします。
最も短い入力ストリームが終わり次第エンコーディングを終えます。
タイムスタンプを不連続差分閾値にする。
demux-デコード遅延の最大値を設定する。
初期 demux-デコード遅延を設定する。
次の出力ファイルの中の、あるストリームの 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] | [ ? ] |
プリセットファイルには option=value の組の列が含まれています。 それぞれの組は行ごとになっており、コマンドラインで指定するには扱いにくい オプションの列を指定します。ハッシュ(’#’)で始まる行は無視され、コメントを 与えるために使われます。例としては FFmpeg のソースツリーにある ‘ffpresets’ ディレクトリを確認してください。
プリセットファイルは vpre
、apre
、spre
、および fpre
オプションとともに指定されます。 fpre
オプションは入力として
プリセット名の代わりにプリセットのファイル名をとり、どんな種類のコーデックでも
利用できます。vpre
、apre
、および spre
オプションでは、
プリセットファイルの中で指定されるこれらのオプションはプリセットオプションと
同じ種類の現時点で選択しているコーデックに対して適用されます。
vpre
、apre
、および 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] | [ ? ] |
ffmpeg -g 3 -r 3 -t 10 -b 50k -s qcif -f rv10 /tmp/b.rm |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
* 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] | [ ? ] |
算術的な式を評価する際に、FFmpeg は内部の数式評価器を使います。 これは ‘libavutil/eval.h’ インターフェイスを通じて実装されて います。
式は1引数および2引数演算子、定数および関数を含みます。
2つの式 expr1 と expr2 を結合して別の式 "expr1;expr2" を構成することができます。 expr1 と expr2 が順に評価され、この新しい式は expr2 の値を自身の値とします。
次の2引数演算子が利用できます: +
、-
、
*
、/
、^
。
次の1引数演算子が利用できます: +
、-
。
次の関数が利用できます:
x が NAN なら1.0、さもなくば0.0。
式 expr の値を内部の変数に格納できます。 var は値を格納する変数を示す番号で、 0から9までの範囲の値です。 この関数は内部の変数に格納される値を返します。
番号 var を持つ内部の変数の値をロードできます。 これは以前に st(var, 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の累乗に対応する表示をともないます。
-24 / -80
-21 / -70
-18 / -60
-15 / -50
-12 / -40
-9 / -30
-6 / -20
-3 / -10
-2
-1
2
3 / 10
3 / 10
6 / 20
9 / 30
12 / 40
15 / 40
18 / 50
21 / 60
24 / 70
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
入力デバイスは、FFmpeg 上でシステムに取り付けられたマルチメディアデバイスから やって来るデータにアクセスすることを許す構成された要素です。
FFmpeg のビルドを構成(configure)する際は、既定ではサポートされている全ての 入力デバイスが有効になっています。configure オプション "–list-indevs" を使うと 全ての利用可能な入力デバイスがリストアップされます。
configure オプション "–disable-indevs" を使えば全ての入力デバイスを無効にする ことができ、 "–enable-indev=INDEV" で特定の入力デバイスを選択して有効にでき、 または "–disable-indev=INDEV" で特定の入力デバイスを無効にできます。
ff* ツールのオプション "-formats" は(demuxer と一緒に)サポートされている入力デバイス のリストを表示します。
現在利用可能な入力デバイスの説明は以下の通りです。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ALSA (Advanced Linux Sound Architecture) 入力デバイス。
configure でこの入力デバイスを有効にするには、システムに libasound がインストールされて いる必要があります。
このデバイスによって ALSA デバイスからキャプチャすることができます。キャプチャする デバイスの名前は ALSA カード識別子でなくてはなりません。
ALSA 識別は次の構文をもちます:
hw:CARD[,DEV[,SUBDEV]] |
ただし DEV と SUBDEV という成分は省略できます。
この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] | [ ? ] |
BSD 映像入力デバイス。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Linux DV 1394 入力デバイス。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
IIDC1394 入力デバイス、libdc1394 および libraw1394 に基づいています。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
VfW (Video For Windows) キャプチャ入力デバイス。
入力として渡すファイル名はキャプチャドライバー番号で、0から9の範囲です。 ドライバーの一覧を表示するために "list" をファイル名に使えます。 それ以外のファイル名はデバイス番号0として解釈されます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
出力デバイスは、FFmpeg 上でシステムに取り付けられた出力デバイスへ マルチメディアデータを書き出すことを許す構成された要素です。
FFmpeg のビルドを構成(configure)する際は、既定ではサポートされている全ての 出力デバイスが有効になっています。configure オプション "–list-outdevs" を使うと 全ての利用可能な出力デバイスがリストアップされます。
configure オプション "–disable-outdevs" を使えば全ての出力デバイスを無効にする ことができ、 "–enable-outdev=OUTDEV" で特定の出力デバイスを選択して有効にでき、 または "–disable-outdev=OUTDEV" で特定の出力デバイスを無効にできます。
ff* ツールのオプション "-formats" は(muxer と一緒に)サポートされている出力デバイス のリストを表示します。
現在利用可能な出力デバイスの説明は以下の通りです。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ALSA (Advanced Linux Sound Architecture) 出力デバイス。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
OSS (Open Sound System) 出力デバイス。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
プロトコルは、特定のプロトコルを使用するために必要になるリソースへの アクセスを可能にする FFmpeg 上の構成される要素です。
FFmpeg のビルドを構成(configure)する際は、既定ではサポートされている全ての プロトコルが有効になっています。configure オプション "–list-protocols" を使うと 全ての利用可能なプロトコルがリストアップされます。
configure オプション "–disable-protocols" を使えば全てのプロトコルを無効にする ことができ、 "–enable-protocol=PROTOCOL" で特定のプロトコルを選択して有効にでき、 または "–disable-protocol=PROTOCOL" で特定のプロトコルを無効にできます。
ff* ツールのオプション "-protocols" はサポートされているプロトコル のリストを表示します。
現在利用可能なプロトコルの説明は以下の通りです。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
物理的な連結プロトコル。
多くのリソースから順に、1つの独自のリソースであるかのように 読んだりシークしたりできます。
このプロトコルが受け取る URL は次の構文を持ちます:
concat:URL1|URL2|...|URLN |
ただし URL1、URL2、...、URLN は連結されるリソースの URL で、それぞれは異なるプロトコルを指定していてもかまいません。
例えばファイル列 ‘split1.mpeg’、‘split2.mpeg’、‘split3.mpeg’ を ‘ffplay’ で読むには、次のコマンドを使ってください:
ffplay concat:split1.mpeg\|split2.mpeg\|split3.mpeg |
多くのシェルで特別扱いされる文字 "|" をエスケープしなけばならないかもしれない ことに注意してください。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ファイルアクセスプロトコル。
1つのファイルから、または1つのファイルに向けて読むことができます。
例えば ‘ffmpeg’ でファイル ‘input.mpeg’ から読むには、次のコマンドを 使ってください:
ffmpeg -i file:input.mpeg output.mpeg |
ff* ツールは既定ではこのファイルプロトコルを使います。 すなわち "FILE.mpeg" という名前で指定されたリソースは URL "file:FILE.mpeg" であるかのように解釈されます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Gopher プロトコル。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
HTTP (ハイパーテキストトランスファープロトコル)。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
TCP 越しの MMS (マイクロソフトメディアサーバー)プロトコル。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
HTTP 越しの MMS (マイクロソフトメディアサーバー)プロトコル。
要求される構文は:
mmsh://server[:port][/app][/playpath] |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
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] | [ ? ] |
リアルタイムメッセージングプロトコル。
リアルタイムメッセージングプロトコル(RTMP)は TCP/IP ネットワーク越しの マルチメディアコンテントのストリーミングに用いられます。
必要となる構文は:
rtmp://server[:port][/app][/playpath] |
受け取るパラメータは以下の通りです:
RTMP サーバーのアドレスです。
利用される TCP ポートの番号です(既定では1935です)。
アクセスするアプリケーションの名前です。たいていの場合 RTMP サーバー にそのアプリケーションがインストールされているパスになります。 (例えば ‘/ondemand/’、‘/flash/live/’、など)。
app で指定されうアプリケーションから参照され再生される リソースのパスまたは名前です。"mp4:"が先頭につくかもしれません。
例えば ‘ffplay’ で RTMP サーバー "myserver" からアプリケーション "vod" で "sample" という名前のマルチメディアリソースを読むには:
ffplay rtmp://myserver/vod/sample |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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つで、 server、port、app および 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] | [ ? ] |
リアルタイムプロトコル。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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 を使います。
下位トランスポートプロトコルに(RTSP コントロールチャンネル内で交互にした) TCP を使います。
下位トランスポートプロトコルに UDP マルチキャストを使います。
下位トランスポートプロトコルに http トンネリングを使います。これは 受動的なプロキシに対して便利です。
複数の下位トランスポートプロトコルを指定することが許されており、その場合
一度に1つだけ試されます(1つの設定に失敗したら、次のものが試されます)。
muxer については、tcp
と udp
のみがサポートされています。
UDP 越しにデータを受け取る際に、demuxer は受け取ったパケットを並べ直そうと
します(これらが順番になっていない、もしくは全体的にパケットが失われている
かもしれないからです)。これを有効にするためには、 AVFormatContext の
max_delay
フィールドで最大の遅延を指定しなければなりません。
‘ffplay’ でマルチビットレート Real-RTSP ストリームを観る際、
表示するストリームとして -vst
n および -ast
n で
映像と音声それぞれを選択できます。そして作動中に v
や a
を押すことで切り替えることが可能です。
コマンドラインの例:
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] | [ ? ] |
セッションアナウンスメントプロトコル(RFC 2974)。これは技術的には libavformat のプロトコルハンドラではなく、muxer および demuxer です。 分離されたポート上で定期的にストリームに対して SDP を通知することによって、 RTP ストリームのシグナリングのために使用されます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
muxer に渡される SAP url のための構文は次の通りです:
sap://destination[:port][?options] |
RTP パケットはポート port の destination に対して送信され、
ポートが指定されていない場合にはポート 5004 に対して送信されます。
options は &
で区切られたリストです。以下のオプションを
サポートしています:
通知を送りつける送信先の IP アドレスを指定する。 省略されていれば、通知は共通して利用されている SAP アナウンスメント マルチキャストアドレス 224.2.127.254 (sap.mcast.net)に、もしくは destination が IPv6 アドレスならば ff0e::2:7ffe に送信される。
通知を送りつけるポートを指定する、指定されなければ 既定で 9875。
通知と RTP パケットのための time to live 値を指定する、 既定では 255。
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] | [ ? ] |
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] | [ ? ] |
トランスミッションコントロールプロトコル。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ユーザーデータグラムプロトコル。
UDP url に要する構文は:
udp://hostname:port[?options] |
options は & で区切られた key=val の形のオプションのリストを含む。 サポートされているオプションのリストは以下の通り:
UDP バッファサイズをバイト数で設定する
バインドするローカル UDP ポートを上書きする
UDP パケットのバイトサイズを設定する
UDP ソケットの再利用を明示的に有効または無効にする
time to live 値を設定する(マルチキャストについてのみ)
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] | [ ? ] |
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] | [ ? ] |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
FFmpeg ビルドを構成(configure)する際に、–disable-filters を使って 既存のフィルターをいずれも無効にすることができる。 構成の出力(configure output)にはそのビルドに含まれる音声フィルターが 表示されている。
以下は現時点で利用できる音声フィルターの説明である。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
音声ソースを変更せずに出力に渡す。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
以下は現在利用可能な音声ソースの説明である。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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] | [ ? ] |
以下は現在利用可能な音声シンクの説明である。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Null 音声シンク、入力音声に対し全く何もしない。これは主にテンプレートとして 有用であり、分析/デバッギングツールで用いるためのものである。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
FFmpeg ビルドを構成(configure)する際に、–disable-filters を使って 既存の映像フィルターをいずれも無効にすることができる。 構成の出力(configure output)にはそのビルドに含まれる映像フィルターが 表示されている。
以下は現時点で利用できる映像フィルターの説明である。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
(ほぼ)真っ黒なフレームを検出する。章の変わり目やコマーシャルを検出 するのに有用となりうる。出力される行は検出されたフレームのフレーム数、 黒のパーセンテージ、(分かるなら)ファイルでの位置もしくは-1、および 秒単位でのタイムスタンプからなる。
出力される行を表示するには、ログレベルを少なくとも AV_LOG_INFO に 設定する必要がある。
このフィルターは次の構文を受け取る:
blackframe[=amount:[threshold]] |
amount は閾値以下にならなくてはならないピクセルのパーセンテージであり、 既定では98になる。
threshold はピクセルの値がこれを下回ると黒と見なされる閾値であり、 既定では32になる。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
入力映像を out_w:out_h:x:y に切り取る。
このパラメータは以下の定数を含む表現である:
e(オイラー数)、pi(ギリシャ文字のパイ)、PHI(黄金比)それぞれ対応する数学的近似値
x および y についての計算された値。これらは各新しいフレームで 評価される。
入力の幅および高さ
in_w および in_h と同じ
出力の(切り取られた)幅および高さ
out_w および out_h と同じ
0から始まる入力フレームの数
入力フレームのファイルの中での位置、不明なら NAN
秒で表されたタイムスタンプ、入力タイムスタンプが不明なら NAN
パラメータ out_w および out_h は出力の(切り取られた)映像の 幅および高さのための表現を指定する。これらはフィルターのコンフィグレーション の時点で評価される。
out_w の既定値は "in_w" であり、out_h の既定値は "in_h" である。
out_w のための表現は out_h の値に依存することがあり、 out_h のための表現は out_w に依存することがあるが、 x および y の値には依存しないはずである。なぜなら x および y は out_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] | [ ? ] |
切り取るサイズを自動検出する。
切り取りに必要となるパラメータを計算し、ロギングのシステムを通じて推奨される パラメータを表示する。検出された寸法は入力映像の黒でない領域に対応する。
これは次の構文を受け取る:
cropdetect[=limit[:round[:reset]]] |
閾値、何もない(0)から全て(255)までを自由に選択することができる。 既定では24。
幅/高さが分割されるべき値、既定では16。 オフセットは自動的に映像の中心に調節される。 偶数の寸法のみ(4:2:2 の映像で必要となる)を得るには2を用いること。 たいていの映像コーデックでエンコーディングする際には16が最良。
以前に検出された最大の映像領域をリセットし、現在の最適な 切り取り領域を検出し始めるのにどれだけのフレームを 過ぎてからにするかを決めるカウンター。 既定では0。
これはチャンネルのロゴが映像領域を歪ませる際に有用である。 0はリセットせず再生中に出てきた最大の領域を返すように 指示する。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
入力イメージに色付けされた箱を描く。
これは次の構文を受け取る:
drawbox=x:y:width:height:color |
箱の左上隅を指定する。既定では0。
箱の幅および高さを指定する。0なら入力の幅および高さとして解釈される。 既定では0。
描く箱の色を指定する。(大文字小文字を区別しない)色の名前もしくは 列 0xRRGGBB[AA] をとりうる。
いくつかの例は以下の通り:
# 入力画像の縁に沿って黒い箱を描く drawbox # 50%の透明度の赤で箱を描く drawbox=10:20:200:60:red@0.5" |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
入力イメージをバッファし、かつ要求された時にそれらを送る。
このフィルターは主に libavfilter フレームワークによって自動的に 挿入される際に有用である。
このフィルターはパラメータを受け取らない。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
入力映像を指定されたピクセル形式の1つに変換する。 Libavfilter は次のフィルターの入力にサポートされているうちの1つを 選択しようと試みる。
このフィルターは、例えば "yuv420p:monow:rgb24" のように、":" によって 区切られたピクセル形式名のリストを引数として受け取る。
次のコマンド:
./ffmpeg -i in.avi -vf "format=yuv420p" out.avi |
は入力映像を形式 "yuv420p" に変換する。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
入力映像に 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/’。
param1、param2、...、paramN はその frei0r 効果に対する パラメータを指定する。
frei0r 効果のパラメータはブール値(その値は "y" および "n" で指定される)、
倍精度浮動小数点数、色(R/G/B という構文で指定される、ただし
R、G、および B は 0.0 から 1.0 までの浮動小数点数、または
av_parse_color()
の色の記述によって指定される)、位置(X/Y
という構文で指定される、ただし X と Y は浮動小数点数)、および
文字列を取ることができる。
パラメータの数と種類はロードされる効果に依存する。効果のパラメータが 指定されていなければ、既定値が設定される。
以下はいくつかの例:
# 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] | [ ? ] |
入力映像を水平方向に反転させる。
例えば ‘ffmpeg’ で入力の映像を水平方向に反転させるには:
ffmpeg -i in.avi -vf "hflip" out.avi |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
次のフィルターの入力に指定されたピクセル形式のいずれも使わないように libavfilter に強制する。
このフィルターは、例えば "yuv420p:monow:rgb24" のように、":" で区切られた ピクセル形式名のリストを引数として受け取る。
次のコマンド:
./ffmpeg -i in.avi -vf "noformat=yuv420p, vflip" out.avi |
は、"yuv420p" と異なる形式のどれかを使って vflip フィルターに 入力するように libavfilter に強制する。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
映像ソースを変更せずに出力に渡す。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
libopencv を使ってスムーズ変換をほどこす。
このフィルターを有効にするには libopencv ライブラリとヘッダをインストールし FFmpeg を –enable-libopencv で configure すること。
このフィルターは以下のパラメータを受け取る: type:param1:param2:param3:param4
type はほどこすスムーズフィルターの種類で、次の値のいずれかをとる: "blur"、"blur_no_scale"、"median"、"gaussian"、"bilateral"。 既定値は "gaussian"。
param1、param2、param3、および param4 は スムーズの種類に応じてその意味が変わるパラメータである。 param1 と param2 は正の整数値または0を受け取り、param3 と param4 は浮動小数点数値を受け取る。
param1 に対する既定値は3で、その他のパラメータについての既定値は 0である。
これらのパラメータは libopencv 関数 cvSmooth
に割り当てられている
パラメータに対応する。このパラメータの正確な意味については公式の libopencv
文書を参照すること:
http://opencv.willowgarage.com/documentation/c/image_filtering.html
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
映像を別の映像の上に重ねる。
これは2つの入力と1つの出力をとる。最初の入力は"主な"映像で、その上に 2番目の入力が重ねられる。
受け取るパラメータは: x:y。
x は主な映像の上に重ねられる映像の x 座標。 y は y 座標。これらのパラメータは下記のパラメータを含むような 式である:
主な入力の幅と高さ
main_w および main_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] | [ ? ] |
入力画像に対してパディングを加え、元の入力を与えられた座標 x, y に配置する。
次のようなパラメータを受け取る: width:height:x:y:color。
受け取るパラメータの説明は以下の通り。
パディングを加えた出力画像のサイズを指定する。width または height としての値が0の場合、対応する入力サイズが出力として 用いられる。
width および height の既定値は0。
出力画像の左上隅を基準にして、パディング領域における入力画像を 配置するのオフセットを指定する。
x および y の既定値は0。
パディング領域の色を指定する。色の名前もしくは 0xRRGGBB[AA] 数列を とりうる。
color の既定値は "black"。
例えば:
# パディングを色 "violet" にして入力映像に追加する。 # 出力映像のサイズは640x480で、 # 行0、列40に入力映像の左上隅が配置される。 pad=640:480:0:40:violet |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ピクセル形式記述子テストフィルター、主に内部的なテストに有用。 出力映像は入力映像に等しくなるはずである。
例えば:
format=monow, pixdesctest |
として monowhite ピクセル形式記述子定義をテストするために用いることができる。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
入力映像を width:height に拡縮し、かつ/または画像形式を変換する。
例えば次のコマンド:
./ffmpeg -i in.avi -vf "scale=200:100" out.avi |
は入力映像を200x100のサイズに拡縮する。
入力画像形式が次のフィルターが要求しているものと異なるなら、 この scale フィルターは入力を要求されている形式に変換する。
width または height の値が0なら、出力には対応する 入力サイズが用いられる。
width または height の値が-1なら、それぞれの出力サイズについて、 この scale フィルターは入力画像の縦横比を維持する値を用いる。
width と height の既定の値は0。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
入力映像フレームの PTS (プレゼンテーションタイムスタンプ)を変更する。
eval API を通じて評価される式を入力として受け取ります。以下の定数を 含めることができる。
入力のプレゼンテーションタイムスタンプ
ギリシャ文字のパイ
黄金比
自然対数の底
0から始まる入力フレームのカウント
最初の映像フレームの PTS
現在のフレームがインターレースされているかどうか
フレームのファイルでの本来の位置、現在のフレームについて定義されていなければ 不定。
直前の入力 PTS
直前の出力 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] | [ ? ] |
出力フレームのタイムスタンプに用いる 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] | [ ? ] |
入力映像のイメージを複数のスライスとして次の映像フィルターに 渡す。
./ffmpeg -i in.avi -vf "slicify=32" out.avi |
このフィルターはスライスの高さをパラメーターとして受け取る。 このパラメーターが指定されていなければ、16という既定値を使う。
フィルターの連鎖の最初にこれを追加すると、メモリーキャッシュを より良く使ってフィルタリングがより速くなる。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
入力映像で行を列で置き換え、場合によっては反転させる。
これは整数値を表す1つのパラメータを受け取り、それは以下の値を 仮定します:
90°反時計回りに回転し、かつ垂直に反転する(既定値)、つまり:
L.R L.l . . -> . . l.r R.r |
90°時計回りに回転する、つまり:
L.R l.L . . -> . . l.r r.R |
90°反時計回りに回転する、つまり:
L.R R.r . . -> . . l.r L.l |
90°時計回りに回転し、かつ垂直に反転する、つまり:
L.R r.R . . -> . . l.r l.L |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
入力映像をシャープにする、またはぼやけさせる。次のパラメータを受けつける:
名前 | 説明 | 最小値 | 最大値 | 既定値 |
---|---|---|---|---|
luma_msize_x | Luma matrix 水平サイズ | 3 | 13 | 5 |
luma_msize_y | Luma matrix 垂直サイズ | 3 | 13 | 5 |
luma_amount | Luma effect 強度 | -2.0 | 5.0 | 1.0 |
chroma_msize_x | Chroma matrix 水平サイズ | 3 | 13 | 0 |
chroma_msize_y | Chroma matrix 垂直サイズ | 3 | 13 | 0 |
chroma_amount | Chroma effect 強度 | -2.0 | 5.0 | 0.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
# |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
入力映像を垂直に反転する。
./ffmpeg -i in.avi -vf "vflip" out.avi |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
yadif は "yet another deinterlacing filter" である。
これは次の構文を受け取る:
yadif=[mode[:parity]] |
採用するインターレースモードを指定する、下記の値の1つを受け取る。
0: 各フレームに対し1つフレームを出力。
1: 各フィールドについて1つフレームを出力。
2: 0と同じだが空間的インターレースチェックをスキップする。
3: 1 と同じだが空間的インターレースチェックをスキップする。
既定値は0。
インターレースされた映像について下部フィールドが先なら0、 上部フィールドが先なら1。自動検出を有効にするなら-1。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
以下が現在利用できる映像ソースの説明です。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
映像フレームをバッファし、かつそれらをフィルターチェーンで利用できるようにします。
このソースは主にプログラミング用に、特に ‘libavfilter/vsrc_buffer.h’ で定義されているインターフェイスを通じて使うことを意図されています。
これは次のパラメータを受け取ります: 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] | [ ? ] |
一様に色付けされた入力を提供します。
これは次のようなパラメータを受け取ります: color:frame_size:frame_rate
受け取るパラメータの説明は以下の通りです。
ソースの色を指定します。色の名前(大文字小文字を区別しないマッチ)か アルファ値の指定を最後につけることができる 0xRRGGBB[AA] の形の列です。 既定の値は"black"です。
ソースとなる映像のサイズを指定します。widthxheigth という 形の文字列か、サイズの略称となる名前になります。 既定の値は"320x240"です。
ソースとなる映像のフレームレートを指定します。秒間に生成されるフレーム数 です。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] | [ ? ] |
Null 映像ソースは画像を一切返しません。主にテンプレートとして有用で、 分析やデバッギングのツールで使われるものです。
省略可能なパラメータとして width:height:timebase という形の文字列を受け取ります。
width と height は設定されるソースの大きさを指定します。 width と height の既定値は(CIF サイズ形式に対応して) それぞれ352と288です。
timebase は timebase を表す算術表現を指定します。この表現には 定数 "PI"、"E"、"PHI"、"AVTB"(既定の timebase)を含めることができ、 既定では値 "AVTB" になります。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
以下が現在利用可能な映像シンクの説明です。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Null 映像シンクは、入力映像について全く何もしません。主にテンプレートとして 有用であり、分析やデバッギングのツールで使われるものです。
[Top] | [Contents] | [Index] | [ ? ] |
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.