Статьи 

Paper

Нарезка, или как сделать правильный AVI из MKV/MP4

Четверг, 27 Ноябрь 2008

Вступление

Процесс создания любого клипа включает в себя конвертирование исходного материала в формат, пригодный для использования в редакторе, или попросту "нарезку". Несколько лет назад, в эпоху avi и divx, все было предельно просто, т.к. Virtual Dub без особых проблем мог открыть практически любой файл, но с появлением mkv и mp4 этот процесс оброс дополнительными ньюансами, о которых я и собираюсь здесь рассказать. Моя цель- описать универсальный и простой в использовании способ нарезки современных исходников. DVD-исходники (*.VOB) в рамках данной статьи рассматриваться не будут - читайте статьи по DVD-rip'у.


Инструментарий

Нам понадобится 4 инструмента: Virtual Dub, AviSynth, Haali Media Splitter (известный также как Matroska Splitter) и MediaInfo. Инсталляция всех перечисленных приложений делается с настройками по умолчанию, т.е. по схеме "Next->Next->Next". После установки находим файлик "avss.dll" (он устанавливается с Haali Media Splitter и по умолчанию находится в "C:/Program Files/HaaliMatroskaSplitter/avss.dll") и копируем его в папку плагинов ависинта (по умолчанию "C:/Program Files/AviSynth 2.5/plugins").

Скрипт

Допустим, у нас есть исходный файл в матрешке с именем Ishodnik.mkv. Создайте текстовый файл и впишите туда следующие строки, подкорректировав путь при необходимости:

DSS2("D://Ishodnik.mkv")
ConvertToRGB24

Комментарий для продвинутых пользователей. Почему не DirectShowSource? А потому, что DirectShowSource не является frame accurate, т.е. после загрузки скрипта в даб и разметки границ желаемого фрагмента эти самые границы вполне могут съехать на несколько (иногда десятков) фреймов, бывают и более серьезные глюки вроде изменения последовательности кадров при сикинге. DSS2 лишен всех этих недостатков.

Сохраните файл с расширением *.avs. Запустите Virtual Dub, зайдите в меню Video и выберите режим Direct Stream Copy. Теперь откройте в дабе созданный *.avs-файл. Если все сделано правильно, то вы увидите там свой исходник. Но не спешите приступать к нарезке- самое интересное только начинается.

Черные полосы.

Бывает, в исходном файле с какой-то или сразу с нескольких сторон изображения присутствуют черные полоски шириной в несколько пикселей. Черные полосы в клипе значительно расходуют драгоценный битрейт и смотрятся неэстетично, к тому же на них вылезают эффекты, поэтому мы будем от них избавляться. Посмотрите на картинку в Virtual Dub'е, выбрав светлую сцену. Если видите полоски, то редактируйте свой *.avs-файлик, добавив в конец скрипта такую строку:

Crop(a,b,-c,-d)

где a - количество обрезаемых пикселей слева, b - сверху, c - справа и d - снизу. После этих манипуляций скрипт, срезающий, например, 1 пиксель черных полос слева и 2 справа, должен выглядеть так:

DSS2("D://Ishodnik.mkv")
ConvertToRGB24
Crop(1,0,-2,-0)

Разрешение.

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

Чтобы посмотреть разрешение исходника, воспользуйтесь утилитой MediaInfo (рис. 1). Главное правило - никогда не делайте ваш клип с бОльшим разрешением, чем разрешение исходника (исключение - анаморф, об этом ниже). Это же касается миксов. При наличии исходников разного разрешения за разрешение клипа принимайте наименьшее из разрешений исходников.
Зато если качество исходника оставляет желать лучшего, либо у вас сильно ограничено свободное место, либо размер клипа должен вписаться в жесткие рамки, либо вы обрезали черные полосы- во всех этих случаях разрешение можно и нужно уменьшать. Следует помнить, что изменять разрешение нужно пропорционально, а лучше выбирать из таких стандартных вариантов (для исходника с соотношением сторон 16х9): 640х360; 704х400; 768х432; 848х480; 1024х576; 1280х720. Если же ваш исходник имеет соотношение сторон 4х3, то вряд ли вы найдете что-то более подходящее, чем 640х480. Соотношение сторон смотрим рядом с разрешением в MediaInfo (рис. 1)
Для изменения разрешения добавьте в ваш скрипт строчку:

