Статьи 

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


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

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


Urchina   User profile
  30.07.2010 18:30
zmaster, пасибки... помогло... :))))
zmaster   User profile
  30.07.2010 18:23
Default Avatar
Urchina, попробуй упростить путь к файлу избавившись от русских букв. Скопируй файл на жесткий, чтобы получилось, например, так:

DSS2("D:\Yourfile.mkv")

Должно помочь.
Urchina   User profile
  30.07.2010 17:55
Пишет что не может открыть файл mkv, далее циферка: 80070003 и далее в скобках (имя файла.avs, line1)
Что это может значить?
Turbo   User profile  Video channel
  30.07.2010 17:32
Default Avatar
Urchina, открой AVS-файл в любом видеопроигрывателе и посмотри сообщение об ошибке.
Urchina   User profile
  30.07.2010 17:27
"Теперь откройте в дабе созданный *.avs-файл."

До этого сделала все как написано...
Файл mkv я создала и текстовой тоже, расширение изменила, но ничего не произошло и он в Дабе не открывается...
Что делать...? Помогите...
ЧешиР   User profile
  22.07.2010 21:03
респект созтателям статьи,очень благодарна)))пойду творить))))
ChobitPersakom   User profile
  17.07.2010 09:26
Аригато!
Всё стало на свои места!
*низкий поклон*
zmaster   User profile
  16.07.2010 21:37
Default Avatar
ChobitPersakom написал(а):
Мне непонятен только этот фрагмент



Устанавливаешь все необходимое.
Открываешь контекстное меню (правая кнопка мыши на пустом участке активного окна Виндовс)
Далее "Создать" - "Текстовый документ". Пишешь в него
DSS2("D:\Ishodnik.mkv")
ConvertToRGB24
Где D:\Ishodnik.mkv это путь к файлу с аниме, из которого ты и хочешь резать. Например:
Хочу вырезать кусочек из первого эпизода аниме "Dears", как в статье написано. Для этого копирую его ("Dears - 01.mkv") на винчестер в папку "Нарезка"(копирую куда захочу), создаю текстовый документ и пишу DSS2("D:\Нарезка\Dears - 01.mkv"), т.е путь к файлу с указанием его имени и расширения.
Добавляю ConvertToRGB24 Получилось

DSS2("D:\Нарезка\Dears - 01.mkv")
ConvertToRGB24

Закраваю текстовый файл, сохранив все, и меняю его расширение с .txt на .avs (Путем переименовывания)
Откраваю полученное в "Virtual Dub". Все, теперь все девки мои.
ChobitPersakom   User profile
  16.07.2010 10:49
Простите...
А можно узнать...
Я скачал все 4 программы и переместил "avss.dll" куда сказано...
А дальше я не понимаю...

Скрипт

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


Я матрешкой некогда не пользовался и не понимаю о чем тут речь...
Мне непонятен только этот фрагмент ...
Подскажите что и в какой последовательности запустить, онегай!
Twister90   User profile
  14.07.2010 23:03
спс большое за статью, все получилось) кодируется быстро, и главное качественно. жаль что я только сейчас сюда заглянул
zmaster   User profile
  09.06.2010 21:33
Default Avatar
Есть думмы про это.

Neymeha написал(а):
дело не в формате , а в кодеках ?



Сначало нужно убедиться в том, что хавъюв декодируется. Зайдите в Пуск-Программы - ffdshow - VFW configuration и на закладке Decoder поставьте libavcodec напротив Huffyuv.
ffdshow и Вегас должны быть одинаковобитные, т.е. ffdshow x86 + Vegas x86 либо ffdshow x64 + Vegas x64.

Neymeha написал(а):
в ргб подлагивает видео , с чем это может быть связано ?


Neymeha написал(а):
сохранил вегасом как ави , лаги пропали...



Уже знаешь, в чем получать видео на выходе из редактора и, что с ним делать. Но если система x86, то можно и в хавъюве выводить. Вот так: "Файл" -> "Создать как" - выберается "тип файла" - avi, шаблон - "Бес сжатия" -> "Настройка" -> "Видео" -> в "Формат видео" выбрать "ffdshow Video codec" из списка доступных энкодеров. Все. И да, ffdshow на данный момент уже должен быть настроен, как и написанно в статье.
Neymeha   User profile
  09.06.2010 18:52
