FFMPEG - Пакетное преобразование подпапок
Я пытаюсь настроить пакетный файл Windows для преобразования ряда файлов MP4 с помощью FFMPEG. Есть несколько файлов в нескольких подпапках, поэтому мне нужно, чтобы скрипт выполнялся для каждого файла в каждой подпапке.
Боюсь, у меня нет большого опыта использования командных файлов, но из моего исследования я получил следующий текст команды:
FOR %%i in (*.mp4) /R DO (ffmpeg32 -i "%%~ni.mp4" -map 0:0 -map 0:1 -map 0:1 -c:v copy -c:a:0 aac -b:a 128k -ac 2 -strict -2 -cutoff 15000 -c:a:1 copy "%~ni&(2).mp4")
Сценарий в основном должен добавить аудиопоток AAC в существующий файл MP4, поэтому мне нужно изменить имя вывода, добавив (2) в конце имени файла.
Я тестировал команду ffmpeg отдельно, так что я рад, что она работает - мне просто нужно получить правильные пакетные команды.
Заранее спасибо за любые указатели!
ура
2 ответа
Попробуй это:
@echo off & setlocal
FOR /r %%i in (*.mp4) DO ffmpeg32 -i "%%~fi" -map 0:0 -map 0:1 -map 0:1 -c:v copy -c:a:0 aac -b:a 128k -ac 2 -strict -2 -cutoff 15000 -c:a:1 copy "%%~dpni(2)%%~xi"
Этот пакетный сценарий Windows (.bat) удалит аудио из файлов mp4 в подпапках (или вложенных каталогах), а затем удалит старый файл. Это замедляется командой SLEEP, потому что, по-видимому, существуют проблемы с удалением файла перед его копированием в Windows и Linux.
FOR /r %%i in (*.mp4) DO ffmpeg.exe -i "%%~fi" -vcodec copy -an "%%~dpni(2)%%~xi" && sleep 1 && del "%%~fi"
В качестве альтернативного ответа на этот вопрос я хотел бы поделиться этим легким приложением с открытым исходным кодом, которое я разработал, чтобы упростить операции пакетного кодирования ffmpeg, подобные этой, для всех типов пользователей ffmpeg.
Вам просто нужно добавить корневую папку, файлы подпапок добавляются автоматически. Затем используйте свои параметры:
-map 0:0 -map 0:1 -map 0:1 -c:v copy -c:a:0 aac -b:a 128k -ac 2 -strict -2 -cutoff 15000 -c:a:1 copy
далее ваш формат: mp4.
Старт, и все.
Доступно здесь: https://sourceforge.net/projects/ffmpeg-batch