Video rip. Часть 3. Сжимаем и запаковываем

Содержание


  1. Подготовка DVD
    1. vStrip
    2. DGMPGDec

  2. Обработка видео
    1. Что такое interlace и с чем его едят
    2. Как определить что у нас: progressive, interlaced или telecined?
    3. Избавление от обычной чересстрочности (deinterlace)
    4. IVTC

  3. Сжимаем и запаковываем


Последняя статья их серии «Video rip». Мне даже немного грустно, что всё закончилось, но я, наконец-то закрыл гештальт и теперь мне не будут сниться сны про то, как хабралюди просят меня завершить начатое.

image

Сегодня мы узнаем как лучше всего сжимать, в какой формат, какой контейнер использовать и какими утилитами. Эта часть будет самой простой и в какой-то мере общеобразовательной.

Итак, для начала немного определимся с терминами.

Контейнер — это такая штука, куда мы можем положить видео и/или аудио, которое сжато каким-то алгоритмом. Примеры популярных контейнеров — AVI, MKV, MP4, OGM. В одном контейнере могут лежать потоки разных форматов.

Алгоритм (формат) сжатия — алгоритм которым сжимается видео или аудио, которое потом будет помещено в контейнер.
Примеры форматов видеокомпрессии:
— MPEG-4 AVC [он же H.264] (реализации кодеров: x264, Apple H.264, Videosoft H.264, Elecard H.264, Intel IPP H.264, MainConcept H.264 и др.);
— MPEG-4 ASP (реализации кодеров: DivX, XviD, libavcodec и др.);
— Ogg Theora (реализация кодера: libtheora).
Примеры форматов аудиокомпрессии:
— MPEG Layer-3 [aka MP3] (реализации кодеров: LAME, Fraunhofer IIS MPEG Layer-3 Audio и др.);
— MPEG-4 AAC (реализации кодеров: Apple AAC, FAAC и др.);
— AC3 [aka Dolby Digital, A/52] (реализации кодеров: liba52 др.);
— Ogg Vorbis (libvorbis).

Некоторые потоки нельзя положить в некоторые контейнеры. Например, без различного рода ухищрений, вам не получится засунуть H.264 в AVI. Вот, например, в матрёшку (MKV) можно засунуть практически всё.

Сжатие

Я рекомендую для сжатия видеопотока всегда использовать компрессию H.264. В качестве конкретной реализации H.264-кодера я выбрал опенсорсный x264. Те, кто говорят: «Вот HD-видео надо им сжимать только, а вот остальное не надо, хватит и XviD», — я считаю, в корне неправы.

H.264 по сравнению с MPEG-4 ASP (DivX/XviD) — это стандарт компрессии следующего поколения. Конкретно x264 имеет кучу, просто тонну настроек, которые позволяют сжимать любое видео, очень тонко регулируя необходимые для декодирования и кодирования аппаратные мощности. Можно так выставить настройки, что одно и то же видео может тормозить, а может и нет.

Может это будет звучать дерзко, но XviD, DivX и иже с ними — умерли, оставьте их для обратной совместимости, но не надо ими больше ничего сжимать.

Для кодирования я рекомендую MeGUI. Если вы читали предыдущие части, то, наверняка, скачали его себе. Описывать как в нём работать, думаю, смысла нет. При желании легко найти мануалы на русском, да там даже и без мануалов всё понятно. Указали входной файл, указали выходной, выбрали профиль кодирования, которых в комплекте полно и нажали на кнопку.

Другое дело, если вам захотелось тонко отрегулировать настройки. Вообще, я хотел сделать по ним отдельную статью, но в комментариях подкинули ссылку, где некто очень хорошо описывает все параметры H.264. Пользуйтесь. Часть 1. Часть 2. Часть 3. Часть 4. Часть 5.

Контейнер

Сейчас популярны три типа контейнеров: AVI, MKV и MP4. Если первый, надеюсь, скоро умрёт, то вот последние два себя очень хорошо показали.

Для утрамбовывания контента в MP4 применяют программу MP4Box, к которой есть неплохой фронтенд Yamb. Как пользоваться Yamb описывать даже стыдно, там всё понятно и так, даже если бы к кнопкам не делали подписи. :)