спасибо за статью
вопрос:если следоваться 100% указаниям , отрезать кусочек , сохранить его в ави , дурной вегас его читать вовсе не хочет , даже полосу видео не заполняет , хотя пишет что проэкт был изменён , может можно как то в другом формате ухитриться сохранить что бы вегас прочёл , или дело не в формате , а в кодеках ? тогда в каких и как ?
---------
если делать в rgb он читает , но вот досада , почему то в ргб подлагивает видео , с чем это может быть связано ?
---------
странно сохранил вегасом как ави , лаги пропали , странно странно , может слишком сильное видео а вегас его ухудшил раз в 10 , хотя комп тоже до воли не слабый , ну буду пользоваться , спасибо
---------
и ещё может немножко не туда , но вы тут люди образованые , на выходе из вегаса , получаем видео размером , если это небольшой ролик скажем 3 минуты , 700-900 метров приблизительно , можно ли сжать такой ролик без потери качества ? ну или без хотябы ощутимой её потери , если да , то в чём и как ?
zmaster   User profile
  08.06.2010 10:51
Default Avatar
Еще актуальные вопросы?

FMSumkin написал(а):
Как выделить и сохранить нужный кусочек?


Клавиша "Home" - начало отрезка, клавиша "End" - кончало отрезка.

FMSumkin написал(а):
...105 секунд с начала фильма вылезли мне в 330Мб, то сколько же будет весить полутора часовой фильм?



Может и много. Дык зачем вам целиком весь фильм переводить в беспотерьные или несжатые форматы?

FMSumkin написал(а):
...чем нарезку подгонять и склеивать с музыкой? Надо что-то наподобие Adobe Primier Pro?



Нужен ведеоредактор. "Премьера" явно не для нас :) Попробуйте начать с Sony Vegas'a. Как пользовать видеоредакторы можете спросить у поисковика или почитать там:
http://www.akross.ru/index.cgi?sec=articles #Набор статей "в помощь начинающему клипмэйкеру". Самое оно.

FMSumkin написал(а):
как ужать подогнанный клип (в какой формат и с какими кодеками экспортировать) чтобы размер в разумных пределах лежал?



Прочтите статью "Кодирование АМВ с помощью AMVSimpleGUI 3.4".
FMSumkin   User profile
  02.06.2010 14:35
Default Avatar
Aggressor написал(а):
Теперь можно делать нарезку, не так сильно беспокоясь за свободное место. Успехов в творчестве!


Спасибо, статья очень хорошая! Всё зделал по Фрейду... тоесть по Агрессору.
Только у меня вот вопрос. Как VirtualDub'ом производить саму нарезку... Как выделить и сохранить нужный кусочек?
Так как первые 105 секунд с начала фильма вылезли мне в 330Мб, то сколько же будет весить полутора часовой фильм?

---------
И есчо 2 маленьких вопроса, с вашего позволения.
А потом чем нарезку подгонять и склеивать с музыкой? Надо что-то наподобие Adobe Primier Pro?
И как ужать подогнанный клип (в какой формат и с какими кодеками экспортировать) чтобы размер в разумных пределах лежал?
Girru   User profile
  06.05.2010 17:55
Default Avatar
Огромное спасибо!
zmaster   User profile
  21.04.2010 06:26
Default Avatar
Aggressor написал(а):

нюхни мыльца, приятель



Мдэ

Aggressor написал(а):

Подробнее об этом, а также многое другое будет в статье



Чтож, будет интересно почитать
Aggressor   User profile  Video channel
  20.04.2010 23:10
zmaster, я на конкурс статей напишу много букв, и часто задаваемые вопросы вниманием не обойду.
По поводу ресайза анаморфа: тут задача оставить хотя бы одну сторону без изменений. В случае уменьшения 480 мы фактически урежем себе честных пикселей, в случае растягивания 704 мы ничего не урежем, но добавим чуток мыльца (нюхни мыльца, приятель). С учётом того, что сверхчёткие линии обычно идут лёгкой лесенкой, и того, что клип при просмотре растянется на разрешение монитора, вариант 848х480 выглядит убедительнее. Подробнее об этом, а также многое другое будет в статье (рекламная пауза)
Akito&Agito   User profile
  20.04.2010 19:02
Default Avatar
спасибо
zmaster   User profile
  20.04.2010 20:49
Default Avatar
Aggressor написал(а):

Надо бы статью подредактировать на предмет необходимости кодека.



Может заодно и ЧАВО сделать? Вопросы у товарищей одни и теже восновном.

