Help - Search - Member List - Calendar
Full Version: Сжатие видеоматериала кодеком wm9
Форум Империи Чёрных Клинков > Технический отдел > Архив форума 2005-2007 > Неигровой форум (архив за 2005-2007)
†Crow†
Хотелось бы поделиться собственным опытом сжатия видеоданных. А может хватит смотреть на пиксельное движение, порождённое DivX'ом, Xvid'ом или же mpg'ом?.. Кто-то даже скажет, что лучше них никто компактно сжимать и не умеет... Ничего подобного! Умеет, да ещё как! Вот например, некоторое время назад сам лично благополучно сжал DVD диск (концерт Nightwish – From Wishes to Ethernity, кому интересно, просто диск какой-то дурной попался, а любимый концертник хочется смотреть без припарок) до размеров... дешевой 700 mb болванки, а вернее 654 mb - средний битрей был 1000 kbps, представляю какое бы качество получилось бы у какого-нить DivX'а, если учесть что концерт просто изобилует различными спецэффектами и соответственно местами где требуется запредельно большой постоянный битрейт, после первой минуты даже смотреть бы, наверное, расхотелось и потом звук 192 kbps (wma) vbr , а звук как на DVD (и это не предел, не так давно также сжимал фильм с DVD на 700 меговый в домашнюю коллекцию, со звуком 128 kbps и ничего, даже музыка без искажений). В чём здесь секрет или подвох, спросите вы? И будете правы, чудес в сжатии не бывает, а вот подойти к сжатию "по-умному", иногда очень даже возможно (если не всегда) - единственный шанс получить качество, сопряженное с экономией места на винте... При этом вся хитрость заключается лишь в одном - переменный битрейт. Насколько мне известно (на сегодняшний день smile.gif ) - ДА, у divx и прочик кодеков тоже есть vbr, но качество их "сканера" скачков битрейта работает в любом случае в n раз хуже wm9.

Что нужно для сжатия?
Для сжатия обычной avi'шки или mpg'а (первого) нужно всего 2 вещи: прога VirtualDub (её в нете можно легко найти) и кодек wm9 (ссылка внизу), внешний пакет (это несколько сложнее, даже в "K-lite codec pack" есть только кодек де-кодирования). Вот и всё, осталось только дать примерные настройки кодека для хорошего результата: битрейт ("One-pass CBR" - с постоянным битрейтом) - 1000000 бит/c, "Quality level" (уровень качества) - 100, интервал ключевого кадра ("Key frame interval") - 10000 милисекунд, и наконец бегунок отвечающий за скорость/качество процесса - "Performance", установите его на "Better quality" для получения наилучшего результата или же на "Faster" для наивысшей скорости. Стоит отметить, что в отличие от того же DivX, с подобной основной настройкой скорости/качества сжатия, разница между кодеком wm достаточно большая, т.к. результаты сжатия при настройках "Fastest" и "Best Quality" не будут столько критично разниться с DivX, зато скорость сжатия примет достаточно приемлемые "обороты"...

Об интервале ключевого кадра: ключевые кадры - это кадры, на которых сохраняется полностью всё изображение, а на дельта кадрах только изменения. Поэтому если сжимать видеофрагмент с малым "максимальным интервалом ключевого кадра" то результат будет ужасным. Почему? Всё очень просто: ключевые кадры весят значительно больше чем дельта, а потому при ограниченном битрейте и высоком разрешении они будут сжиматься с наибольшими повреждениями. Поэтому меньше 8 секунд ставить не рекомендую, я бы даже сказал: чем больше, тем лучше.

О битрейте. Постоянный битрейт - использовать не рекомендую (только для сжатия под КПК, с простым для раскодирования алгоритмом). Ибо разница качества между сжатием другими кодеками есть, но незначительная.