Для MKV применяется mkvtoolnix. Как ей пользоваться я тоже писать не собирался, но в предыдущей части обещал показать как пользоваться временными отметками, которые генерирует TIVTC. Да и картинка нужна, а то что-то посты без картинок в последнее время у меня совсем.

Там где стоит красная стрелка, нужно указать путь к файлу, который сгенерирует TIVTC.

image

А ещё, у матрёшки есть одна классная фишка. Предположим у вас анаморфное видео. Это такое, которое на DVD хранится в разрешении, например, 720x480, но при выводе растягивается плеером до соотношения 16:9. Те кто кодирует, часто, по недостатку знаний применяют фильтры для изменения размера кадра. Но это не нужно.

Лучше всего закодировать видео в том разрешении, в котором оно хранится на DVD, а, затем, в свойствах матрёшки, при сборке результирующего видеофайла, указать требуемое соотношение или разрешение.

Хорошие плееры, которые поддерживают MKV автоматически растянут видео. Причём, если плеер действительно хороший, то в настройках можно выбрать алгоритм по которому будет производиться resize.

Это гораздо лучше, чем корёжить видео на этапе кодирования.

Делается это вот так.

image

На этом, пожалуй всё. До новых встреч! (:

В тексте присутствуют правки от mvgolubev
+27
24 марта 2010, 11:34
107
asfd 39,9

комментарии (51)

+1
pvasili #
Спасибо.
А почему про виртуал дуб забыли?
Как к Адобовскому конвертеру относитесь?
+1
Okloks #
VirtualDub умеет только AVI. Уж лучше VirtualDubMod. Хоть но он и устарел, но выполняет свою работу хорошо.
0
asfd #
В общем да, но VirtualDubMod поддерживает ту же матрёшку на самом начальном уровне.
+1
z0rc #
0
asfd #
Адобовским конвертером не пользовался.
0
asfd #
Если только вы имеете в виду не тот который встроен в Premiere. Там он какой-то простенький очень.
0
pvasili #
Медиа Енкодер. Он не встроен, сейчас отдельно идет.
Там готовые песеты есть уже под все основные форматы.
Только цена комплекта, конечно…
0
mvgolubev #
А почему про виртуал дуб забыли?
VirtualDub, можно сказать, мёртв. Они изначально выбрали тупиковый путь развития. Дело в том, что VDub завязан на морально устаревший виндовый мультимедийный фрэймворк VfW (Video for Windows), т.е. может работать только с VfW-кодеками для видео и с ACM-кодеками для аудио, даже более современный виндовый фреймворк DirectShow не поддерживает.
Из-за этого VirtualDub хоть и опенсорсный (GPL), но не кроссплатформенный, есть только под винду.

Его вполне хорошо заменил редактор AviDemux, который внешне сильно похож на VDub. AviDemux точно так же позволяет сделать простенькую обработку, монтаж, перепаковку, компрессию/рекомпрессию. При этом проект AviDemux опенсорсный, кроссплатформенный и даже развивается. Рекомендую вместо VirtualDub (и его модификаций типа NanDub, VirtualDubMod, VirtualDub-MPEG2 и др.) использовать именно AviDemux.

Ссылки:
avidemux.sourceforge.net/
mulder.dummwiedeutsch.de/home/?page=projects#avidemux
–1
farewell #
Я недавно нарыл чудесную софтину — AutoMKV

Не хочу сказать, что панацея, но спасает от 80% возни с разными тулзами.
0
Himari #
AR можно задавать и прямо в потоке H264. Про xvid точно не знаю, но в енкодере тоже есть что-то на эту тему.
0
gene4000 #
divx кодек позволяет задать соотношение сторон, правда не факт, что все плейеры это поддерживают. Софтинка MPEG4Modifier позволяет задавать соотношение на готовых файлах (правда перельет в новый, но без перекодирования)
+1
Okloks #
Солидарен с автором. MPEG-4 ASP кодеки (Divx, Xvid и т.д.) нужно забыть.
+4
ValdikSS #
Вы это 154 дня писали?
+1
alex93 #
попробуйте еще программулину XviD4PSP 5.0. Тоже достойна внимания.
+1
lany #
> Может это будет звучать дерзко, но XviD, DivX и иже с ними — умерли, оставьте их для обратной совместимости, но не надо ими больше ничего сжимать.

Если вы точно знаете, что смотреть будут только на компе, где легко установить декодер, то, конечно, H.264. Но не удивляйтесь, если потом люди, которые купили бытовой видео-проигрыватель за 4000 рублей, ругают вас за криворукость и жалуются, что у них ничего не показывает. В таких случаях предложение купить комп или более современный видео-проигрыватель звучат не очень уместно.
0
Aux #
С другой стороны мобильные устройства понимают исключительно h.263/h.264. И все нормальные проигрыватели тоже.
0
Aux #
Подскажите пожалуйста профану, как безболезненно (без перекодирования) перетащить h.264 поток со звуком из одного контейнера в другой? Например, у меня есть набор MOV файлов с h.264 внутри, а плейер понимает только MP4 и 3GP контейнеры. Какими тулзами воспользоваться?
0
pred8or #
В MeGUI делаеься. Tools / HD Streams extractor. По крайней мере, матрёшку понимает, насчёт MOV никогда не пробовал
0
ValdikSS #
Сначала размуксите MOV, затем замуксите в любой другой контейнер
0
asfd #
В дополнение к вышесказанному могу посоветовать ещё один метод. Если лень искать утилиту для «размуксивания» того или иного контейнера, то можно взять mkvtoolnix, засунуть туда файл, собрать из него матрёшку, а потом вытащить нужное при помощи mkvextractgui.

Но это из серии «бешеной собаке семь вёрст не крюк». :)

