2014-11-23 2 views
0

Я пытаюсь создать сценарий какого-то типа, который будет конвертировать любые видеофайлы, которые он обнаруживает в папке (также сканирующие подпапки), в .avi-файл с тем же именем, в том же месте , затем удалите исходный файл. Я не очень хорошо использовал cmd для программирования/сценариев, поэтому я натыкаюсь на то, что, как я подозреваю, довольно простые синтаксические проблемы.Создание рекурсивного преобразователя ffmpeg

Если кто-то знаком с кодировкой и ffmpeg, пожалуйста, укажите, являются ли варианты кодировки неправильными (я наткнулся в темноте в данный момент).

Использование this thread, я работаю с чем-то в настоящее время напоминающее:

dir/b/s *.(mkv|mp4|m4v|wmv) >listing.txt #Make a list of all the files with certain extensions, for reading. 
for /F "delims=;" %%F in (listing.txt) do ffmpeg.exe -i "%%F" -c:v libx264 -preset slow -crf 20 -c:a libvo_aacenc -b:a 128k "%%~na.avi" 
#Then to delete original files 
for /F "delims=;" %%F in (listing.txt) do del %%F 
del listing.txt 

Первый вопрос у меня есть, что я хотел бы, чтобы иметь возможность заполнить список всех распространенных типов видео. Я предполагаю, что cmd имеет некоторый синтаксис, похожий на соответствие строки perl, например. A(B|C) будет соответствовать AB и AC, что я мог бы имитировать для соответствия любому расширению видеофайла? (Я написал это в приведенном выше коде, чтобы проиллюстрировать этот момент, но я знаю, что он не работает).

Надеюсь, этого достаточно, чтобы попытаться проиллюстрировать, что я пытаюсь.

+0

Почему AVI, а не более современный формат контейнера, такой как MP4, который обычно используется для видео H.264? Кроме того, собственный кодировщик FFmpeg AAC ('-c: aac -strict experimental') может звучать лучше на 128k, чем' libvo_aacenc'. – LordNeckbeard

+0

Чисто по той причине, что я хочу надежно передавать эти файлы на другое устройство (а именно X360), и он не воспроизводит все варианты кодирования mp4, но делает avi - по крайней мере, в моем опыте в прошлом. –

ответ

0

реж * .ext1 * .ext2

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

Dir "%userprofile%\documents\*.avi" "%userprofile%\documents\*.mp4" /a /s /b 

легче, чем For является команда forfiles. Но не подходит для нескольких типов файлов.

Она также может быть одна линия

@for /f "usebackq delims=" %A in (`dir "%Userprofile%\documents\*.avi" "%Userprofile%\documents\*.mp4" /a /s /b`) do @echo %A 

Используйте %% А в пакетный файл и% А если ввести команду.

+0

Отлично, чем вы, что в значительной степени достигает того, что я был после. Не могли бы вы узнать, почему я ошибся, говоря, что «%% F был неожиданным в это время»? –

+0

Потому что я использую %% A, и вы используете %% F. Убедитесь, что все %% F являются %% A или наоборот. –

+0

Да, ваш последний момент получил его, я тестировал, вводя непосредственно в подсказку, и он жаловался на double%. –

Смежные вопросы