mkv в avi - ручная работа
версия для печатиЕсть задача: перегнать кино из "матрешки" (mkv-файл) в avi-контейнер (aka mkv2avi). На вопрос "А зачем?" я отвечать не буду, лучше расскажу, "Как можно это сделать". Притом полезно об этом написать, поскольку методы проверены временем. Не стану спорить, есть и другие решения и однокнопочные редакторы, которые все за вас сделают. Кому-то мой подход покажется извращением - ну что ж.. "на вкус и цвет", как говорится :)
Ссылки
Для пересадки понадобятся некоторые инструменты. Логичнее было бы разместить ссылки после статьи, но лучше увидеть весь айсберг сразу!
Mkv в avi без пережатия
Есть mkv-файл (h264, несколько AC3, субтиры). Нужно переложить картинку и звук в avi. План такой:
- разбираем mkv на отдельные файлы;
- преобразуем h264-файл в avi-файл;
- собираем все нужное в avi.
- Прога MKVextractGUI, заранее размещенная в каталоге проги MKVToolnix. Запускаем MKVextractGUI2.exe. Открываем в ней исходник, выбираем нужные потоки для извлечения (их в исходнике может быть больше двух), извлекаем. Получим два файла: track1.h264 и track2.aс3.

MKVextractGUI лицом :) - Прога avc2avi (запускающий файл avc2avi_gui.exe). Открываем в ней track1.264 (предварительно подправив у него расширение), ставим FPS исходного файла (fps можно узнать через MediaInfo или KMPlayer; дробное число пишем через точку), жмем "mux" и ждем. Ни каких сигналов процесса не будет, только пустое окно консоли. Когда она закончит, сама скажет. Получим track1.264.avi. Это еще не полноценный фильм, там нет индексов и звука.

"дружественный" интерфейс - Прога AVI-Mux GUI (запускающий файл avimux_gui.exe). Кидаем ей track1.264.avi полученный в п.2, а так же track2.ac3. Жмем "start", указываем имя файла и тип (по умолчанию - avi), Ок. Вот и вся сборка.
Иногда AVIMux не хочет принимать avi-"кандидат"-файл. Альтернативный вариант - использовать VirtualDubMod. Один из его плюсов - возможность управлять потоками в контейнере. Кидаем в него track1.264.avi, VDM долго будет с ним возиться, пытаясь проиндексировать. После чего идем в Streams > Stream list. В новом окне добавляем аудио-файл(ы). Далее сохраняем все без компрессии (режим "Direct stream copy").
AVIMux VDM. Stream list
Результат: получили avi-файл (h264, AС3), перегнав mkv-фильм в avi без пережатия. Такой способ удобен, если в mkv лежат потоки уже подходящего разрешения/сжатия/кодека. Т.е. как в этом примере, mkv-файл содержал "лишние" дорожки, и контейнер меня не устраивал. Кстати, можно было бы собрать опять матрешку только из нужных треков (см. [MKVToolnix\mmg.exe])

