2013-04-22 6 views
4

Я пытаюсь настроить пакетный файл Windows для преобразования нескольких файлов MP4 с использованием FFMPEG. Существует несколько файлов в нескольких подпапках, поэтому мне нужно, чтобы сценарий выполнялся в каждом файле в каждой подпапке.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 отдельно, так счастлив, что она работает - мне просто нужно получить правильные командные команды.

Заранее благодарим за любые указатели!

Приветствие

ответ

5

Попробуйте это:

@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" 
+0

Спасибо, человек, работает. Для моего собственного понимания, что делает «%% ~ fi» и «%% ~ dpni»/«%% ~ xi» на самом деле в пакетном файле? – user2306403

+1

'%% ~ f' -> полное имя (диск + путь + файл + ext),' ~ dpn' -> диск + путь + файл, '~ x' -> расширение (.MP4), для более help см. 'help for' в командной строке. – Endoro

+0

Приветствия, высоко оцененные – user2306403

0

Это окно партия (.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" 
Смежные вопросы