やりたいことはタイトルの通りです。
コマンドラインを使って一枚の画像で動画を生成することは出来ていますが、
FFMpegCoreを用いてそれを再現することができていない状態です。
コマンドラインから生成する場合、オプションは
ffmpeg -loop 1 -i tmp.png -t 60 -c:v libx264 -pix_fmt yuv420p -vf "scale=-1:1080" output.mp4
上記を指定することで生成することができます。
重要?なのは、-loop
オプションを指定した後に、入力ファイルを指定することのようで、
入力ファイルを指定してから-loop
オプションを指定してもうまく動作しません。
そしてFFMpegCoreの場合最初に入力ファイルを指定するのが必要で、
そのあとに必要なオプションをするような仕組みになっています。
なので、私が調べた限りだと-i [入力ファイル]
の前にオプションを指定することが無理な作りになっているように見えます。
C#
1FFMpegArguments 2 .FromFileInput(inputPath) 3 .OutputToFile(outputPath, false, options => options 4 .WithVideoCodec(VideoCodec.LibX264) 5 .WithConstantRateFactor(21) 6 .WithAudioCodec(AudioCodec.Aac) 7 .WithVariableBitrate(4) 8 .WithVideoFilters(filterOptions => filterOptions 9 .Scale(VideoSize.Hd)) 10 .WithFastStart()) 11 .ProcessSynchronously();
上記はFFMpegCoreのGitHubから引用したのものですが、
FromFileInput(inputPath)
の部分で-i [入力ファイル]
の文字列を生成しており、
このメソッドを呼ばないと、そのあとに続くオプション指定ができないようになっています。
FFMpegArguments
を普通にインスタンス生成しようと思ったのですが、コンストラクタがprivateになっており、
FromFileInput
などの入力ファイル・ソースの指定をするstaticメソッドを呼ぶ必要があり、どうしても入力ファイルの指定が先に来てしまいます。
もしかしたら、私が調べ切れていないだけで入力ファイルの前にオプションを指定する方法があるのか、
もしくは別のオプションを組み合わせることで、一枚の画像から任意の長さの動画ファイルを生成する方法があるのか、
知っている方がいらっしゃいましたら、教えていただけると助かります。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー