Nubilius, замечания:
* Чтобы не нажимать Go, нужно добавить аргумент -s:
avi2str\MC32.exe -s avi2str\encode.scrНо прогресс виден не будет и если закрыть терминал, то программа продолжит работать.
* Нет поддержки квадратных и вертикальных видео, универсальный способ добавления чёрных полос force_original_aspect_ratio (
https://trac.ffmpeg.org/wiki/Scaling). Можно написать так для версии 10 минут:
ffmpeg\ffmpeg -i %1 -vf "scale=320:240:force_original_aspect_ratio=decrease,pad=320:240:(ow-iw)/2:(oh-ih)/2:black" -r 15 -vcodec rawvideo -acodec pcm_s16le -ar 37.8k -ac 1 RAW.AVI* Зачем-то используется древней ffmpeg, который не поддерживает force_original_aspect_ratio и медленнее в 1.75 раза.
* Чтобы ffmpeg не спрашивал о перезаписи, если RAW.avi остался после прерывания, нужно добавить флаг -y.
* Незачем дублировать программы, их лучше держать в одной папке, скрипты в другой, хотя можно сделать и универсальный, но bat-скриптами это наверно не так просто.
--------
ffmpeg поддерживает разделение на файлы, только тогда придётся генерировать текстовые файлы, это несложно через echo и можно сделать универсальный скрипт, но вы вряд ли будете.
По примеру
https://unix.stackexchange.com/a/212518 вместо этого:
ffmpeg -ss 00:00:00.00 -i %1 -t 00:08:00.00 -vcodec rawvideo -s 320x240 -filter:v "pad=iw:iw*3/4:(ow-iw)/2:(oh-ih)/2:black" -r 15 -acodec pcm_s16le -ar 37.8k -ac 1 1.AVI
ffmpeg -ss 00:08:00.01 -i %1 -t 00:08:00.00 -vcodec rawvideo -s 320x240 -filter:v "pad=iw:iw*3/4:(ow-iw)/2:(oh-ih)/2:black" -r 15 -acodec pcm_s16le -ar 37.8k -ac 1 2.AVI
ffmpeg -ss 00:16:00.01 -i %1 -t 00:08:00.00 -vcodec rawvideo -s 320x240 -filter:v "pad=iw:iw*3/4:(ow-iw)/2:(oh-ih)/2:black" -r 15 -acodec pcm_s16le -ar 37.8k -ac 1 3.AVI
ffmpeg -ss 00:24:00.01 -i %1 -t 00:08:00.00 -vcodec rawvideo -s 320x240 -filter:v "pad=iw:iw*3/4:(ow-iw)/2:(oh-ih)/2:black" -r 15 -acodec pcm_s16le -ar 37.8k -ac 1 4.AVIМожно написать так:
ffmpeg -i %1 -vcodec rawvideo -s 320x240 -filter:v "pad=iw:iw*3/4:(ow-iw)/2:(oh-ih)/2:black" -r 15 -acodec pcm_s16le -ar 37.8k -ac 1 -segment_time 00:08:00 -f segment -reset_timestamps 1 %%d.AVI%% - для batch-файла. Результат будет похожий, только лишних файлов не будет, если длина меньше 24 минут, на выходе 0.AVI, 1.AVI... .
--------
Если захотите генерировать текстовые файлы, есть красивый способ без повторения ">> 1.txt". У меня был batch-файл для сборки PSS файлов:
@echo off
for %%i in (*.m2v) do (
echo ### File %%~ni
rem Конвертирование wav > ads
ps2str encode -v -o "%%~ni_pcm.wav" "%%~ni.ads"
rem Создание mux файла
(
echo pss
echo stream video:0
echo input "%%~ni.m2v"
echo end
echo stream pcm:0
echo input "%%~ni.ads"
echo end
echo end
) > "%%~ni.mux"
rem Сборка в PSS
ps2str mux -v -o "%%~ni.mux" "%%~ni_new.pss"
rem Удаление временных файлов
del "%%~ni.ads"
del "%%~ni.mux"
echo ___
)
pause
Каждое echo добавляет новую строку. Возможно есть способ лучше.