Spline36Resize(x,y)

где х - новое разрешение по горизонтали, а y- по вертикали. Использование алгоритма сплайнов при уменьшении разрешения позволит скрыть мелкие артефакты исходника, но сохранит четкость картинки. Например, вы остановились на разрешении 768х432. Тогда ваш скрипт должен выглядеть так:

DSS2("D://Ishodnik.mkv")
ConvertToRGB24
Crop(1,0,-2,-0)
Spline36Resize(768,432)


Анаморф

Если вы- счастливый обладатель DVD-rip'а, то ему наверняка присуща анаморфность. Анаморф- видео с неправильным аспектом и метаданными, позволяющими плееру восстанавливать правильный аспект при проигрывании. Откройте исходник в MediaInfo, в настройках поставьте Output format - HTML. В окне информации о видео (рис. 1) можно увидеть исходное разрешение и cоотношение сторон при показе. Если вы просто откроете в дабе наш скрипт без операций ресайза, то он будет как раз в исходном разрешении и у видео будут неправильные пропорции. Поэтому при анаморфе обязательно приведите соотношение сторон нарезки к указанному (используйте стандартные разрешения, указанные выше). На рисунке разрешение 704х480, а соотношение 16/9. Высчитываем горизонталь с нужным соотношением, взяв за основу разрешение по вертикали:

480*16/9=853.(3)

и берем ближайшее из стандартных разрешений (848х480) или меньшее. В нашем примере мы уже изменили разрешение на 768х432, вернув таким образом потенциально анаморфному исходнику правильный аспект, поэтому скрипт модифицировать не надо.

Частота кадров

Бывают случаи, когда разные серии одного релизера выходят с разным fps (frames per second), к тому же не совсем стандартным. Не стоит забывать и про VFR (variable frame rate или переменный fps). Задача клипмейкера- привести все исходники к выбранному фрейм рейту, избежав при этом дерганий, смазываний и существенных изменений скорости нарезки по сравнению с оригиналом.

Фреймрейт смотрим в MediaInfo (рис. 2). Если вы видите там одну строку с числом кадров в секунду, то все просто и эту частоту кадров можно брать для клипа. В любом другом случае лучше всего будет модифицировать функцию DSS2 специальным параметром, возвращающим фрейм рейт к нужному занчению.

Если имеем что-то похожее на рис 3, рис. 4 или рис. 5, то у нас переменный fps и наша задача определить, какой же именно фреймрейт 23.976 или 29.97 у интересующего нас куска. Для этого создадим отдельный скриптик с единственной строкой:

DSS2("D://Ishodnik.mkv", fps=29.97)

Откроем его в отдельном Дабе и пролистаем покадрово десяток фреймов на какой-нибудь динамичной сцене или сцене панорамирования (движения камеры). Если движение есть четко в каждом кадре значит, фреймрейт 29.97. Если каждые несколько кадров имеем один без движения значит, 23.976.

Допустим, в нашем примере движение было не в каждом кадре, поэтому скрипт должен выглядеть так:

DSS2("D://Ishodnik.mkv",fps=23.976)
ConvertToRGB24
Crop(1,0,-2,-0)
Spline36Resize(768,432)

Теперь последний штрих, улучшающий совместимость нарезки с редакторами. 23.976 по стандарту NTSC - бесконечная дробь (24000/1001), которую редакторы понимают далеко не всегда. То же относится к 29.97. Поэтому приведем наш фреймрейт к округленному значению. Делается это добавлением в скрипт строки

AssumeFPS("ntsc_round_film")

для 23.976 или строки

AssumeFPS("ntsc_round_video")

для 29.97.

В нашем примере скрипт будет выглядеть так:

DSS2("D://Ishodnik.mkv",fps=23.976)
ConvertToRGB24
Crop(1,0,-2,-0)
Spline36Resize(768,432)
AssumeFPS("ntsc_round_film")

Фильтры