Вообще лучше гуглить по "_название_контейнера_ demux" и смотреть что предлагают.
0
gene4000 #
MOV разбирается утилитой MP4Cam2AVI, но не каждый(зависит от кодека, вроде h264 должен работать) и только в AVI
0
mvgolubev #
Подскажите пожалуйста профану, как безболезненно (без перекодирования) перетащить h.264 поток со звуком из одного контейнера в другой? Например, у меня есть набор MOV файлов с h.264 внутри, а плейер понимает только MP4 и 3GP контейнеры. Какими тулзами воспользоваться?
Учитывая историческую и структурную близость контейнеров MP4 и MOV, я бы для начала тупо попробовал переименовать файлы *.MOV в *.MP4, может быть демуксер вашего плеера их схавает и без перепаковки. Звучит, может, и странно, но я это говорю вполне серьёзно.

А что касается перепаковки без рекомпрессии аудио/видео-потоков из MOV-контейнера в MP4-контейнер, то это делается элементарно.

Например, так:
ffmpeg -i input.mov -vcodec copy -acodec copy output.mp4
Билды ffmpeg под win32:
sourceforge.net/projects/mplayer-win32/
www.paehl.com/open_source/?Convert_Tools:FFMPEG
tripp.arrozcru.org/
ffmpeg.arrozcru.org/builds/
ffdshow.faireal.net/mirror/ffmpeg/

Или так:
mencoder input.mov -o output.mp4 -ovc copy -oac copy -of lavf -lavfopts format=mp4
Билды mplayer/mencoder под win32:
sourceforge.net/projects/mplayer-win32/
www.paehl.com/open_source/?Convert_Tools:MPLAYER_MENCODER
kovensky.project357.com/

Также эту перепаковку можно сделать с помощью AviDemux или mp4box.
AviDemux;
— mp4box (из проекта GPAC)
билд mp4box под win32: MP4Box
GUI-фронтенд для mp4box под win32: YAMB.
_____
* Заметьте, все предлагаемые варианты кроссплатформенные, т.е. могут быть реализованы как под Windows, так под Linux или MacOS X.
0
pred8or #
Стоит упомянуть, что используя mp4box тоже можно указать соотношение сторон, типа

mp4box.exe" -add ".\file.h264:fps=25.0:par=16:9" -add ".\file.m4a#trackID=1:lang=Russian" -tmp "." -new ".\file.mp4"


