ENAMETOOLONG nodeJs ffmpeg-fluent

时间:2016-05-30 14:52:56

标签: javascript node.js fluent-ffmpeg

我目前正在使用ffmpeg-fluent来合并视频文件。 (https://github.com/fluent-ffmpeg/node-fluent-ffmpeg

不幸的是,我放置合并文件的循环在第1000个文件失败,但有以下异常:

/ nodes_modules / fluent-ffmpeg中的错误ENAMETOOLONG。

我的问题是:

如何使用多个无限字符编写命令来绕过此错误?

1 个答案:

答案 0 :(得分: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错误的人会有所帮助:-)