入力として画像ファイルを使用するffmpeg入力オプションの説明


34

画像がいくつかありますが、ffmpegでアニメーションGIFを作成したいと思います。画像の名前は次のとおりです。

837_1.png
838_1.png
...

ffmpegの-iコマンドラインオプションを理解しようとしていますが、いくつかの問題に対してクラッシュしています。

何も指定しないと、ファイルを置き換えるように求められます。

ffmpeg -i * -vcodec libx264 out.mp4

ffmpeg version 1.2.1 Copyright (c) 2000-2013 the FFmpeg developers
  built on Jul 26 2013 20:18:03 with Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/1.2.1 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=cc --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid
  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
Input #0, image2, from '358_1.png':
  Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: png, rgb24, 550x550, 25 tbr, 25 tbn, 25 tbc
File '359_1.png' already exists. Overwrite ? [y/N]

そして、インターネットで最も使用されている形式(%d)の1つを使用しようとすると、ffmpegはファイルを見つけられません。

fmpeg -i '%3d_1.png' -vcodec libx264 out.mp4

ffmpeg version 1.2.1 Copyright (c) 2000-2013 the FFmpeg developers
  built on Jul 26 2013 20:18:03 with Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/1.2.1 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=cc --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid
  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
[image2 @ 0x7f963a006600] Could find no file with with path '%3d_1.png' and index in the range 0-4
%3d_1.png: No such file or directory

だから..質問は、ffmpgで-iコマンドラインオプションを使用する方法ですか?

わかりやすくするために、Mac OSX 10.8、ffmpegバージョン1.2.1、zsh 4.3.11を使用しています。

回答:


47

さらにオプションを指定しないと、ffmpegのimage2デマルチプレクサは0で始まるシーケンスを探します。また、デフォルトの範囲5でこのインデックスを確認します(そのため、0〜4の範囲にインデックスがないと文句を言うでしょう)。ドキュメントによると 837のような任意のインデックスから開始する場合は、開始番号を設定する必要があります。

ffmpeg -start_number 837 -i '%3d_1.png' -c:v libx264 out.mp4

PNGからH.26​​4への変換の色空間

PNGファイルはRGBカラースペースを使用してピクセルを表すため、H.264への変換はYUV 4:4:4(非サブサンプリング)になります。結果のビデオは、すべてのプレーヤー、特にFFmpegベース以外のプレーヤーで再生できない場合があります。プレーヤーは黒いフレームのみを表示するか、クラッシュする可能性があります。これを修正するには、ピクセル形式をYUV 4:2:0に変更します。

ffmpeg -start_number 837 -i '%3d_1.png' -c:v libx264 -pix_fmt yuv420p out.mp4

品質を制御するには、-crfオプションを使用します。詳細については、x264エンコーディングガイドを参照してください。

*グロブが機能しない理由

*入力オプションとして使用しないでください。シェルは、表示する前に現在のディレクトリ内のすべてのファイルにffmpeg展開するため、コマンドはに展開されffmpeg -i file1 file2 … filenます。すべての入力ファイルにffmpeg-iオプションが必要なので、file2 … filen代わりに出力ファイルとして使用し、上書きします。良くない。


非常に完全な答え!また、アニメーションGIFに関するアドバイスもありますか?
nkint

アニメーションGIFの場合、ffmpegバージョン2.0以降に更新すると、視覚的な品質が大幅に向上するためです。ダウンロードページは静的へのリンクが古いffmpegのためにOS X用のビルドをしている、次を参照してください。ひどい品質の.GIFにffmpegの変換のFLV動画を
slhck

実際、+ 0..4だけでなく、8,16,32,64などもチェックします。これは、HTTP URLを使用する場合に顕著です。ただし、「ファイルが見つかりました」に相当するimage2ことを認識でき200 OKないため、検索が停止しません。
–MSalters

1
あなたの提案を実行しようとしても、私は同じことを得ています。私のファイルの名前はDSCxxxxx.jpgどこxxxxxにゼロから始まる5桁の数字(私はアンダースコアを持たないノート)があります。それでも、実行ffmpeg -r 30 -start_number 04606 -i DSC%d.jpg out.mp4した後、上記の元の投稿と同じエラーが表示されます
匿名

@jphollowedファイル名のパターンを引用符で囲みましたか?
-slhck

29

-pattern_type globオプションを指定することにより、グロビングを有効にできます。

ffmpeg -pattern_type glob -i '*.png' -vcodec libx264 out.mp4

2
はるかに良い方法:)
グスタフ

3
これだけがうまくいきました。いいえ、これを取得する方法がないxxx%d.pngxxx%3d.png'xxx%d.png'または'xxx%3d.png'事の作業
yPhil

これを試した後、同じエラーが表示されます[image2 @ 0x2552560] Could find no file with path '*.jpg' and index in the range 0-4 *.jpg: No such file or directory
匿名

パターンタイプ「glob」が選択されましたが、このlibavformatビルドではグロビングはサポートされていません[Windows ffmpegを使用] [oof、1つの答えを下にスクロールする必要があります]
Katastic Voyage

7

注:パターングロビングは、Windowsでは機能しません(Windowsでlibavfilterのグロビングがサポートされていないために、決して機能しない可能性があります)。隙間なく。

簡単なPowershellコマンドラインで名前を変更できます:

dir *.jpg | %{$x=0} {Rename-Item $_ -NewName “Base$x”; $x++ }

これはfile1.jpg file2.jpgfile10.jpgを返します。これをアルファベット順に並べ替えるとfile1.jpgfile10.jpgfile2.jpg
stib

Base $ x.jpgであってはいけませんか?現状では、あなたのものはすべて私のものの名前を変更し、ファイル拡張子を殺しました。
Katastic Voyage

5

PowerShellで名前を変更するより良い方法(順序を保持):

dir *.jpg | %{$x=0} {Rename-Item $_ -NewName "Base$($x.tostring('000000')).jpg"; $x++ }

dir常にアルファベット順にファイルをソートして返しますか?sort-objectミックスにaを追加する方が安全でしょうか?
-stib
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.