質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

FFmpeg

FFmpegは、動画と音声を交換できるフリーソフトウェアです。UNIX系OSから派生した、MS-DOSから操作するコマンドラインツールです。libavcodecやlibavformat、libswscale、libavfilterなどを含みます。ライセンスは、コンパイルの際のオプションによりLGPLもしくはGPLに決定されます。対応コーデックや使用できるオプションが多く、幅広く利用されています。

Q&A

解決済

1回答

2837閲覧

FFMpegCoreを用いて、一枚の画像から任意の長さの動画を生成したい。

tuyudaku

総合スコア75

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

FFmpeg

FFmpegは、動画と音声を交換できるフリーソフトウェアです。UNIX系OSから派生した、MS-DOSから操作するコマンドラインツールです。libavcodecやlibavformat、libswscale、libavfilterなどを含みます。ライセンスは、コンパイルの際のオプションによりLGPLもしくはGPLに決定されます。対応コーデックや使用できるオプションが多く、幅広く利用されています。

1グッド

0クリップ

投稿2021/08/10 08:07

やりたいことはタイトルの通りです。
コマンドラインを使って一枚の画像で動画を生成することは出来ていますが、
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メソッドを呼ぶ必要があり、どうしても入力ファイルの指定が先に来てしまいます。

もしかしたら、私が調べ切れていないだけで入力ファイルの前にオプションを指定する方法があるのか、
もしくは別のオプションを組み合わせることで、一枚の画像から任意の長さの動画ファイルを生成する方法があるのか、
知っている方がいらっしゃいましたら、教えていただけると助かります。

よろしくお願いいたします。

TN8001👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/08/10 09:52

待てるならgithubに要望投げる、ソース弄って対応出来そうならソースを修正する方が早いと思います。
guest

回答1

0

ベストアンサー

当該リポジトリでloopで検索したところこれがありました。
Allow to create empty arguments by CriggerMarg · Pull Request #196 · rosenbjerg/FFMpegCore

OutputToFileと同様にFromFileInputにも、オプション追加用のActionがあるようです。

FFMpegCore/FFMpegArguments#FromFileInput
FFMpegCore/FFMpegArguments#OutputToFile

ということでこうなるんじゃないでしょうか?(実行までしていないのでほんとにできるかは未確認)

cs

1FFMpegArguments 2 .FromFileInput(inputPath, true, options => options.Loop(1)) 3 .OutputToFile(outputPath, false, options => options 4 // 以下省略

投稿2021/08/10 09:14

編集2024/08/31 15:37
TN8001

総合スコア9862

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tuyudaku

2021/08/10 11:15

>OutputToFileと同様にFromFileInputにも、オプション追加用のActionがあるようです。 全然気づきませんでした...! 試してみたところうまく動作させることができました! わざわざリポジトリを確認してソースまで確認していただきとても助かりました。 親切にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問