Статьи
Главная » Статьи » Кодирование/конвертация видео - инструкции/уроки » Инструкции/уроки

| Добавил: Koks (26.03.2013) |

Инструкция для пакетной обработки файлов в mkvmerge с помощью пакетных CMD/BAT скриптов

Данный материал составлен для бесплатного ознакомления, любое его копирование в каких-либо целях запрещено и является нарушением авторских прав. Авторство принадлежит сайту minisite.3dn.ru (minisite.gq), так что в случае обновления или дополнения инструкции, актуальная версия будет всегда только на minisite.

 

Инструкция написана на основе mkvmerge 6.0.0, подойдет и к другим версиям(новым/старым), если не были внесены серьезные изменения в консольные команды (код легко сверяется в проге, да и инструкция написана так что всегда можно сделать новый скрипт с нуля).


Могут быть внесены изменения и дополнения.

Т.к. инструкция еще допиливается до ума, могут быть мелкие несостыковки в тексте/оформлении/названиях.

Важное примечание от 18.08.15. Инструкция будет полностью перепиливаться и улучшаться, потом) (в частности будет переход с многострочных на более простые и короткие однострочные скрипты).

ps. также в будущем скорее всего допилю и выложу програмку для упрощения ряда махинаций с батниками) (для скриптов mkvmerge и eac3to)

Последнее обновление: 18.05.13


С основами вы можете ознакомиться здесь:

Пакетная обработка файлов с помощью CMD/BAT скриптов

тем более если что то не понятно или же не описано в данной статье. 

 

Текста не мало, не пугайтесь) просто расписано подробно.

Задача – автоматизировать монотонные однотипные операции, проводимые через mkvmerge = создать пакетную обработку файлов, т.е. когда нужно делать абсолютно одно и тоже много раз, а делать это вручную не хочется) т.к. долго, неудобно и муторно.

Решение – создание CMD/BAT скриптов чтоб использовать консольный mkvmerge. Альтернативы лучше нет, а если найдете, флаг вам в руки) Итак, нам понадобится собственно сам mkvmerge и любой текстовый редактор-блокнот, но желательно Notepad2 или еще лучше Notepad++. Также в качестве вспомогательного средства можно использовать Excel, например для сериализации - копирование строк с созданием нумерации(пригодится при обработке сериалов/аниме), если найдете альтернативу лучше, опять же удачи)

 

В принципе все довольно просто, нам не надо изучать какой то язык программирования или что-то в этом роде.

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

 

Данный код скрипта в примере рабочий, сам использую, проверить его легко – просто сверьте с кодом в мердже. В примере я использую нумерацию файлов в начале, т.к. считаю это самым простым и удобным вариантом для любых сериалов/аниме, т.к. нумерация всегда будет в одном положении в начале файлов, независимо от длины их имени.


Upd.

No full Upd. 


 

1.    1. Создание сырого скрипта.

1.1.  Создание кода в mkvmerge.

Итак, если делать все с нуля, особенно если ваша задача отличается от моей, то берем mkvmerge, открываем в нем первый наш файл для обработки и настраиваем все так, как бы мы делали это обычно вручную по 1 файлу в проге, т.е. собственно в mkvmerge ничего нового делать не надо, просто настройте нужную вам обработку как обычно.

1.2.  Создание файла скрипта.

Далее нам нужен сырой код обработки файла(сырой потому что мы его еще будем дорабатывать), идем в меню «Обработка», там есть 3 пункта по работе с командной строкой(они так и подписаны, не перепутаете), нам нужен любой из них, т.к. все они выдают один и тот же код (пункт создать файл конфигурации – это уже не то) разными способами, что интуитивно понятно.

Итак, у нас должен получиться файл .cmd или .bat созданный в мердже или текстовике, для его создания просто подписываем файлик с расширением .cmd или .bat(просто пропустим ненужное переименование из .txt и сразу сделаем скрипт и будем его просто редактировать текстовиком), внутри скриптового файла должен быть наш код из мерджа.

 

2. Редактирование скрипта.

Мы имеем первую строку для одного первого файла, для начала отредактируем ее. Напомню, что мы будем создавать шаблон, чтоб в будущем можно было использовать его копии с быстрым, легким и минимальным редактированием для конкретного пака файлов. Поэтому будут использоваться шаблонные фразы и слова, для удобства их замены на конкретные названия файлов и прочее (опять же тут всего лишь пример на основе моего случая, вы же можете делать по образу и подобию, т.е. использовать свои шаблонные слова на замену).

Внимание. 1. Шаблонные фразы и слова не должны совпадать с какими-либо словами из кода(из команд) батника, иначе вы можете нажить себе гемор при замене шаблонных слов на конкретные. 2. Команды/операции в батниках выполняются только построчно! Это значит что каждая отдельная команда должна быть отдельной строкой. В случае мерджа все команды над 1 файлом располагаются в 1 строке, т.е. 1 строка = обработка 1 файла. (см исходный код из мерджа, все команды для 1 файла расположены в 1 строке) 

