Thursday, 20/7/2017 | 10:28 UTC+4

В статье описаны современные стандарты представления видео и аудио информации, а также представлены их преимущества и недостатки. Проанализированы перспективы развития, а также освещены инструменты кодирования. После прочтения этой статьи вы сможете сделать выбор в пользу того или иного стандарта хранения ваших данных.
Я полагаю, что читатель знаком с понятиями аудиокодек и видеокодек, а также имеет представление о процессе кодирования как таковом.
Но на всякий случай напомню эти понятия:
Под Кодированием информации мы будем понимать процесс преобразования сигнала из формы, удобной для непосредственного использования информации, в форму, удобную для передачи, хранения или автоматической переработки.
Из этого определения в дальнейшем вытекают понятия аудио и видеокодирования.
Аудиокодек как программа это специализированное программное обеспечение, которое сжимает (производит компрессию) или разжимает (производит декомпрессию) цифровых звуковых данных в соответствии с файловым звуковым форматом или потоковым звуковым форматом. Задача аудиокодека как компрессора заключается в предоставлении аудио-сигнала с максимально возможным качеством/точностью и минимально возможным размером. Благодаря сжатию уменьшается объём пространства, требуемого для хранения аудиоданных, а также возможно снизить полосу пропускания канала, по которому передаются аудиоданные. Аудиокодеки представлены как динамические программные библиотеки, которые взаимодействуют с одним или несколькими аудио-плеерами, такими как QuickTime Player, MPC, WinampVLC media player, MPlayer или Windows Media Player.

Хочу немного остановится ибо не могу не упомянуть об одном качественном кодеке аудио с названием AAC, который входит в семейство MPEG4
Не смотря на засилие сейчас формата mp3 этот формат является лучше mp3 и вот почему:
1. Удаляются невоспринимаемые составляющие сигнала.
2. Удаляется избыточность в кодированном аудио сигнале.
3. Затем сигнал обрабатывается по методу MDCT согласно его сложности.
4. Добавляются коды коррекции внутренних ошибок.
5. Сигнал сохраняется или передаётся.

Аудио стандарт MPEG-4 не требует единственного или малого набора высокоэффективных схем компрессии, а скорее сложный набор для выполнения широкого круга операций от кодирования низкокачественной речи до высококачественного аудио и синтезирования музыки.

Семейство алгоритмов аудио кодирования MPEG-4 охватывает диапазон от кодирования низкокачественной речи (до 2 кбит/с) до высококачественного аудио (от 64 кбит/с на канал и выше).
AAC имеет частоту сэмплов от 8 Гц до 96 кГц и количество каналов от 1 до 48.
В отличие от гибридного набора фильтров MP3, AAC использует MDCT (Модифицированное Дискретное Косинусное Преобразование) вместе с увеличенным размером «окна» в 2048 пунктов. AAC более подходит для кодирования аудио с потоком сложных импульсов и прямоугольных сигналов, чем MP3.

AAC может динамически переключаться между длинами блоков MDCT от 2048 пунктов до 256.

Если происходит единственная или кратковременная смена, используется малое «окно» в 256 пунктов для лучшего разрешения.
По умолчанию используется большое 2048-пунктовое «окно» для улучшения эффективности кодирования.
Файлы закодированные кодеком AAC имеют следующие расширения

  • .m4a — незащищённый файл AAC
  • .m4b — файл AAC, поддерживающий закладки.  Используется для аудиокниг и подкастов.
  • .m4p — защищённый файл AAC.  Используется для защиты файла от копирования

Видеокодек — программа/алгоритм сжатия (то есть уменьшения размера) видеоданных (видеофайла, видеопотока). Кодек — определяет, каким образом можно «уменьшить» видеоконтент и, соответственно,  проиграть видео. Также возможно кодирование кроме видео и аудиоинформации, добавления субтитров, векторных эффектов итд.

Итак чтобы начать разговор о современных видео стандартах необходимо представить откуда у них растут ноги т.е. немного истории:
Итак современные видеостандарты принимаются организацией
MPEG(Motion Picture Experts Group — Экспертная группа по вопросам движущегося изображения)

На сегодняшний день эта организация стандартизировала следующие форматы сжатия:

  • MPEG-1: Исходный стандарт видео и аудио компрессии. Позднее использовался, как стандарт для Video CD, и включает в себя Layer 2 формат аудио сжатия.
  • MPEG-2: Включает транспортные, видео и аудио стандарты для широковещательного телевидения. Используется в цифровом телевидении ATSC, DVB и ISDB, цифровых спутниковых ТВ службах, таких как Dish Network, цифровом кабельном телевидении, и (с небольшими изменениями) в DVD.
  • MPEG-3: Изначально разрабатывался для HDTV, но от него отказались, когда обнаружилось, что MPEG-2 (с расширениями) вполне достаточно для HDTV. (Не стоит его путать с MP3, который на самом деле MPEG-1 Layer 3.)
  • MPEG-4: Расширяет MPEG-1 для поддержки видео/аудио «объектов», 3D контента, сжатия с низким битрейтом и DRM. В него включено несколько новых высоко эффективных видео стандартов (альтернатив MPEG-2), особо отметим:
  • o MPEG-4 Part 2 (ASP) и
  • o MPEG-4 Part 10 (или AVC, или H.264). MPEG-4 Part 10 может быть использован в HD DVD и Blu-Ray дисках.
  • MPEG-7: Формальная система для описания мультимедийного контента.
  • MPEG-21: MPEG описывает стандарт, как мультимедийная среда разработки.

