Добавление субтитров из командной строки MP4Box

Я добавляю файл субтитров к видео с помощью MP4Box. Следующая команда отлично работает из командной строки:

c:/GPAC/MP4Box -add c:/test.m4v#audio -add c:/test.m4v#video -add c:/test_en.srt:hdlr=sbtl:lang=en:group=2:layer=-1 -new c:/test2.m4v

Однако то, что я действительно хочу сделать, это поместить команду в файл .bat. Ниже приведена моя команда в командном файле:

%1/GPAC/MP4Box -add %2/%3#audio -add %2/%3#video %4 -new %2/%3

Как видите, я пытаюсь передать "-add c:/test.m4v#video -add c:/test_en.srt:hdlr=sbtl:lang=en:group=2:layer=-1" в качестве четвертого параметр. Причина, по которой я хочу это сделать, заключается в том, что может быть добавлено много файлов субтитров:

"-добавить c:/test.m4v#video -добавить c:/test_en.srt:hdlr=sbtl:lang=en:group=2:layer=-1 -добавить c:/test.m4v#video -добавить c: /test_ja.srt:hdlr=sbtl:lang=ja:group=2:layer=-1:disabled"

поэтому я не знаю заранее, сколько команд -add должно быть, поэтому я хочу просто передать их все как один параметр. Но mp4box это не нравится.

Я не уверен, является ли это ограничением с mp4box или с параметрами пакетного файла в целом.


person irrational    schedule 23.01.2012    source источник
comment
mp4box это не нравится - не могли бы вы немного рассказать об этом? Вы получаете сообщение об ошибке?   -  person blahdiblah    schedule 24.01.2012
comment
Нет, не ошибка. Под не нравится я имел в виду, что это работало прямо из командной строки, а не из командного файла с точно такими же параметрами.   -  person irrational    schedule 24.01.2012


Ответы (3)


Я знаю, что это старая тема, но для тех, кто ищет в будущем.

Я использовал следующий подход в пакетном файле в сочетании с инструментами файлового меню, чтобы обеспечить простую функцию контекстного меню для запуска пакетного процесса:

for %%a in (*.m4v) do mp4box -add "%%~Na.eng.srt":lang=eng:layout=0x60x0x-1:group=2:hdlr="sbtl:tx3g" "%%a"
person Chris    schedule 01.12.2013

В итоге я решил это, написав/переписав пакетный файл из кода каждый раз, когда мне нужно было его запустить. Поэтому я бы создал пакетный файл со всеми моими аргументами. Запустить его. Затем удалите файл. Это сработало отлично.

person irrational    schedule 23.01.2012

Пакетные файлы в Windows причудливы и имеют ограниченную функциональность. Что вы можете сделать, так это использовать Cygwin, который позволяет вам использовать настоящую оболочку (например, Bash) в Windows. .

person Teraokay    schedule 23.06.2012