Дополнительным преимуществом использования ависинта в нарезке является возможность подключать качественные фильтры для визуального повышения качества видео. Однако использование фильтров на исходнках-релизах хороших групп может даже слегка ухудшить качество нарезки, т.к. эти же фильтры уже были использованы самими релизерами. Самые полезные для клипмейкера фильтры - это шумодавы, убирающие зерно/шумы и повышающие сжимаемость клипа (например, FFT3Dfilter, для которого так же есть GPU-версия), шарперы, делающие изображение более четким (например, warpsharp) и градиентные выравниватели, убирающие видимые переходы полутонов градиента (например, gradfun2db). Тонкости использования фильтров тянут на отдельную статью, поэтому здесь их рассматривать не будем. При желании можно легко найти всю информацию в интернете, к тому же никакие фильтры не заменят качественный исходник.

Кодирование нарезки

Сохраните изменения, внесенные в скрипт. Перечитайте скрипт в Virtual Dub'е, нажав F2 или открыв его заново. Можно приступать к нарезке, получая на выходе несжатый RGB24 - самый безглючный формат видео с точки зрения редакторов. Но у него есть существенный недостаток - он требует очень много свободного места на вашем диске.

Объем дискового пространства на секунду нарезки рассчитывается по формуле:

Vol(MB/sec)=(ResX * ResY * 24 * fps /(1024*1024*8))

где
Vol(MB/sec) - вес одной секунды нарезки в мегабайтах,
ResX - разрешение по горизонтали,
ResY - разрешение по вертикали,
fps - фреймрейт (кадров в секунду).
Т.е. если вы делаете нарезку в разрешении 768х432@23.976fps, то одна секунда будет весить 768*432*24*23.976/(1024*1024*8) = примерно 23 мегабайта. Не трудно посчитать, что 30 минут нарезки будут весить около 40 гигабайт. Много? Тогда будем кодировать нашу нарезку без потери качества, чтобы она занимала примерно в 10 раз меньше места.

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

ConvertToRGB24

и исправив значения в строке Crop на ближайшие кратные двум. Скрипт должен выглядеть так:

DSS2("D://Ishodnik.mkv",fps=23.976)
Crop(2,0,-2,-0)
Spline36Resize(768,432)
AssumeFPS("ntsc_round_film")

В дабе зайдите в меню Video и выберите режим Fast Recompress, чтобы избежать преобразований цветового пространства. Потом зайдите в меню Video, пункт Compression, выберите в списке кодеков Lagarith lossless codec, нажмите Configure, установите mode в YV12 и отметьте чекбоксы Enable Null Frames и Use Multithreading. Перечитайте ваш скрипт, нажав F2. Теперь можно делать нарезку, не так сильно беспокоясь за свободное место. Успехов в творчестве!

Автор: Aggressor


Прочитана: 277566 раз
Распечатать

Комментарии (309)
Вы не авторизованы! Комментарии могут оставлять только зарегистрированные и авторизованные пользователи!


Neymeha   User profile
  14.05.2012 17:19
Я вот задумался, а имеет ли смысл сейчас конвертирование и нарезка в "пригодный формат"? ммм, скажем 9ый вегас не общался с mkv, а одиннадцатый уже дружит в плотную. или всё таки стоит проделывать эти долгие процедуры?
---------
Хотя да, в этом всё же есть смысл) серое вещество заработало таки
vivan   User profile
  12.05.2012 18:45
ByBLuk,
даже первое предложение ниасилил?
ByBLuk   User profile
  11.05.2012 23:45
Зачем конвентировать когда можно сразу вырезать >>>Спасибо Boilsoft Video Splitter За это
vivan   User profile
  02.05.2012 15:21
Hanabishi_Takumi,
наркоман чтоле?
Mexatronik   User profile
  14.04.2012 19:51
Default Avatar
Хе-хе-хе а чего так сложно делать АМВ нет попроще варианта а то пока прочитал всё расхотелось как-то пытаться сделать клипач.
NewOvermind   User profile  Video channel
  14.04.2012 12:48
Именно наша "одминистрация" DDD Грамматика, стилистика - Hanabishi_Takumi: не,не слышал.
Hanabishi_Takumi   User profile
  12.04.2012 09:07
