1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Всё, что вы хотели знать о работе с видео на компе, но поленились.

Автор: Goblinit · 21 янв 2012 · ·
  1. Предупреждаю, это чисто технический псто! Периодически будет подвергаться правке. Цель написания самообразовательная. На всеобъемлемость не потяну, но тем, кто всё же решится, возможно, будет что-то из этого в новинку, а, возможно, будет и чем дополнить/исправить, за что был бы признателен. Итак...

    Если вы сделали пару видео-клипов с красивыми переходами в мувимэйкере или Ulead Video Studio и решили, что "понимаете в цифровом микшировании видео и аудио" - вас, возможно, ожидает что-то новое. Потому что вряд ли вы задумывались, чем вы кодируете свои видео-клипы и что за формат аудио вы в них пихаете. Скажем, если я попрошу назвать три-четыре самых известных видеоформата, вашим ответом скорее всего будет рандомная последовательность вроде: mpeg, avi, mov, 3gp...
    Так вот, это неверно :yes: То, что сейчас я перечислил - это, на самом деле, медиа-контейнеры.

    Пойдём далее. Как вы думаете, что представляет из себя Windows Media Player (далее - WMP) в winxp и выше? Вы можете смеяться, но на 90% это - графопостроитель. Остальные 10% приходятся на разные функции вроде рипания дисков и трансляции веб-контента через инет.



    Туманно? Давайте тогда по порядку. Сначала поговорим о том, как же происходит процесс декодирования видео.
    по ссылкам в тексте можно в принципе не ходить, если вам глубоко наплевать на детали, о которых я умолчу.

    Значит, начнём с медиа-контейнеров. На примере AVI.
    Итак, что же такое медиа-контейнер? Это файло, внутри которого может содержаться несколько потоков аудио и видео. Как правило, видео-поток там один, а вот аудио-потоков может быть несколько - это связано с тем, что, например, у фильма может быть несколько языковых дорожек. Однако, может быть и несколько видео-потоков. Например, у фильма могут быть субтитры, упакованные в контейнер отдельным видео-потоком.
    Итак, чтобы узнать, что же у нас в контейнере, нам нужен так называемый сплиттер, который знает, как вскрыть этот контейнер. Например, для AVI в винде уже есть сплиттер - его отдельно качать не нужно.
    Сплиттер вскрыл контейнер. Внутри оказались видео-поток MPEG-1, закодированный DivX'ом и аудио-поток MPEG-1, закодированный Fraunhofer MP3 Codec'ом.
    Прекрасно. Откуда мы это узнали? Всё "просто": у каждого потока, что сплиттер нам вытащил, есть свой FOURCC. Это нечто вроде идентификатора формата, с помощью которого был закодирован этот поток. Медиа-плеер однако об этом умолчит.
    С другой стороны, поток может и не быть закодированным (что редкость, но встречается). В таком случае, что из себя представляет поток можно понять по его HEX-заголовку. Чаще всего незакодированное аудио - это PCM AUDIO, а видео.... хрен знает, я не встречал, но навскидку - RAW. Но об этом не будем :yes:

    Итого, у нас есть видео и аудио, но они закодированны. Тут многие скажут: нам нужны кодеки! Это, конечно, верно, но, позвольте немного истории для общего развития...


    Давным-давно смотреть видео на компе было возможно только через специальную программу (игру), которая умела это видео декодировать. Никаких общепринятых интерфейсов не было. И вот в Apple придумали способ просматривать видео на компе. Этот способ назвали QuickTime. Ну, в майкрософт не дураки сидят - они быстренько подсуетились и придумали свой интерфейс для проигрывания видео - Video for Windows (VfW). Так в винде и появились чудесные кодеки - программы, использующие интерфейс VfW для работы с видео - кодинг/декодинг. Так, чтобы раскодировать видео в формате DivX нам нужно было просто установить DivX decoder.
    Что касается аудио - тут был разработан интерфейс ACM. Принцип тот же: ставим кодек, всё играется.
    Однако через пару лет набрал популярность перспективный DirectX, вышел WinXP и интерфейсы VfW и ACM оставили как они есть и придумали новый единый - DirectShow (DS). Теперь, чтобы раскодировать/закодировать видео/аудио нам нужны уже DS-фильтры. Причём, бывает и такое, что для кодинга - отдельный фильтр, для декодинга - другой. Однако, это не означает, что VfW и ACM больше не работают. Правило такое:
    Если для нужного формата нет DS-фильтра, используется кодек. Если и кодека нет - ашипка!

    Итак, теперь мы выяснили, как в общем случае происходит декодирование медиа-контейнера:
    1. Плеер распознаёт контейнер и подставляет ему соответствующий сплиттер.
    2. Сплиттер вытаскивает все потоки, что есть в контейнере.
    3. Плеер распознаёт форматы потоков и подставляет им соответствующие декодеры (DS-фильтры или кодеки).

    Перейдём к практике. Вот пихаете вы медиа-контейнер AVI в WMP. Что происходит? Всё просто: плеер, начинает строить график декодирования. Выглядит это примерно так:
    [​IMG]

    Что мы видим здесь? А видим мы, что реально файл хоть и называется .avi, но это вовсе не контейнер AVI, а контейнер MPEG-1 - да, переименовывать файлы никто не запрещает ;) Итак, внутри контейнера у нас есть потоки видео и аудио, к ним подставляются соответствующие фильтры (в данном контексте - декодеры) и раскодированные потоки отправляются на соответствующие девайсы для воспроизведения.

    Вывод: WMP ничего не декодирует. Он только позволяет нам перемещаться между сэмплами/кадрами в потоке.
    Теперь о том, чего нет в WMP. Cитуация: у нас на компе установлено два DS-фильтра или кодека для одного и того же формата. Типичный случай: XviD и DivX. Так вот, открыл я в WMP плохого качества видео, закодированное DivX'ом и меня не устраивает функция удаления блочности в кадрах, которую использует DivX-декодер. Ну я и хочу, чтобы WMP декодировал это видео не DivX'ом, а XviD'ом, который делает это лучше (!просто для примера!). И что же мне делать? А ничего - WMP не позволяет настроить приоритет декодеров. Более того, в интерфейсе WMP сегодня до сих пор нельзя открыть список всех установленных фильтров, чтобы попасть в их конфигурационные диалоги и настроить эти фильтры. А нужно что-то вот такое:
    [​IMG]


    В завершение позвольте пару слов о кодек-паках.
    Несмотря на моральное и техническое устаревание кодеков, они по-прежнему собираются. Но, если раньше это была огромная солянка кодеков и сплиттеров, то сегодня большинство из них уже содержит основным компонентом ffdshow.
    Что это? Это бесплатный универсальный DirectShow кодер/декодер, поддерживающий великое множество самых популярных на сегодня форматов. Состоит из:
    1. Фильтр аудио
      [​IMG]
      После установки все самые популярные аудиоформаты можно декодировать им - больше никаких фильтров или кодеков не нужно. Вдовесок куча фильтров для пост-обработки вроде нормализации звука, микшер каналов и громкости, шумоподваление, эквалайзер и т.п. Также есть декодер Dolby и OSD (On-Screen Display - кому надо, тот знает зачем это).

    2. Фильтр видео
      [​IMG]
      Аналогично, после установки все самые популярные видеоформаты можно декодировать им - больше никаких фильтров или кодеков не нужно. Вдовесок куча фильтров для пост-обработки вроде деинтерлейсинга, деблокинга, регулировки цвета, обрезка, субтитры, масштабирование видео и прочее. Также есть граббер экрана и OSD.

    3. Encoder для кодирования видео.
      [​IMG]
      XviD и прочее популярное он умеет кодировать сам, без установки соответствующего кодера. Причём поддерживаются все самые популярные методы, в том числе и в два прохода! И всё это - бесплатно, чёрт побери!!!

    В общем, это один из самых мощных GNU-проектов, что я когда-либо встречал.

    Теперь о минусах из личного опыта:
    • К сожалению, хоть ffdshow и умеет декодировать FLAC, но вот вытащить его из FLAC-container'а он не умеет - нужен отдельный сплиттер :(
    • Интерфейс частично переведён на русский, но очень коряво - лучше пользуйте английский.
    • Последний стабильный билд - 2010 года, но проект совсем не загнулся. Однако при тестировании этого билда у меня на Win7 в установщике есть проблемы с кодировкой, так что ставьте последний с SVNа! (тут моя благодарность destroyer :rolleyes:)
    • Практически полное отсутствие документации, без которой порой очень сложно понять, на что влияют те или иные настройки фильтра или кодера.



    Такие дела. Спонсор трансляции - википедия.
    Если вам тоже кажется, что вас переполняют знания, вам срочно нужно поддержать спонсора!


    P.S.: Далее планирую написать о непосредственно кодировании. Возможно, это даже будет новая запись....

