Пакетне перетворення * .avi файлів за допомогою ffmpeg


13

Я намагаюся конвертувати 20+ .avi файли в пакет, використовуючи ffmpeg.

У мене таке

@echo off.

for file in *.avi
do
   ffmpeg -i "$file" -s 640x480 -vcodec msmpeg4v2 "'basename "$file" .avi'.mpg';
done

у моєму файлі .bat, але він не працює. Як змусити його працювати в ОС Windows. О, і так, всі файли знаходяться в одній папці.

Я отримую повідомлення про помилку:

Файл наразі був несподіваним


А що саме в цьому не працює?
slhck

Якщо ви можете вказати мені, як отримати повідомлення про помилку, оскільки cmd зникає дуже швидко, я зможу сказати вам, з чим у мене проблеми.
Дарій

Ви повинні мати можливість просто відкрити командне вікно раніше ( Пуск »Виконати…»cmd ), а потім запустити пакетний файл, використовуючи повний шлях звідти. Що ви насправді хочете зробити з відео? Що це за відео? Вам просто потрібно перемістити їх у контейнер MPG? Або вам потрібно змінити їх розмір? Або вам конкретно потрібен msmpeg4v2кодек?
slhck

Файли знімаються з відеореєстратора та мають відеокліпи понад 5 Гб за 5 хвилин. Так, програмне забезпечення DVR є жалючим при стисненні. Кодек працює, оскільки для нього потрібні 1 Гб файли приблизно 7 МБ файлів, які є більш керованими. І при спробі запустити цю партію я отримую повідомлення "Файл був несподіваний на цей час".
Дарій

Я бачу. Якщо вас не цікавить отриманий відеокодек та контейнер, я б запропонував використовувати x264 як кодер, що призводить до набагато кращої якості, ніж MPEG-4. Команда буде чимось на зразок, ffmpeg -i input.avi -c:v libx264 -crf 23 -s 640x480 output.mp4коли значення CRF встановлює якість (менше краще, більше гірше, здорові значення від 19 до 24). Дивіться також: Перетворення старих відео в менші розміри та Які параметри слід дивитись, щоб зменшити розмір файлу .MOV?
slhck

Відповіді:


26

Ваш пакетний файл не в правильному форматі для сценарію bat Windows. Натомість ваш сценарій виглядає так, як він був призначений для Linux. Вам потрібно буде змінити сценарій, щоб використовувати цикл for, який підтримується оболонкою Windows.

Нижче наведено приклад того, як виконати це завдання, використовуючи вікно для циклу. Просто помістіть нижній рядок у свій пакетний файл і перемістіть скрипт у ту саму директорію, що й файли avi, а потім запустіть його.

for %%A IN (*.avi) DO ffmpeg -i "%%A" "%%A.mpg"

З цим я отримую[NULL @ 000000000037e360] Unable to find a suitable output format for 'outputfile.avi.mpg;' outputfile.avi.mpg:: Invalid argument
Дарія

1
Потрібно прибрати цю напівколонку з кінця рядка
Бретт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.