Любая команда, которой нет в батнике или она неправильно указана(соответственно не будет работать) будет проигнорирована при обработке, т.е. в результате будут использоваться те или иные исходные данные и подписи из исходника(язык, имя дорожки и др.).

 

2.1. Самое первое и простое – нужно сменить пути файлов и настроить шаблоны их имен.

Для удобства, автоматизации и избежания проблем с русскими путями файлов, будем делать относительные пути. Т.е. батник надо будет просто копировать в папку к жертве) обрабатываемым файлам и все операции будут происходить там.

mkvmerge - использование консольного мерджа. Т.е. данная команда его запускает и мы можем использовать команды самого мерджа. Данная команда пишется в начале строки. Если мердж не прописан в переменные среды командной строки (см в начале ссылку на основы использование скриптов), то вместо этой команды надо прописать полный путь до консольного мерджа, типа "D:\MKVtoolnix\mkvmerge.exe".

o "путь к файлу" – это куда сохранять файл и как он будет называться (выходной файл)

Я прописал так  -o "mka\\01 Anime.mka"  т.е. в текущей папке с обрабатываемыми файлами, готовый файл будет сохраняться в подпапку mka с именем 01 Anime (папку создавать не надо, создается автоматом).

"(" "путь к файлу" ")" – это собственно путь к обрабатываемому файлу и его имени (входной файл)

Я прописал так  "(" "01 Anime.mkv" ")" – будет использоваться файл в текущей директории(папке), где лежит сам батник, файл должен иметь имя 01 Anime (ну и соответственно быть в mkv).

"--title" "внутреннее название(имя) файла" – собственно можно было настроить в мердже. Если этой команды не будет в батнике(т.е. в мердже в поле название файла пусто было), то будет использоваться имя файла из исходника. Полезная опция, например, если потерялось исходное имя файла, можно заглянуть внутрь и там все будет) тем более данная команда независима от ID(номера) потока, что облегчает ее замену в случае если в батнике нужно сменить ID для конкретного случая. Т.е. настраивается единожды шаблонно для всех случаев.

Я прописал так  "--title" "01 Anime" – подписывать внутреннее имя файла как 01 Anime.

Если оставить значение команды пустым "--title" "" – то файл будет в любом случае без внутреннего имени, независимо от исходника.

 

Итак, эти 3 команды образуют единый шаблон на замену, рассчитанный на нумерацию файлов вначале. Это значит, что после копирования батника к исходным файлам, редактируя его текстовиком (используя стандартную опцию замены, а точнее заменить все), в поле «что заменить»(ну или типа того) вы вводите шаблонное имя, в моем случае это Anime, а в поле «на что заменить» пишете название вашего сериала, аниме и т.п. Итого у нас имя исходного файла, имя конечного файла и его внутреннее имя совпадают (можно сделать и по-другому, но так проще). Т.е. заранее переименовываем ваши исходные файлы как надо и в батнике делаем замену на точно такое же имя (заменяется только имя! нумерация остается, иначе как еще вы собрались делать пакетную обработку без нумерации серий).

 

2.2. Имя трека конечного файла.

У команд имеющих ID, как уже говорилось ранее, имеется одно свойство – если указан правильный ID трека(потока), то команда будет использоваться, если же нет – будет использоваться значение из исходника.

Шаблон имени трека можно было создать еще в мердже. Код команды выглядит так:

"--track-name" "ID трека:Имя трека" где ID – порядковый номер потока в исходном файле. А имя трека это любое текстовое название (ники даберов, название группы, название озвучки и др.).

Примечание. ID медиаинфо считает от 1, а мердж считает от 0. Так что чтоб не путаться, откройте файлик в мердже и посмотрите ID нужного вам потока. Если же вы настаиваете на медиаинфо, то просто берете ID меньше на одну 1, чем указано в медиаинфо.

Например я создал такой шаблон "--track-name" "1:Rus sound" – т.к. нужная мне озвучка как правило идет первой звуковой дорожкой и соответственно вторым потоком после видео, знчт ID=1. Шаблон имени трека я выбрал Rus sound, который потом также легко и быстро заменяется текстовиком с помощью опции заменить все.

 

2.3. Дублирование кода в батнике, сериализация – превращаем батник в пакетный.

Итак, в принципе мы закончили с первой строкой, в моем случае она выглядит так:

mkvmerge -o "mka\\01 Anime.mka"  "--language" "1:rus" "--track-name" "1:Rus sound" "--forced-track" "1:no" "-a" "1" "--no-attachments" "-D" "-S" "-T" "--no-global-tags" "--no-chapters" "(" "01 Anime.mkv" ")" "--track-order" "0:1" "--title" "01 Anime"

Теперь осталось только продублировать ее столько раз, сколько вам нужно серий аниме или сериала, просто сменив в каждой строке цифру нумерованного шаблона. В моем случае это в каждой строке будет 3 раза заменяться цифра в шаблоне 01 Anime (на 02 Anime, 03 Anime и т.д.). Для аниме сериалов я сделал 27 строк, т.к. в большинстве случаев это максимум для количества серий.