KMP понял файл
Пережатие mkv-файла с помощью VirtualDubMod
Вариант 1.
Пишем avs-скрипт (script.avs):
DirectShowSource("E:\temp\film.mkv", fps=23.976)Здесь FPS исходного фильма, разумеется. Этот скрипт открываем в VDM. Далее - обычные операции над видеофайлом: выбираем отрезок для пережатия, выставляем кодек, запускаем сохранение. Все :) Чтобы скрипт работал, должен быть установлен AviSynth. Иначе при открытиии в VDM будет ошибка: "AVI Import Filter error (Unknown) 80040154". Причины ошибки могут быть и другие, но эту вы легко можете исправить.
Зачем вообще скрипт, когда VirtualDubMod сам понимает mkv-формат? А затем, что напрямую с таким форматом VDM работает не стабильно, ругается и вылетает, а через AviSynth вроде как все ровно идет.
Вариант 2.
Разбираем на потоки. Перегоняем через avc2avi видеопоток в avi-контейнер (см. ранее пункты 1 и 2). Потом подкитываем полученый avi-ник в VirtualDubMod, выставляем кодек пережатия, сохраняем. Аудиопоток пережимаем как-нибудь, если нужно. Полученные файлы собираем в avi-контейнер. Собрать можно в VDM или через AVI-Mux (см.пункт 3)
Баги - как с ними бороться.
В VirtualDubMod иногда бывают глюки с avi-"кандидатами". Если попытаться выбрать отрезок для пережатия, программа вылетает/виснет. В таком случае просто не трогайте ползунок, пережмите весь файл, а потом уже вырезайте, что нужно, из нового файла.
Была у меня запарка с пережатием одного файла. Ни какие скрипты не помогали, VDM вылетал с руганью на AviSynth. Переупаковка только видео в mkv тоже не помогала. Сделал так. Вытащил видео из матрешки, получил .h264-файл. Его засунул в avi-контейнер через avc2avi. Полученный avi открыл в VDM. Не двигая ползунок выставил быструю рекомпрессию. В настройках кодека DivX выставил битрейт, изменение размера. Там есть такое изменение, где можно указать только ширину (я указал 720), высоту кодек сам пропорционально расчитывает. После пережатия добавил выдранные ранее аудио-дорожки. Все :)
Очевидный плюс всех этих программ - их не надо устанавливать, т.е. весь rip-пак можно один раз собрать и не переживать о переустановках Винды, все будет работать (только AviSynth переставлять). К тому же вместе эти инструменты дают намного больше возможностей, чем и описано в этой статье. А минус в следующем: если чего-то программам будет не хватать для работы, они будут выдавать невразумительные ошибки :( Например, пока я не поставил нужный .NET framework, avc2avi вылетала с ошибкой (более "образованные" проги требуют установить для них фреймвок ,-)) Другой пример я привел выше: ругань VDM на фильтр трудно связать с отсутствием в системе нужного фрейм-сервера.
Почему так важен правильный FPS в операциях? Если поставить не верную частоту кадров, получите рассинхронизацию звука. Это когда звук по ходу фильма будет все больше отставать или обгонять картинку. Такой косяк исправить не возможно, в отличии от обычного смещения звука раньше/позже картинки. Постоянное по времени смещение можно подправить в VDM, в настройках Stream list > ПКМ по нужному потоку > Interleavig > cекция "Audio skew correction". Положительное число будет задерживать звук, отрицательное - подгонять. После точной коррекции можно сохранить файл без дополнительного пережатия (режим "Direct stream copy").

Заметки по "однокнопочным" конвертерам и звуку
Пробовал разные конвертеры в свое время, все они не особо впечатлили, ярких результатов не давали. Запомнилось вот это:
- Super: раз нормально перевел mkv-формат, на других файлах ничего не получилось. Справедливости ради нужно заметить, что в целом это не плохой конвертер. Для работы использует известные консольные модули, типа ffmpeg, т.е. Super - эт оболочка, GUI, объединяющая множество конвертеров.
mkv to avi convect- платная кривая прога, г.. полное. Конструктивно критиковать не могу, на уме только маты.MediaCoder-0.7.1.4488(16.7 Mb): типо комбайн. При инсталляции полез в инет че-то еще докачивать. Косячный интерфейс. Так и не разобрался, как этим выкидышем конвертировать. При запуске проги, а так же при открытии определенных вкладок запускается браузер с линками на различные сайты. Отстойная программа.
Конвертер звука. Всего одно слово XRECODE. Масса всяческих направлений кодирования, русский интерфейс, portable-версия, почти бесплатно ;) Если не регистрироваться, то при каждом запуске появляется напоминание. Больше ни каких ограничений без регистрации я не нашел. А как пройти регистрацию, я вобще не понял %)
[1oo%, EoF]Понравилась статья? Расскажите о ней друзьям: