2

現在、ffmpeg-fluent を使用してビデオ ファイルをマージしています。( https://github.com/fluent-ffmpeg/node-fluent-ffmpeg )

残念ながら、マージするファイルを配置する私のループは、以下の例外で1000番目のファイルで失敗します:

/nodes_modules/fluent-ffmpeg のエラー ENAMETOOLONG。

私の質問は:

無制限の文字数でコマンドを書き込むためにこのエラーを回避するにはどうすればよいですか?

4

1 に答える 1

0

これは古い質問であり、残念ながら、問題を確実に指摘するコードはありません。しかし、通常、Windows でffmpegからENAMETOOLONGを取得すると、コマンドが長すぎます。何千ものファイルをマージすると、これは非常に自然なことのように思えます。

2020 年になってもまだ発生していますが、これを回避することはできます。ソース ファイル名 (マージ用) をテキスト ファイルに入れ、このテキスト ファイルを ffmpeg への入力として提供する必要があります。

生の ffmpeg 呼び出しは次のようになります。

ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.wav

mylist.txtは次のようになります。

file '/path/to/file1.wav'
file '/path/to/file2.wav'
file '/path/to/file3.wav'

fluent-ffmpegを使用すると、直感的ではありませんが、それでも実行可能です。

const cmd = ffmpeg();
cmd.input('mylist.txt')
   .inputOption(['-f concat', '-safe 0'])
   .output('out.wav')
   .run();

注: Windows では、リスト ファイルとリスト内のソース ファイルの絶対パスに注意してください。ほとんどの ffmpeg バージョンでは、リストのディレクトリがソース ファイルに追加され、同様の破損したパスが生成されます。

c:/ffmpeg/lists/c:/audiofiles/file1.wav

ただし、URL 形式のソース ファイルを使用すると、これを解決できます。

file 'file:c:/audiofiles/file1.wav'
file 'file:c:/audiofiles/file2.wav'
file 'file:c:/audiofiles/file3.wav'

これは、このffmpegエラーを探している人に役立つと確信しています:-)

于 2020-06-30T16:59:25.177 に答える