Это старый вопрос, и, к сожалению, нет кода, точно указывающего на проблему. Но получение ENAMETOOLONG из ffmpeg в Windows обычно означает, что команда действительно слишком длинная. И объединение тысяч файлов делает это вполне естественным.
Это все еще происходит в 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 :-)
person
hypers
schedule
30.06.2020