#windows #batch-file #ffmpeg
#Windows #пакетный файл #ffmpeg
Вопрос:
Я использую FFMPEG для кодирования видео.
У меня есть пакетный файл, который будет кодировать файлы, которые вы помещаете в него, сохраняя исходное имя файла и копируя закодированные файлы в определенный каталог.
Я бы хотел, чтобы этот скрипт «знал» путь к файлу оригинала и копировал закодированный файл в путь относительно него, что означает: исходный файл, удаляемый из пакетного файла, находится в C:somefoldershowseasonepisodefile.mov
закодированный файл должен быть закодирован в D:differentdirectoryshowseasonepisodefile.mp4
Часть пути до show исправлена.
Это то, что у меня есть до сих пор:
@echo on
set count=0
for %%a in (%*) do (<br>
if exist %%a (
md \specificpath"%%~na"
%MYFILES%ffmpeg.exe -i "%%~a" -vcodec libx264 -preset medium -vprofile baseline -level 3.0 -b 500k -vf scale=640:-1 -acodec aac -strict -2 -ac 2 -ab 64k -ar 48000 "%%~na_500.mp4"
copy "%%~na_500.mp4" "\specificpath"%%~na"%%~na_500.mp4"
copy "%%~na_500.mp4" "\specificpath"%%~na"%%~na_500.mp4"
del "%%~na_500.mp4"
set /a count =1
) еще ( эхо пропускает несуществующий %%~a
Спасибо,
Орен
Комментарии:
1. Не связано, но обратите внимание, что
-refs
это не будет автоматически установлено,-level
если вы не используете сборку, включающую фиксацию0aac9b7
(новее, чем 13 мая 2014). В scale измените-1
-2
значение на, чтобы гарантировать, что выходная высота делится на 2 для этого кодера. Добавьте,format=yuv420p
сразу после вашего масштаба, чтобы убедиться, что в вашем выводе используется схема подвыборки цветности, совместимая с большинством проигрывателей. Возможно, вы захотите добавить-movflags faststart
. Используйте два прохода , если вы нацелены на определенный размер выходного файла или средний битрейт, которого вы хотите достичь.2. Прохладный. Спасибо @LordNeckbeard!
Ответ №1:
@ECHO OFF
SETLOCAL
SET "MYFILES=MY_files"
SET "fixed_path=u:destdir"
FOR %%a IN ("%*") DO IF EXIST "%%a" (
FOR /f "tokens=3*delims=" %%b IN ("%%~dpa") DO (
ECHO(MD "%fixed_path%%%c"
ECHO(%MYFILES%ffmpeg.exe -i "%%~a" -vcodec libx264 -preset medium -vprofile baseline -level 3.0 -b 500k -vf scale=640:-1 -acodec aac -strict -2 -ac 2 -ab 64k -ar 48000 "%%~na_500.mp4"
ECHO(copy "%%~na_500.mp4" "%fixed_path%%%c%%~na_500.mp4"
ECHO(del "%%~na_500.mp4"
)
) ELSE (ECHO(%%~a does NOT EXIST
)
GOTO :EOF
Необходимые команды MD редактируются только ECHO
для целей тестирования. После того, как вы убедились, что команды верны, измените ECHO(MD
на MD
, чтобы фактически создать каталоги. Добавить 2>nul
для подавления сообщений об ошибках (например. когда каталог уже существует)
Аналогично, команды DEL
and COPY
просто повторяются.
Я установил myfiles
константу — без сомнения, ваша будет отличаться, и я установил fixed _path
константу для удобства редактирования.
Понятия ffmpeg
не имею, верна ли команда — просто отредактировал вашу, и я озадачен тем, что вы используете две, по-видимому, идентичные copy
команды подряд, но, возможно, мои глаза обманывают…
Комментарии:
1. Спасибо! Я изменил значение в токене, и оно работает безупречно. Есть ли способ удалить несколько файлов из этого пакета? Двойная копия действительно была опечаткой… Еще раз спасибо.