Переменный битрейт: универсальное решение, сделать ролик маленьким, но качественным (!). Если нужно сжать ролик, например, для интернета (да и просто для хранения качественных видеофайлов) то это наилучшее решение, единственное "но" здесь в том что для проигрывания VBR потока требуется больше ресурсов компьютера и на слабых компьютерах видеофрагмент сжатый таким образом может погрязнуть в тормозах. Чтобы его использовать в Virtual Dub'е надо только в настройках кодека WMV9 выбрать "One-pass Quality VBR" и уровень качества "Quality Level" в интервале 1-100. Несколько удачнее смотриться настройка "Two-pass bit rate VBR", поскольку здесь можно самому выбрать подходящий средний битрейт и точно знать окончательный размер файла на основе среднего значения. Сначала, компьютер по заданному алгоритму анализирует видеофрагмент и всю собранную информацию записывает в файл, который надо указать в поле "Log file/First pass/" (перевод поля: "Файл статистики/Первый проход/"), затем когда анализ будет завершён нужно будет лишь снова открыть настройки кодека и уже выбрав в поле "Log file/Second pass/" (перевод: "Файл статистики/Второй проход/") полученный файл первого прохода и сохранить видеофайл. Несколько проще выглядит данная процедура в кодировщике Windows Media: там никакого файла выбирать не надо, достаточно просто вписать свой средний битрейт и всё...

О звуке: к сожалению, при пользовании VirtualDub'а звук сжать в формат wma vbr нельзя, поэтому здесь остаётся только "lame mp3".

Оцифровка DVD диска: если не считать авторских прав, которые вы можете нарушить при совершении сего акта (если конечно пытаться потом продавать извлечённый материал), то это также можно сделать в формат wm, кстати при этом можно сжать звук в формат wma. Надо лишь воспользоваться кодировщиком Windows Media, желательно версии 9. Также можно использовать VirtualDub_mpeg2, выложенный ниже. Примечание: несмотря на то, что эта прога имеет очень широкие возможности, она может открывать файлы с DVD диска (расширения *.vob) только по одному, поэтому:
а). придёться потом этой же прогой склеивать полученные файлы (иногда лучше использовать Nandub, он не дает лишних mb при склейке и иногда не даёт потерю синхронизации аудио/видео, ссылка дана ниже), хотя это и несложно и недолго;
б). в следствии первого пункта возможна потеря синхронности звука и картинки, хотя каждый из "*.vob"-ов сохраняется без проблем... Зато если использовать эту программу, то видео с dvd можно лишить "полосатого движения" (дольно часто встречаются DVD на которых при движении на экране появляются полосы - это из-за режима черезстрочной развертки, который сигнализирует, что DVD также предназначен для комфортного просмотра на TV, разумеется такая фигня только с пиратскими DVD), скажем если при сжатии применить фильтр "Resize" (достаточно уменьшить разрешение экрана на 150-200 точек в ширину и пропорциональное кол-во точек в высоту) с режимом "Lanczos3"+ фильтр "de-interlace". Также проблем с синхонностью можно избежать если на ходу не сжимать звук, а скажем оставлять оригинальный AC3 канал (надо использовать режим "Direct Stream Copy" в вкладке "звук" - прямопотоковое копирование).

Мой выбор: я предпочитаю использовать только VBR, на мой взгляд это самый разумный расход мегабайтов и на винте и на любом другом носителе, поскольку позволяет сохранять качество картинки и звука, тогда, когда нужно достаточно сильное сжатие (1000 кбит/с в сумме и ниже). Звук тоже лучше сохраняется с переменным битрейтом, однако не советую использовать vbr-mp3, он безобразно отслеживает те места где можно снизить битрейт, а где нельзя, скажем если вы выбрали средний битрейт 128, то качество будет не лучше чем у того же звукового файла с постоянным битрейтом в 128, по-моему при данном раскладе от него вообще нет никакой пользы. Другое дело two-pass wma9-vbr, сканирование и кодировка происходит с такой невообразимой точностью, что при среднем битрейте в 64 кбит/c, звук практически такой же, как при постоянном, но на 128 кбит/c, вывод - можно снизить размер файла без серьёзных повреждений в качестве (а иногда вообще без потерь, всё зависит от сложности звукового потока). Особенно выгодно такое сжатие в фильмах, ведь насколько всем известно в мире не существует (да и не существовало, насколько мне известно) такого фильма, чтобы резкое движение на экране происходило постоянно, да и вряд ли такое могло бы кому-то понравиться, скорее это бы жутко раздражало. А между тем кодек wm с переменным битрейтом очень хорошо использует любые паузы и спокойные моменты чтобы понизить размер потока, зато повышение произойдёт именно там, где движение значительно могло бы повредить картинку, где например при постоянном битрейте на экране была бы каша (hello divx! ). Теперь я уже совершенно спокойно отношусь к тому чтобы записать БЕЗ ПОТЕРЬ (это значит, что даже сидя рядом с экраном монитора вы не заметите абсолютно никакого пиксельного движения) какой-нибудь фильм себе в коллекцию на обычную «болвашку» в 700 mb. В зависимости от кол-ва спокойных и подвижных моментов фильм может быть продолжительностью от полутора до двух часов при разрешении 640x480, и если в фильме совсем мало подвижных моментов можно даже сжать 3-х часовой фильм в 700 метров, при том же разрешении. По моему, на фоне моря уродств принадлежащих divx'у смотрится весьма перспективно. Даже если и не откидывать пишущий DVD-ROM, то такое сжатие всегда выгодно - 5 фильмов на одном диске, без потерь...