К счастью данную муторную операцию достаточно проделать только 1 раз для создания шаблонного батника.

Внимание. Обязательно тщательно проверьте порядок и точное совпадение всех цифр в каждой строке, в противном случае вы натворите косяков (файл 1 станет файлом 2 и т.д.), тем более шаблон делается 1 раз и лучше его основу делать очень тщательно и внимательно.

Примечание. Если количество серий меньше чем в батнике, то это не беда, он просто пропустит все лишние серии (хотя секундная проверка пройдет, но это оч быстро).

 

2.4. Описание прочих команд (не столь важно, можно и пропустить, т.к. все настраивается в мердже заранее).

"--language" "ID:Язык трека" – язык дорожки конечного файла. Лучше настраивать в мердже, чтоб был правильный код языка.

Пример: "--language" "1:rus"

"--forced-track" "ID:yes/no" – принудительный выбор дорожки, т.е. она будет принудительно воспроизводиться. Лучше это опцию не включать, т.е. ставить нет(no).

Пример: "--forced-track" "1:no"

"-a" "ID" – выбор звуковой дорожки исходного файла.

Пример: "-a" "1"

"--no-attachments" – не прикреплять ничего к файлу, никаких вложений. Т.е. удалить все шрифты и прочий лишний мусор в случае если делаете отдельный звук(ибо там оно точно не надо).

"-D" "-S" "-T" – не копировать из исходного файла видео, субтитры и теги потоков соответственно.

"--no-global-tags" – не сохранять глобальные теги из исходного файла.

"--no-chapters" – не сохранять главы из исходного файла.

"--track-order" "ID файла:ID трека" – определяет порядок дорожек в выходном файле. Где ID файла – это номер файла, порядковый номер в котором он был открыт, т.е. если был загружен 1 файл, то ID его = 0 (мердж считает от 0) (если были одновременно добавлены несколько файлов, то их ID будут 0, 1, 2 и т.д., если 1 файл, то всегда 0). А ID трека – соответственно номер потока в том или ином файле. Т.е. получается, что у каждого потока указываются два ID – файла и самого потока в этом файле, потоки идут через запятую – 1:1,1:2,2:1,2:2,1:3 (вроде без пробелов, а мб и неважно). Простыми словами это значит – сначала идет поток от туда, потом от сюда, потом вон от туда))

Пример: "--track-order" "0:1" – один файл, поэтому его ID=0, трек с ID=1 в моем случае это первый звук.

Чтоб узнать все команды консольного mkvmerge, нужно открыть командную строку, мышкой перетащить туда файл mkvmerge.exe из папки с прогой и запустить его (нажать Enter). Он сразу выдаст все свои секреты) весь список команд, причем описание команд на русском языке.

 

3. Итог.

Мы создали шаблон батника. Теперь когда нам нужно пакетно обработать какой-нить сериал, сначала надо привести имена файлов к общему виду с нумерацией в начале (в вашем случае вы можете сделать по своему, но так удобнее, быстрее и легче), причем для этого есть спец проги для переименования кучи файлов сразу, типа ReNamer. Лично я всегда привожу файлы в такой порядок, так что для меня это в порядке вещей.

Копируем батник(именно копируем, ибо не советую насиловать оригинал, дабы потом не переделывать все) в папку где лежит все это наше добро, иии... нет не запускаем)

Открываем его любым текстовиком, включаем опцию замены и делаем замену шаблонных слов. В моем примере, как уже говорилось, это Anime и Rus sound, т.е. делаются всего лишь 2 быстрые глобальные замены. Сохраняем батник и запускаем. Готово)

Примечание 1. Данный батник подходит также для обработки mka(т.е. mka из mka, например для создания/изменения подписей и др.) по такому же принципу, но в данном случае не забываем менять ID рядом глобальных замен в текстовике, а также сменить расширение входного файла с .mkv на .mka.

Примечание 2. Батники после выполнения имеют привычку закрываться, если вам нужно/интересно посмотреть результат операций или вас просто смущает его быстрое закрытие, то в конце кода батника прописываем отдельной строкой(команды выполняются только построчно!) команду PAUSE (регистр букв не важен, можно и маленькими), которая делает паузу)) и выводит сообщение типа "нажмите любую кнопку чтоб продолжить" (т.е. если эта команда стоит в конце батника то нажатие любой клавиши приведет к завершению = закрытию батника). Также эту команду можно использовать для пауз между другими командами (например сделать паузу после первого обработанного файла и др.).

 

Вот код моего батника на 27 серий какого-нить аниме или сериала для вырывания первой звуковой дорожки(рассчитано на озвучку, так что подписывается русской) из mkv в mka ну и с прочими рассмотренными параметрами, также прикрепляю его готовый файл(напоминаю что проверить код легко, сверив с мерджем и открывается он любым блокнотом):

Смотреть код батника (можно скопировать)

Скачать готовый скрипт

Просмотров: 7917 | Рейтинг: 5.0/3

Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Опросы

Как вы смотрите аниме?
Всего ответов: 3

Друзья сайта

    щас нету)

Реклама

нету рекламы :)

Статистика