FFMPEG одновременно считывает входные данные из текстового файла и фильтрует сложные из файла

#file #input #filter #ffmpeg

#файл #ввод #Фильтр #ffmpeg

Вопрос:

Я пытаюсь отправить входные медиафайлы из текстового файла вместо встроенного аргумента и фильтровать комплекс также из текстового файла.

Вот что я сделал.

  1. Я создал текстовый файл и поместил все входные данные в текстовый файл, например,

     file 0.mp3
    file 1.mp3
    file 2.mp3
    file 3.mp3
    file 4.mp3
    file 5.mp3
    file 6.mp3
    file 7.mp3
    file 8.mp3
    file 9.mp3
    
    ...
      
  2. Я также создал другой текстовый файл с именем filter.txt и ввел в него все сложные правила фильтрации.

     [0]adelay=0|0,volume=207[0a];[1]adelay=111400|111400,volume=206[1a];[2]adelay=116300|116300,volume=205[2a];[3]adelay=122300|122300,volume=204[3a];[4]adelay=125600|125600,volume=203[4a];[5]adelay=128000|128000,volume=202[5a];[6]adelay=137800|137800,volume=201[6a];[7]adelay=149100|149100,volume=200[7a];[8]adelay=150400|150400,volume=199[8a];[9]adelay=151900|151900,volume=198[9a];[10]adelay=153300|153300,volume=197[10a];[11]adelay=190300|190300,volume=196[11a];[12]adelay=210000|210000,volume=195[12a];[13]adelay=222500|222500,volume=194[13a];[14]adelay=224400|224400,volume=193[14a];[15]adelay=226900|226900,volume=192[15a];[16]adelay=228700|228700,volume=191[16a];[17]adelay=236100|236100,volume=190[17a];[18]adelay=240000|240000,volume=189[18a];[19]adelay=251200|251200,volume=188[19a];[20]adelay=253400|253400,volume=187[20a];[21]adelay=256500|256500,volume=186[21a];[22]adelay=258800|258800,volume=185[22a];[23]adelay=263700|263700,volume=184[23a];[24]adelay=267500|267500,volume=183[24a];[25]adelay=272000|272000,volume=182[25a];[26]adelay=273500|273500,volume=181[26a];[27]adelay=276600|276600,volume=180[27a];[28]adelay=27920 ....
      

Оба этих файла в качестве входных данных по отдельности работают нормально. Однако, если я пытаюсь передать их оба вместе, FFMPEG жалуется.

 ffmpeg -y -f concat -i tmp/input.txt -filter_complex_script tmp/filter.txt -map "[a]" tmp/out.mp3
  

Я получаю эту ошибку:

 Invalid file index 1 in filtergraph description 
  

Любая помощь действительно ценится.

Комментарии:

1. Если ваш ffmpeg достаточно новый, вы можете изменить его adelay=273500|273500 на adelay=27.35:all=true .

Ответ №1:

Демультиплексор concat создает единый объединенный ввод, поэтому при фильтрации вы не сможете ссылаться на отдельные файлы, как при обычных вводах.

Вам нужно будет перечислить входные данные по отдельности ( ffmpeg -i 0.mp3 -i 1.mp3 ... ).