А вот в MeGUI соответствующей возможности не нашёл
0
predtech #
Мне очень нравится программа Avidemux. Работает как под Виндой, так и под Linux (в том числе из коммандной строки). Имеет неплохой набор опций редактирования и фильтров. Бесплатна
0
e0f #
Нашёлся бы добрый человек, написал бы по данной теме и для программ в Mac OS X.
0
mvgolubev #
Вот отличные программы: ffmpeg, mencoder, avidemux, vlc, mplayer.
Все опенсорсные и кроссплатформенные. Выполняют всё, что касается перекодирования аудио/видео и перепаковки медиаконтейнеров.
Все они есть в том числе и под MacOS X.
0
q0p #
пожалуйста, напишите статью о том как можно записывать видео через IPTV в VLC (или подскажите программу получше).
0
asfd #
Таким я ещё не занимался. :)
0
predtech #
Могу только для линукса подсказать mplayer
Формат команды для сохранения потока выглядит примерно так:

mplayer -dumpstream -dumpfile fileYouWantToSaveStreamTo.wmv mms://stream-address.com/stream-name
0
q0p #
спасибо, я вин-юзер.
пытался недавно убунту поставить, но не вышло… :(
0
mvgolubev #
MPlayer — он кроссплатформенный. Есть уже готовые сборки и под win32:
sourceforge.net/projects/mplayer-ww/
sourceforge.net/projects/mplayer-win32/
sourceforge.net/projects/smplayer/
mulder.dummwiedeutsch.de/home/?page=projects#mplayer
kovensky.project357.com/

Кроме MPlayer советую взглянуть на VLC media player. Он тоже кроссплатформенный и весьма функциональный.
0
gene4000 #
Простите не удержался

> Например, без различного рода ухищрений, вам не получится засунуть H.264 в AVI

Есть приятная такой хороший софт: x264vfw — наиобычнейший «кодек» для Windows.
0
asfd #
Эту штуку я и имел в виду под ухищрениями. Нехорошо это её использовать.
–1
gene4000 #
Почему? Мне очень понравилось, потому что виндо-плейеры нормально работают с avi, и с установленным x264vfw все показывает чудесно. Еще бы где-то взять AACvfw и вообще будет замечательно :) Хотя действительно, каждому свое: mkv и mp4 вроде как лучше приспособлены, но я пока не видел фильмов, где никак нельзя было обойтись avi контейнером (несколько звуковых, даже видеодорожек туда засунуть можно, титры тоже впихиваются), хотя есть ограничения на размер, но в целом в полтора гигабайт почти всегда можно уложить фильм.
–2
asfd #
Потому что дайте AVI умереть спокойно вместе с ASP кодеками. Не надо больше мучать его трупик.
–1
gene4000 #
Почему? Огромное количество программ и устройств его поддерживают. AVI это максимальная совместимость. Пусть внутри он не такой красивый как хотелось бы, но он работает. Работает уже много лет. Да, нужно развивать это направление. Но ситуация выходит из под контроля, кроме собственно кодеков появилась куча контейнеров: avi, wmv, asf, mpg, mov, ogm, mkv, mp4, 3gp, удивительная отрыжка flv, узкоспециализированные bik, куда-то наконец исчезнувший rm. Причина их появления почти всегда очевидна: avi — это «проприетарный» формат. Но он очень много лет был основным для видео (лет десять как минимум). Чем он так плох, что нужно срочно от него избавляться? Что такого ужасного в нем, как он продержался столько лет, куда девать множество отличнейших программ, которые с ним работали (VirtualDub в частности)?
0
AMCDM #
Эээ а что это за ограничения на размер avi?
На работе у меня есть файлы avi порядка 40Гб
0
gene4000 #
Просто первая ссылка, которая попалась: www.gibor.com.ua/avi.htm — там только в общих чертах написано, но самое важное есть. В свое время (давно уже дело было) пришлось прикручивать к AVI штуку, которую назвали OpenDML.

На данный момент есть проблема у некоторых «divx-плейеров» (были модными пару лет назад), не знаю почему, но некоторые модели останавливаются после воспроизведение 1 GB (две трети фильма примерно). Не уверен, что связано именно с форматом AVI, но других причин вроде как болььше нет.

