これは古い質問であり、残念ながら、問題を確実に指摘するコードはありません。しかし、通常、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エラーを探している人に役立つと確信しています:-)