Комментарии

  1. Goblinit
    ммм... Первая ласточка... надо же, даже до сих пор актуально ведь))

    Чёрт, точно, ведь о кодировании видео так и не написал. Раздолбай..
  2. INHELLER
    О! На этот раз работает нормально. Нойса чуть меньше, но он есть в больших количествах. На этот раз mp4.
  3. INHELLER
    Не уверен, что будет много чего описывать. Впервые заметил нойс (в стиле фильтра фотошопа, а не в духе слабого битрейта) в Полтергейсте. Когда начал приглядываться и к другим фильмам, там тоже начал замечать. Обычно на однотонных поверхностях (так как он достаточно слабый). В Эквилибриуме он оказался весьма сильным.
    Странно, что не слышал о его наличии в книгах по рендерингу.
  4. Goblinit
    Отпиши потом обязательно, интересно жеж!
  5. INHELLER
    Goblinit > Пасибо. Хотя... сейчас качаю другую версию. Посмотрим с ней как будет (за одно и нойс проверю).
  6. Goblinit
    А, ну... был один проект. Это поможет, если дело в telecine... правда, проект уже несколько лет как загнулся, но на XP может и работает ещё, на Win7 вряд ли заработает. ДА даже, если дело не в telecine, всё равно это может помочь. Почитай документацию к нему - интересно.
  7. INHELLER
    Goblinit
    Значит дело именно в камерах.

    Мне бы как оно лечится.)
  8. Goblinit
    Нойс в фильмах может быть как из-за камер (так снято), так и из-за плохого декодера формата. Последнее лечится установкой альтернативного декодера/открытия в другом плеере, имеющем свой декодер.
    Причиной рассинхронизации звука и видео в фильме может быть недостаточно мощный процессор/видеокарта, а также плохая звуковая карта (что реже). Но чаще рассинхронизация звука и видео происходит из-за проигрывания на компе фильмов видео-стандарта NTSC. Это долгая история, но, если нужно, могу и рассказать (или гугли telecine).
  9. INHELLER
    И в догонку: может быть рассинхрон звука и видео из-за тормозов?
  10. INHELLER
    Кто-нибудь в курсе: Нойс в фильмах из-за камер, или видео-форматов?
Чтобы оставить комментарий просто зарегистрируйтесь и станьте участником!
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление