FFMPEG как извлечь переменное количество аудиопотоков?

Я пытаюсь сделать небольшой пакетный файл, который извлекает все аудио потоки при перетаскивании видео на него.

ffmpeg.exe -i "%1" -map 0:a? -c:a copy "%1~extracted.aac"

но это, кажется, перезаписать тот же файл для каждого аудиопотока, который он находит.

Я не хочу указывать количество звуковых дорожек, так как оно может меняться.

заранее спасибо за помощь!

5
задан MurderOfPoes
источник

1 ответов

нет прямого способа сделать это.

Существует несколько утомительный обходной путь, который опирается на тройник muxer и угадать максимальное количество звуковых потоков, которые вы можете столкнуться. Допустим, это 4.

Итак, команда

ffmpeg -i in.mp4 -c copy -map 0:a?
       -f tee
              "[select='a\:0':onfail=ignore]in-0.aac|[select='a\:1':onfail=ignore]in-1.aac|
               [select='a\:2':onfail=ignore]in-2.aac|[select='a\:3':onfail=ignore]in-3.aac"

все файлы будут созданы, но если размер равен нулю, то поток не существует. Итак, как только вы удалите все выходные данные нулевого размера, у вас будут все извлеченные потоки. FFmpeg не выбирает вывод автоматически формат, поэтому потоки должны быть AAC. Используйте последнюю версию ffmpeg, 4.0+

1
отвечен Gyan 2018-07-25 19:55:32
источник

Другие вопросы audio batch extract ffmpeg video