Про анаморф. Разве можно из 704x480 делать 848x480? Тогда уж и выбираем разрешение равное по горизонтали исходному или меньше.

...никогда не делайте ваш клип с бОльшим разрешением, чем разрешение исходника (исключение - анаморф... При анаморфе мы то же количество пикселов выстраиваем как захотим с помощью меты DAR/PAR, т.е. теже 720x480 только отображены как 1,78:1; а не 1,5:1. Высота и ширина рэсайзятся незовисимо, почему допустимо делать из 704 -> 768?
Aggressor   User profile  Video channel
  20.04.2010 18:06
Akito&Agito, http://ffdshow-tryout.sourceforge.net/download.php
Надо бы статью подредактировать на предмет необходимости кодека.
Akito&Agito   User profile
  20.04.2010 13:36
Default Avatar
помогите плиз всё делал по инструкции но не получается открыть mkv
файлы
вылетает ошибка "Avisynth open failure:
Cant't open D:\Ishodnik.mkv: 80040154
(D:\Ishodnik.avs, line 1)
DeiDzumi   User profile
  12.04.2010 13:45
огромное спасибо) статья оказалась очень полезной^____^
Aggressor   User profile  Video channel
  07.04.2010 23:34
zmaster, я восхищаюсь твоим терпением
Mers   User profile
  06.04.2010 12:37
zmaster, Спасибо за разъяснения.
zmaster   User profile
  06.04.2010 07:14
Default Avatar
Mers написал(а):

...что делает опция в дабе во время кодирования называется Processing thread priority?


Устанавливает приоритет процесса кодирования. Т. е. если одновременно работают даб с приоритетом highest(наивысший приоритет) и еще какое нибудь приложение, то большая часть ресурсов ПК будет тратиться на даб. Рекомендую выставлять значение idle(наименьший приоритет) - даб использует все свободные ресурсы и при этом тормозов ПК не будет(или будет меньше) если захочешь во время кодирования поделать на компьютере еще чегонить, но это может увеличить время кодирования.
Mers   User profile
  05.04.2010 19:26
zmaster написал(а):
С этим я помочь не могу :(


Все, разобрался, большое спасибо всем кто помогал!
Кстати хотел спросить, что делает опция в дабе во время кодирования называется Processing thread priority?
zmaster   User profile
  05.04.2010 17:37
Default Avatar
Mers написал(а):

...в дабе полос не было. Значит главное, чтобы в дабе их не было?



Да, именно так.

Mers написал(а):


В том то и дело, что в HuffYUV



С этим я помочь не могу :(
---------
Mers, а может проблемы и нет? Ты вырезал только нужные сцены или же весь эпизод перекодировал? Если весь эпизод закодил тогда все вполне ясно.
Mers   User profile
  05.04.2010 17:18
zmaster написал(а):
Если файл в RGB значит читай статью внимательней. Если в HuffYUV...


В том то и дело, что в HuffYUV

zmaster написал(а):
Резать надо не 2 пиксела, а сколько нужно. Чтоб небыло полос когда скрип в дабе открываешь, речь ведь о них или о полосах широкоформатного видео на 4:3 маниторе? ^^


А кстати, полосы были когда я в плеере видео открывал, уже перекодированное, в дабе полос не было. Значит главное, чтобы в дабе такого не происходило?
zmaster   User profile
  05.04.2010 16:45
Default Avatar
Mers написал(а):
полоски остались сверху и снизу, хоть и срезал по 2 пикселя каждую


Резать надо не 2 пиксела, а сколько нужно. Чтоб небыло полос когда скрип в дабе открываешь, речь ведь о них или о полосах широкоформатного видео на 4:3 маниторе? ^^
Mers написал(а):
Видео файл получился слишком большой 11 ГБ


Если файл в RGB значит читай статью внимательней. Если в HuffYUV...
Mers   User profile
  05.04.2010 13:50
Видео файл получился слишком большой 11 ГБ и полоски остались сверху и снизу, хоть и срезал по 2 пикселя каждую, даже не видно, что хоть сколько-нибудь вырезано. Хотя сделал через fast recompress в дабе и ffdshow поставил как в статье говорилось с VFW интерфейсом. Как разобраться с этими проблемами? Может я неправильно как-то перекодировал видео файл, нажал в дабе file->Save as AVI... А до этого Compression-> ffdshow video codec выбрал с настройками как в статье. Или нужно что-то другое нажимать для перекодирования?


 Случайная цитата