ENAMETOOLONG nodeJs ffmpeg-fluent

В настоящее время я использую ffmpeg-fluent для объединения видео файлов. (https://github.com/fluent-ffmpeg/node-fluent-ffmpeg)

К сожалению, мой цикл, в котором я помещаю файлы для слияния, терпит неудачу в тысячном файле с исключением ниже:

Ошибка ENAMETOOLONG в / nodes_modules / fluent-ffmpeg.

У меня вопрос:

как я могу обойти эту ошибку при написании команды с неограниченным числом символов?


person Boris S.    schedule 30.05.2016    source источник
comment
Эта ошибка исходит от вашей операционной системы, а не где-либо в узле. На самом деле вы ничего не можете с этим поделать - имя файла длиннее, чем может обрабатывать ваша ОС или файловая система.   -  person Matt Rollins    schedule 30.05.2016
comment
Ok. так что ... эта ошибка добавляется в окнах. Какая операционная система с этим справляется?   -  person Boris S.    schedule 30.05.2016


Ответы (1)


Это старый вопрос, и, к сожалению, нет кода, точно указывающего на проблему. Но получение 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