Default Avatar
да не был я лучшего мнение и это подтвердилось
мало того что у админов одно стороная общение к участникам что уже понижает рейтинг сайта не то что в

7токио
евро ан
ази аним

где одминистрация приводя свои придирки остовляет возможность ответа для участников

так ещё тут полную ахинею по поваду лагатипа несут жесть

оброщение к админам ЭТИ ПРИДИРКИ ВЫ ЯПОНИИ ДАЛЕЙТЕ ПО ПОВАДУ ЛАГАТИПОВ

как по вашему я должен поступить с лагатипом замазать его?)))
или срезать?
и что тогда получится пол башки нема?)))

АДМИНИСТРАЦИЯ НАДЕЮСЬ ВЫ ПРОЧТЁТЕ ЭТО
ВАШ САЙТ УСТУПАЕТ ПО МНОГИМ ПОКАЗАТЕЛЯМ АЗИАТСКИМ ЕВРОПЕЙСКИМ И ЧИСТО ЯПОНСКОМУ КОНКУРСНУМУ САЙТУ АНИМЕ И МАНГИ

ДА И ДВИЖОК ВАМ СЛЕДУЕТ СМЕНИТЬ С КАКИХ ВЕКОВ СТОИТ НЕ БОСЬ НЕ РАЗУ НЕ МЕНЯЛИ ?)))

вобщем тут делать нечего евро рулит там я и тусуюсь а увас просто черпаю вдахнавение и просто смотрю на клипчики

рейтинг сайта этого

измините политику одно сторонию
на более общительную
Alex_Nelve   User profile
  31.03.2012 10:31
дак там еше все кодеки желательно менять на 64- разрядные.Virtual Dub, AviSynth, Haali Media Splitter.
DoubleOrange написал(а):

Вообщем теперь вылезает ошибка 80040154 . Кодек ffd ставил , не помогло . Походу придется обычным конвертером


DoubleOrange   User profile
  28.03.2012 22:08
Alex_Nelve написал(а):
ээ у тебя 64 разрядная винда или 32?
если 64 то надо соответственно 64 разрядный Avisyth установить. у меня была та же ошибка)))) вроде...



Щас попробуем , и на том спасибо . А то тут недождешься ответа...


Вообщем теперь вылезает ошибка 80040154 . Кодек ffd ставил , не помогло . Походу придется обычным конвертером
Alex_Nelve   User profile
  28.03.2012 03:45
DoubleOrange
26.03.2012 14:39

Сабж

При открытии скрипта в дабе , вылезает ошибка:

Avisyth open failure:
Cant open D:\1.mkv:8007002


Раньше вылезали другие ошибки , но после того , как я переустановил ависинс и засунул исходник со скриптом в корень диска Д , вылезает именно эта ошибка.

П.с Да я менял слеши , и файлик avss.dll копировал в папку плагинов . Плеер проигрывает mkv файл .

помогите



ээ у тебя 64 разрядная винда или 32?
если 64 то надо соответственно 64 разрядный Avisyth установить. у меня была та же ошибка)))) вроде...
DoubleOrange   User profile
  26.03.2012 14:39
Сабж

При открытии скрипта в дабе , вылезает ошибка:

Avisyth open failure:
Cant open D:\1.mkv:8007002


Раньше вылезали другие ошибки , но после того , как я переустановил ависинс и засунул исходник со скриптом в корень диска Д , вылезает именно эта ошибка.

П.с Да я менял слеши , и файлик avss.dll копировал в папку плагинов . Плеер проигрывает mkv файл .

помогите
Alex_Nelve   User profile
  19.03.2012 10:59
Народ как увеличить фпс на видео из 23.9... в хотябы в 25 или 29??? что в скрипте писать...
Lion0608   User profile
  25.02.2012 16:40
Helloeen

Вот похожий вопрос возник...
Helloeen   User profile  Video channel
  22.02.2012 13:18
Я не догоняю, что делать. в этой ситуации

"Частота кадров : 23,810 кадр/сек
Первичная частота кадров : 23,976 кадр/сек"

А при кадровом просмотре в дабе простоя не видно Т.Т ни стой фпс, ни с другой.

