26

FFmpegには、ドキュメントに「ビデオソース」としてリストされているビデオ生成フィルターがいくつかあります。

  • cellauto
  • mptestsrc
  • fei0r_src
  • 生活
  • nullsrc、rgbtestsrc、testsrc

これらはオーバーレイなどの他のフィルターで使用するのに最適ですが、入力ビデオなしでこれらのビデオソースの1つだけで構成されるムービーを生成する方法はありますか?

何かのようなもの:

ffmpeg -vf color=red" red_movie.mp4

それがでエラーになることを除いてAt least one input file must be specified

4

2 に答える 2

54

最近のバージョンでは、オプションが少し変更されているようです。

フィルタ入力ソースを使用するには、次のことを行う必要があります。

  1. 以下を使用して、入力形式をlibavfilter仮想デバイスに設定します。-f lavfi
  2. -iフラグを使用してフィルター入力ソースを設定します(ではありません-vf
  3. 次のように、引数を完全なキーと値のペアとして提供します。color=color=red

これはffplay、フィルターグラフをテストする場合にも 機能します。ffplay -f lavfi -i color

-t 30これらの例では、30秒の出力のみが必要であることを指定するために追加しました。

赤色)

ffmpeg -f lavfi -i color=color=red -t 30 red.mp4
                     ^     ^    ^
                     |     |    |
                   filter key value

キーは省略形に短縮できます。-i color=c=red

SMPTEカラーバーパターン

ffmpeg -f lavfi -i smptebars -t 30 smpte.mp4

テストソースパターン

ffmpeg -f lavfi -i testsrc -t 30 -pix_fmt yuv420p testsrc.mp4

これを確実に再生するには、次のようにピクセル形式を設定する必要があります。-pix_fmt yuv420p

デフォルトでは、ffmpegはyuv444p(x264、High 4:4:4 Predictive)を使用しますが、一部のプレーヤーはまだデコードできません

たとえば、作成するビデオはVLC 2.0.7をクラッシュさせ、QuickTime Player 10.2(Mac OS X 10.8.4)ではわずか30秒の黒です。

テストソースの詳細については、こちらをご覧ください。

RGBテストソース

ffmpeg -f lavfi -i rgbtestsrc -pix_fmt yuv420p -t 30 rgbtestsrc.mp4

最後の例と同様に、図のようにピクセル形式をyuv420pに設定しない限り、これは機能しない可能性があります。

後世のために、これが私が使用しているバージョンです:

ffmpeg version 1.2.1
libavutil      52. 18.100 / 52. 18.100
libavcodec     54. 92.100 / 54. 92.100
libavformat    54. 63.104 / 54. 63.104
libavdevice    54.  3.103 / 54.  3.103
libavfilter     3. 42.103 /  3. 42.103
libswscale      2.  2.100 /  2.  2.100
libswresample   0. 17.102 /  0. 17.102
libpostproc    52.  2.100 / 52.  2.100
于 2013-08-09T06:55:43.710 に答える
20

ドキュメントでほのめかされていますが、これは明確に説明されていません。私はそれを理解してうれしかったので、私は共有したいと思いました。

重要なのは、特別な形式を使用することですlavfi

Libavfilter入力仮想デバイス。

この入力デバイスは、libavfilterフィルターグラフの開いている出力パッドからデータを読み取ります。

フィルタグラフのオープン出力ごとに、入力デバイスは、生成された出力にマップされる対応するストリームを作成します。現在、ビデオデータのみがサポートされています。フィルタグラフは、オプション「グラフ」を使用して指定します。

基本的に、lavfiformatを使用すると、入力はファイル名ではなくビデオフィルターとして扱われます。

したがって、赤だけで構成されるムービーを作成するには、コマンドは次のとおりです。

ffmpeg -f lavfi -i color=red -frames:v 200 red_movie.mp4

(フィルターには通常、固定された「エンド」ポイントがなく、いつまでもビデオを生成し続けるため、フレーム数を指定するか、入力を制限することが重要です。)

于 2012-07-24T22:53:27.373 に答える