Оцифровку (сжатие) с DVD я делаю следующим образом: сначала сжимаю через Virtual Dub_mpeg2 отдельно каждый файл (относящийся к одному фильму разумеется, места соприкосновения можно легко обнаружить и поставить метки) кодеком wm9 с переменным битрейтом, основаном на качестве 1-100, т.е на плавающем среднем битрейте, когда для каждой цифры от 1 до 100 характерен определённый диапазон скачков битрейта, выбрав ~98. Затем через Nandub или Virtual Dub mpeg2 (иногда один из них может повредить синхронность аудио и видео дорожек, избавиться от которой достаточно сложно, таже удобными посредством такой возможности dub'ом) склеиваю полученные куски фильма (не забыв поставить везде "Direct stream copy") и открываю полученный файлик, размер которого пока что не очень-то привлекателен, в Кодировщике Windows Media 9 (на сайте Майкрософт раздают бесплатно для пользователей лицензионной XP, под соблюдение лицензии, если у вас не лицензионная ОС, обращайтесь ко мне в лёгкую вышлю по почте, вести всего-то 10 mb). Далее рекомендую самостоятельно подсчитать битрейт для выходного файла (в зависимости от необходимого размера) по следующей формуле и желательно с обычным калькулятором (автоматизированные часто дают погрешности): "выходной размер файла (в mb)"x1024x8/"Длительность видеофрагмента в секундах"="общий битрейт потока". Теперь вычитаем из полученной цифры битрейт звука (48, 64, 80, 96, 128, 160 или же 192) и получаем средний битрейт картинки который и нужно ввести в настройках сжатия этой программы (Самое главное правильно выбрать кодек "переменная скорость" windows media 9 и звука, и видео. Битрейт звука советую выбирать следующим образом: для фильмов - 128 максимум (если вы хотите чтобы даже музыку было слышно без искажений, если же музыка не важна то можно хоть 48 поставить, и прибавить к битрейту видео разницу), для концертов и клипов - 192. Ах да, не забудьте предварительно проверить через VirtualDub_mpeg2 частоту кадров видеоряда и khz звука: наиболее часто встречающиеся значения частоты кадров - 24; 25; 29,97, частота звука (khz) - 44 и 48...
Быстро и просто, DVD->AVI: если влом париться с кодировщиком (Windows Media 9, он ещё и много времени жрётsmile.gif, то можно остановиться и на склейке извлечённых с vob'ов видеофрагментов, только кодировать эти vob' рекомендую в однопроходном vbr режиме с качеством 85(+-2), тогда результат будет достаточно компактным, чтобы запихать даже 2х часовой фильм на 700 mb, хотя такой вариант уже будет на +-300mb (для 700mb) непредсказуемым, потому что для каждой цифры столбика с качеством 1-100 характерен диапазон колебаний битрейта. Поэтому среднее значение будет меняться от случая к случаю... smile.gif Ещё можно воспользоваться прогой "Super DVD Ripper" в сочетании с только что приведённым способом (однопроходное сжатие с качеством "85"), кач-во звука в этой проге регулировать нельзя (по умолчанию: mp3-192kbps) зато НИКАКОЙ возни с vob'ами, всё содержимое видится прогой по фильмам/клипам, поэтому всё пройдёт быстро, главное не забыть поставить в настройках кодека wm9 максимальную скорость... Вот теперь всё.

Кодек "Microsoft_Windows_Media_Video_9" можно скачать ЗДЕСЬ [677 kb]
Архив с наилучшей версией программы VirtualDub можно скачать ЗДЕСЬ (редактирует почти всё, включая файлы с DVD + в архиве с программой уже имеются наиболее полезные плагины) [1,02 mb]
Архив программы Nandub, также набитый под завязку плагинами, находиться ЗДЕСЬ [891 kb]
Программа для сжатия видеоматериала с DVD или vob’ов с жесткого диска "Super DVD ripper"
Иногда автоматически обходит не очень сложную защиту даже лучше чем более специализированные программы по взлому лицензионных DVD...
ZIRUS
Статья подробная, всё описана, я более-менее понял. Будет нужно сжать что-нить то буду пробовать по этому методу. Спасибо.
†Crow†
Статья обновилась: теперь есть более быстрый и простой способ заюзать качественное сжатие в wm+mp3...
Еретик-13!!!
†Crow†, что за бред ты тут написал? где такую траву берёшь чтоб так колбасило?
†Crow†
QUOTE
†Crow†, что за бред ты тут написал? где такую траву берёшь чтоб так колбасило?

Такое ощущение, что обкурился ты... biggrin.gif
Если нет, то что конкретно по твоему мнению бред - не высказав ни одной мысли, при этом оскорбив человека, ты непременно вызовешь раздражение администратора форума... А может и желание тебя как-то наказать...

В статье многое переписал, т.к. обнаружил-таки пару-тройку нехороших моментов...
Еретик-13!!!
†Crow†!!!
твоя статья слишком длинная для своего назначения!!!
краткость сестра таланта!!!
†Crow†
QUOTE
краткость сестра таланта!!!
Давай, не умничай. Ты-то может и с 10 предложений понял как куда и чего, а другие могут не сообразить, особенно если они в первый раз слышат такие названия как Кодировщик Windows Media, Virtual Dub, всякие там битрейты и прочее...
smile.gif В конце концов, не интересно, не нужно - не читай. Я тебя что силком заставлял читать, и потом... это так долго, прочитать всего страницу)

Кстати, цели статьи как раз-таки полностью оправдывают её масштабы: Донести до как можно большего числа людей, что wm vbr - это грубо говоря хорошо и, что совсем рядом находится возможность сжимать данные без потерь куда-угодно, будь-то домашняя коллекция, или всемирная паутина.

Специально для тебя (если ты себя считаешь достаточно продвинутым в этой области), предлагаю укороченный вариант статьи:

Кодеки windows media video и audio, с переменным битрейтом способны сжимать качественно и компактно. Здесь речь пойдет о сжатии видеоматериала кодеком wmv. Итак, самый стабильный в плане получаемого качества результат можно получать, если сжимать по алгоритму "one-pass quality vbr" - или "однопроходное сжатие, с переменным битрейтом основанном на стабильном качестве результата". Есть ещё двухпроходное сжатие с зафиксированным средним битрейтом (размером видеопотока в секунду), в которое будет "вписан" какой-то видеофрагмент... Надо сказать в обоих случаях есть и "+" и "-" такого сжатия, хотя суть тут одна и довольно проста. В первом (one-pass vbr) типе сжатия, если вы всегда будете сжимать все свои видеоданные на одной цифре от 1-100, например на 98 - то все что вы будете сжимать, будет всегда качественно, если всего 10 - то всегда плохо. Тут же обнаруживается наподвластный нашему контролю момент: качество одно и то же, но ведь содержимое видеопотока может сильно разниться - от изобилия темных и медленных сцен, до постоянно сменяющих друг друга красочных пейзажей. Соответственно размер сжимаемого файла может быть разным в 10-ки раз на одной и той же цифре настройки сжатия. А у файла, сжатого с зафиксированным средним битрейтом другая проблема - при одном значении среднего размера секунды видео (битрейт), качество может сильно колебаться на видео разного содержания.

Чтобы сжимать ещё не сжатые или не сильно сжатые видеоданные кодеком wm, можно воспользоваться любой программой, понимающей кодеки, которые "прописываются" в систему. Я предпочитаю Virtual Dub, выбор за вами... Установив полную версию внешнего кодека wmv 9, Вы сможете сжимать видеоданные в формат wm из любого приложении поддерживающего сохранение видео в avi файлы.
Guest
Классная статья! надеюсь все будет просто ПУЧКОМ! я полгода ищу уже нормальный кодек для сжатия видео, но ни разу не натыкался на :P нормальный! если все будет окей то тебе большая благодарность!!!! (JOKER)
†Crow†
rolleyes.gif Хотел отметить, что после ряда объективных тестов, вынужден признать вышевысказанное мнение ошибочным.
Самый лучший кодек по качеству и скорости сжатия - Xvid. Именно по обоим пунктам, если применять VBR-режим. Самый качественный кодек по сжатию - H264.
Чуть позже напишу что к чему в подробностях...
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2012 Invision Power Services, Inc.