March 8th, 2007

MIxa's Logo v2

WMV >> AVC+OGG@MP4

Всё началось вечером понедельника. Задался целью переконвертить видео с переменным фреймрейтом из WMV в нормальный человеческий контейнер (mp4 или mkv, было не суть важно), видео в H264 а звук в OGG. Необходимость эта была обоснована тем, что WMV вообще не поддердивает субтитры, а хотелось иметь полусофт. Проблема заключалась исключительно в том, что при обычном перегоне фреймрейт становился постоянный, в результате чего продолжительность сокращалась, звук начинал опережать видео а про субтитры речи даже не шло.
Всё началось издалека, в понедельник вечером. Я сношался с VirtualDub'ом и энкодером из ffdshow в разных вариантах, попеременно, то сверху, то снизу... Разумеется безуспешно. Потом настала очередь ависинта, для которого я долго писал разнообразные скрипты с разными плагинами (разумеется, до тех, которые бы в этом случае помогли, дело, как обычно, не дошло). Безуспешно. Поздним вечером понедельника узнаю о существовании Graphedit, однако что-то делать с ним я уже не в состоянии. С утра во вторник сажусь за комп. Долгие сношения с разнообразными фильтрами в различных вариантах. Перерыв на универ. Вечером групповуха: VirtualDub, Avisynth и Graphedit дружно имеют меня. И таки отымели.
Вчера наступил коренной перелом в моих упражнениях по перегону. До меня наконец-таки дошло задать вопрос на #fansubbers@RusNet, и, спасибо огромное FiX[UT], я заново узнал о существовании такой вещи, как таймкод. "Вот оно!" подумал я и радостно приступил к новым сношениям. Graphedit'ом перегнал WMV в MKV. Вытащил из mkv таймкод, из первой дорожки. Получился нужный текстовик. Перегнал видео в H264, звук в OGG. Итого, через некоторое количество времени, у меня в распоряжении было казалось всё, что нужно, для того, чтобы собрать MKV (а я хотел именно его первоначально, поскольку, куря ман к mp4box понял, что туда таймкод никак не запихаешь). Собираю. mkvmerge дохнет из-за неправильного файла с таймкодом, mkvmergeGUI ситуацю не исправляет. Курю ман по mkvmerge, узнаю, что файл с таймкодом должен содержать ровно столько строчек, сколько фреймов в видео, у меня же эта разница чуть ли не в 10 раз! Обновляю mkvtoolnix, создаю таймкод заново. Ноль эффекта. Забиваю на mkv. Ищу, как можно запихать таймкод в mp4, узнаю о существовании tc2mp4. Качаю, собираю как написано. Эффект есть: фреймрейт переменный, однако крайне низкий, а видео не доходит даже до середины. Однако уже поздно и я ложусь спать.
Утро сегоднешнего дня. Попытка собрать сначала mkv, потом mp4 со вчерашними файлами и параметрами. Естественно, за ночь ничего не изменилось. Попытка понять, почему таймкод не подходит, ведь видео одно и то же. И на свежую голову я вспомнил! Ещё когда я муксил mkv из wmv первым потоком был звук, и только вторым видео! А я делал таймкод из первого потока. Вот оно что... Делаю таймкод из второго потока, получается файл заметно большего размера, однако в нём всё равно не хватает около 4000 фреймов. Безуспешная попытка сборки mkv. Упражнения с калькулятором и VirtualDub'ом, изменение фреймрейта видео таким образом, чтобы количество кадров в видео и таймкоде совпадало. Успешная сборка mkv, негативный результат: звук постепенно опаздывает и уже через минуту всё становится совершенно несмотрибельным. Несколько попыток сборки уже mp4 с этим таймкодом и... SUCCESS! Видео и звук синхронизированы на всём протяжении. Субтитры тоже замуксиваются спокойно. Ощущение маленькой победы.
Сейчас сижу перегоняю видео с большим битрейтом, поскольку в первый раз я перегнал с недостаточно высоким битрейтом и во многих местах откровенно пикселило, в некоторых не хватало чёткости...
Такой вот mindfuck... Level up.
  • Current Music
    The Chemical Brothers - The Private Psychedelic Reel