Надеюсь это краткое описание прояснило вам области применения эти стандартов.
Я полагаю,что из краткого описания вам стало понятно,что на данный момент самым прогрессивным стандартом является H.264 или MPEG4 AVC о котором сейчас и пойдет речь

В данный момент на рынке видеокодеков представлены следушие кодеки,которые соответствуют стандарту MPEG4

  • DivX — кодек стандарта MPEG-4
  • x264 — H.264 (MPEG-4 part 10)
  • Xvid — кодек MPEG-4 part 2, совместимый с DivX.
  • FFmpeg-кодеки — кодеки в библиотеке libavcodec из проекта FFmpeg (FFV1, Snow, MPEG-1, MPEG-2, MPEG-4 part 2, MSMPEG-4, H.264, WMV2, SVQ3, MJPEG, HuffYUV, Indeo)
  • Lagarith — видеокодек без потерь.
  • Theora — основан на VP3, часть Ogg Project.
  • Dirac — основанный на вейвлетах кодек, созданный BBC.
  • Huffyuv — кодек без потерь от BenRG.

Что вас не удивило то что ваш любимый кодек входит в эту группу? )). Дальше будет гораздо интереснее и удивительнее.
Но тут у вас совершенно законно возникает вопрос, но ведь при проигрывании кино в моем любимом плеере файл имеет расширение .avi!
А вот на этот вопрос я отвечу, что avi является одним из контейнеров содержащими видео и аудио информацию, то есть контейнеру по сути дела все равно что вы в него помещаете будь это видео в форматах .mpg .mpeg4 .xvid .nodivx или звук в формате .mp3 .acc .wav главное дать ему инструмент(кодек)для расшифровки его содержимого.К слову говоря кроме контейнера avi существуют также .mkv .rawavc .mp4 А вот как загнать эту информацию в контейнер я расскажу далее.
Существует много программ которая позволяют кодировать видео но лично я предпочитаю MeGUI encoder это бесплатная программа которая позволяет с ювелирной точностью настроить кодек и результирующий материал для достижения всех ваших пожеланий.
Эта программа требует установленного AviSynth т.к. работает с контентом через него.
Для того чтобы дать вам представление о работе с этой программой приведу пример перекодирования видео сжатого mpeg1 в контейнере .avi в файл закодированный в формате mpeg4 avc в контейнере .mkv.
Итак для начала после запуска программы жмем в меню File->Open и в раскрывшемся окне справа вибираем тип файла All supported encodable после этого в этом же окне отобразится список всех файлов доступных для обработки.
Итак после открытия нашего файла у нас выскочило окно превью в котором мы может изменить размер видео и настройки кодека(Кнопка config).Но скорее всего этого не потребуется,так,что просто оставляем все настройки по умолчанию и переключившись на вторую вкладку жмем кнопку Save.
После чего мы возвращаемся к главному окну программы где в верхней части окна мы выбираем путь до выходного видеофайла и,контейнер и пресет кодирования,который можно изменить,но с моей точки зрения для кодека h264 лучше всего использовать пресет DXVA HD HQ,в настройках которого указаны AVC profile=High,AVC level=4.1,CABAC=On(то есть включен) это важно для возможности аппаратного декодирования видео видекартой(что повышает качество видео, и разгружает процессор, но это уже тема другой статьи)
Остальные настройки лучше оставить по умолчанию.

Аналогичные параметры для кодирования аудио можно настроить снизу окна.
Итак что касается кодека ACC,то в списке представлены NeroAAC и WinampAAC.По результатам тестов я выявил что Nero обеспечивает чуть лучшее качество при равных битрейтах, что касается битрейтов то лучше использовать Adaptive bitrate, конкретную величину которого нужно подобрать экспериментальным путем, но как правило хватает 256 килобит для пережатия HD контента.

После настроек кодеков следует нажать кнопки Enqueue и переключившись на вкладку Queue нажать кнопку Start. И после окончания кодирования следует собрать файл воедино нажав в меню
Tools->Muxer->AdaptiveMuxer.
Где задав путь и название для выходного файла и пути до входных файлов которыми являются ваши перекодированные файлы. После чего нужно поставить их в очередь(Enqueue)
И на вкладке Queue нажать кнопку Start.
После чего файл готов. Поздравляю, вы только что создали свой первый файл закодированный современными кодеками, который весит не больше половины от оригинала, а по качеству аналогичен ему!