我目前正在使用ffmpeg-fluent来合并视频文件。 (https://github.com/fluent-ffmpeg/node-fluent-ffmpeg)
不幸的是,我放置合并文件的循环在第1000个文件失败,但有以下异常:
/ nodes_modules / fluent-ffmpeg中的错误ENAMETOOLONG。
我的问题是:
如何使用多个无限字符编写命令来绕过此错误?
答案 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错误的人会有所帮助:-)