0
AMCDM #
Так OpenDML-ю уже больше 10 лет!
Это какие-то шибко китайские «divx-плейеры» видимо, которые собраны на чипах со свалки электроники.
0
gene4000 #
Плейеры китайские. Это правда. Но марки известные (хотя все сделаны из одних запчастей): BBK и Хундай, например, возрастом 3-4 года.
0
gene4000 #
По работе тоже встречался с большими AVI (13 ГБ = 1 час DV видео), тоже удивился узнав, что все еще встречаются старые AVI файлы. В VirtualDub до сих пор есть возможность сохранить в «старый AVI».
0
AMCDM #
У нас ПТС пишет в файлы raw dv по 2гб -)
Но в комплекте есть конвертер, который собирает из них opendml avi любого размера)
0
gene4000 #
Значит ОНИ еще существуют :)
Наверное действительно те AVI проще устроены и их удобней/проще создавать
0
AMCDM #
Я думаю, это для совместимости со всяким старым софтом/железками)
«In the late 1990s through early 2000s, most professional-level DV software, including non-linear editing programs, only supported Type 1» с Вики
0
mvgolubev #
Например, без различного рода ухищрений, вам не получится засунуть H.264 в AVI
Есть приятная такой хороший софт: x264vfw — наиобычнейший «кодек» для Windows.
Дело в том, что контейнер AVI по своей логике не поддерживает нормально B-frames из AVC-потока. Даже если вы впихнёте видеопоток H.264 в AVI-контейнер, то у вас будут трудности и глюки при его воспроизведении.
Поэтому не пытайтесь в AVI впихнуть невпихуемое. Как говорится, Кесарю — кесарево, т.е. оставьте AVC-потоки для MKV и MP4 контейнеров.
0
gene4000 #
Наверное x264vfw не использует эти самые B-frames, потому что глюков я не наблюдаю.
–1
gene4000 #
В свое время наткнулся на отличную программу XMPEG, которая не являлась набором кучи утилит, не предлагала 100%-бездумный автоматизм. Немного неочевидная в плане интерфейса, но с достаточными возможностями по переводу DVD Video в какой-либо «компьютерный» формат, с поддержкой нужных кодеков и двойного прохода, с обрезкой и масштабированием, с достаточным функционалом именно для работы с DVD Video. Можно было сделать все в одной программе, без привлечения дополнительного софта. Как жаль, что разработчик прекратил ее совершенствовать. А проблемки там остались.
+3
eatart #
dvd decryptor и autogk мне достаточно. но последнее время заниматься этим незачем, все можно скачать в любом формате.
иногда приходится лишь древние vhs перегонять в avi или dvd с них делать тем же autogk и nero vision для dvd
0
gene4000 #
Кажется в этом топике нельзя упоминать другие программы

А вы все-таки попробуйте XMPEG, делает то же, что связка DVD Decryptor + Auto GordianKnot, только быстрее и место на диске под dvd образ не нужно занимать.
0
mvgolubev #
Примеры — H.264/AVC, XviD, DivX, Theora.
Почему вы ставите в один ряд форматы/стандарты видеокомпрессии и конкретные реализации кодеков определённого формата/стандарта? По-моему, это принципиально неверно.
Если пишете про стандарт MPEG-4 AVC (H.264), то в один ряд с ним нужно ставить стандарт MPEG-4 ASP, Ogg Theora. А если пишете про конкретные реализации видеокодеров стандарта MPEG-4 ASP (DivX, XviD), то в один ряд с ними нужно ставить и конкретные реализации кодеров H.264 и Theora: x264, Apple H.264 Codec, Ateme H.264 Codec, MainConcept H.264 Codec, Videosoft H.264 Codec, Dicas H.264 Codec, Elecard H.264 Codec, Intel IPP H.264 Codec, AMD H.264 Codec, Artemis H.264 Codec, VSS H.264 Codec, Sorenson H.264 Codec, libavcodec, libtheora и др.
Т.е. в один ряд нужно ставить понятия одной категории, а не мешать в одну кучу тёплое и мягкое.
H.264 это кодек следующего поколения, который имеет кучу, просто тонну настроек
Ещё раз повторю H.264 — это не кодек, а стандарт. Существует множество конкретных кодеров (см. выше), основанных на этом стандарте, и про обилие настроек нужно писать применительно к конкретным кодерам, но никак не применительно к самому стандарту. Если пишете про настройки кодера x264, то так прямо и пишите, явно указывая имя конкретного кодера, а не экстраполируйте это на все кодеры стандарта H.264.
0
asfd #
А вы напишите как мне правильно переписать эти два предложения и я их заменю. (:

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.