Какую тогда брать?

MangaLub   User profile  Video channel
  09.01.2012 09:40
не знаю как, но наконец то само по себе получилось О_о
MangaLub   User profile  Video channel
  08.01.2012 13:22
Turbo, а можно поподробней, как это сделать?
Turbo   User profile  Video channel
  08.01.2012 12:58
MangaLub, у тебя не отображаются расширения у файлов. Надо в настройках папки менять что бы отображались.
MangaLub   User profile  Video channel
  08.01.2012 12:46
Что то я полистала коменты и по моему вопросу ничего не нашла, так что решусь и задам
я не могу изменить расширение текстового файла на avs.
Создала txt файл "amv", написала скрипт, сохранила, переименовала на "amv.avs". Но он как был txt так и остался. Я не могу понять, где я ступила, что сделала не так?
Lion0608   User profile
  07.01.2012 07:24
Спасибо огромное за статью и комментарии, все работает, новый мир)
Три часа по причине блондинистости тупила - забывала в путь написать расширение mkv )
©©©֮   User profile
  26.10.2011 12:31
то есть эта неповлияет на качество и дальнейшуу работу с нарезками к примеру в Премьере???
Turbo   User profile  Video channel
  26.10.2011 11:34
©©©֮, у тебя винчестер не справляется с таким потоком данных. Зачем его проигрывать? Его надо использовать в редакторе.
©©©֮   User profile
  26.10.2011 11:15
Все вроде разобрался -_- ...но появилась другая проблема...после того как я вырезал кусок....и воспроизвожу его оно жутко тормозит....сначала думал что перемудрил где то...удалил все..и сделал все сначала..но эта проблема все равно осталась....может кто сталкивался с таким??? и подскажет как решить эту проблему?
zmaster   User profile
  20.10.2011 08:39
Default Avatar
©©©֮ написал(а):
подскажите код который надо писать в скрипте чтобы открылся AVC

Прочтите статью...
©©©֮   User profile
  19.10.2011 00:38
Всем Привет..подскажите код который надо писать в скрипте чтобы открылся AVC формат видео.
maksoon   User profile
  15.09.2011 21:06
Default Avatar
так и не решилась проблема с черными стоп кадрами. в прошлый раз я ависинх вроде переустанавливал и одно время не было проблемы. щас новая система и тоже самое началось. виртуалдабмод опять таки все проигрывает без квадратов малевича а обычные версии все тушат изображение. сносил кодеки,матроску,ависинх,виртуалдаб,ffdsho отдельно ставил. методом тыка ничего не решилось. другими методами не владею
---------
неа не решилась. так и гаснет экран. хз чтото с кодеками/

раз 10 все снес и поставил толку 0
причем запускаю даб-плэй-все проигрывает через скрипт. жму стоп-черный экран((( а если окошко даба чуток подвинуть изображение появляется! такое ощущение что издевается просто. уже зло берет
vivan   User profile
  01.09.2011 19:58
Ну так настройте правильно проект...
Sora26   User profile
  29.08.2011 18:38
все более мение понятно и получилось но вот сони вегес все равно выдает готовое с черными полями.....
Aggressor   User profile  Video channel
  22.08.2011 19:54
Надо привести к одному через AssumeFPS, а вот к какому — зависит от много чего. Можно выбрать любой из двух, но надо учитывать, что увеличение частоты кадров приведёт к небольшому ускорению, а уменьшение — к небольшому замедлению исходника.
dozer92   User profile
  10.08.2011 15:43
По поводу частоты кадров...Что делать в случае разных исходников (где-то 29.97, а где-то 23.976)? Я читал в faq что для приведения к единому фпс как раз и нужен AssumeFPS, но... Возможно я чего то недопонял, но тут просто написано, мол если у вас 976-ставим 976, а если 97 то 97, но ведь тогда я все равно получу видео с разными фпсами. В редакторе я же буду выбирать что-то одно...Объясните этот момент пожалста =\
zmaster   User profile
  06.08.2011 15:57
Default Avatar
Last Wolf,
Не перегоняйте эпизоды целиком, вырезайте нужные фрагменты.


 Интересное на CreaSpace