Основы работы с медиафайлами

Дерек Херман
Derek Herman
Джо Медли
Joe Medley

В этой статье вы узнаете об основах медиафайлов, таких как концепции контейнера и некоторых из множества доступных форматов кодеков, которые можно использовать в потоке. Плюс слегка коснитесь таких тем, как адаптивная потоковая передача, битрейт и разрешение, но мы углубимся во все это в следующих разделах.

Вы можете подумать, что можно взять необработанный файл с видеокамеры и просто загрузить его в Интернет как есть. Действительно, сайты потокового видео, такие как YouTube или Vimeo, позволяют вам делать именно это и даже предоставляют возможности потоковой передачи в реальном времени — обычно путем подключения к порту HDMI вашей камеры и последующей обработки его с помощью карты захвата. Эти сервисы значительно упрощают обработку и загрузку видео, включая создание множества файлов и манифестов, необходимых для адаптивной потоковой передачи и различных разрешений. Плюс множество других сложных и тонких требований, которые делают самостоятельный хостинг довольно утомительным занятием. Подготовка и показ видео с вашего собственного сайта и, возможно, с отдельного медиасервера, немного сложнее, чем просто загрузка необработанного файла камеры, если вам важно, как пользователи воспринимают ваш сайт.

Видеофайлы бывают разных форматов. Формат вашей камеры обычно представляет собой файл .mov или .mp4 , если у вас хорошая современная беззеркальная камера. Однако, хотя .mov хорош для записи, редактирования и других ранних процессов постобработки, размер файла означает, что он не подходит для потоковой передачи через Интернет. Кроме того, размер необработанного файла .mp4 в формате 4K сделает воспроизведение этого файла на мобильных устройствах очень невозможным. Поскольку браузеры поддерживают разные форматы файлов, вам потребуется создать несколько оптимизированных файлов и, возможно, манифест, если вы планируете поддерживать адаптивную потоковую передачу. Прежде чем конвертировать файлы, вам необходимо понять некоторые основы о них и их характеристиках.

Контейнеры, кодеки и потоки?

Файл, который вы видите в оболочке вашей операционной системы, представляет собой контейнер , идентифицируемый расширением файла ( .mp4 , .webm , .ogg и т. д.). Контейнер содержит один или несколько потоков . Медиа-файл может иметь любое количество потоков и гораздо больше форматов , чем мы здесь рассмотрим.

Файлы примеров, используемые далее в этом разделе, содержат не более двух потоков: аудиопоток и видеопоток. Среди других типов, с которыми вы можете столкнуться, — подписи и данные, оба из которых выходят за рамки этой статьи. Бывают случаи, когда аудио- и видеопотоки рассматриваются отдельно. Большинство файлов, с которыми вы столкнетесь, будут содержать только один аудиопоток и один видеопоток.

В аудио- и видеопотоках фактические данные сжимаются с помощью кодека. Кодек или кодер/декодер — это формат сжатия видео- или аудиоданных. Различие между контейнером и кодеком важно, поскольку содержимое файлов одного и того же контейнера может быть закодировано с помощью разных кодеков.

Изображение ниже иллюстрирует эту структуру. Слева — базовая структура контейнера с двумя потоками. Справа показаны особенности этой структуры для одного файла WebM.

Сравнение структуры медиафайла с гипотетическим медиафайлом.
Части медиафайла.

Файлы в контейнерах WebM могут быть на несколько порядков меньше, чем файлы других форматов, что делает их хорошим выбором для потоковой передачи на мобильных сайтах. К сожалению, не все браузеры поддерживают актуальные контейнеры и кодеки. Например, WebM был создан специально для Интернета как высококачественный вариант с открытым исходным кодом, но его поддержка пока не является универсальной. В частности, Safari, согласно «Могу ли я использовать» на момент написания этой статьи, не поддерживает WebM для встроенного видео. Однако WebM имеет частичную поддержку кодеков VP8 и VP9, ​​используемых в WebRTC. Поэтому лучший вариант — предоставить запасное видео.

Форматы кодеков

Многие типы файлов поддерживают несколько кодеков в одном контейнере. Полный список доступных видеокодеков и аудиокодеков занял бы целый веб-сайт. Только что предоставленные ссылки предназначены для практических списков MDN того, что можно использовать в Интернете. Ниже перечислены предпочтительные в настоящее время типы файлов и кодеки, которые они могут использовать. Перейдите по ссылкам на типы файлов, чтобы просмотреть браузеры, которые их поддерживают.

Тип файла Видео кодек Аудиокодек
МП4 AV1 , AVC (H.264) *, ВП9 ААС
ВебМ АВ1 , ВП9 * Ворбис , Опус

* Указывает предпочтительный видеокодек.

Битрейт и разрешение

Битрейт — это максимальное количество бит, используемых для кодирования одной секунды потока. Чем больше бит используется для кодирования секунды потока, тем выше потенциальная детализация и точность воспроизведения. Более подробную информацию об этой концепции мы предоставляем в разделе «Битрейт» .

Разрешение — это количество информации в одном кадре видео, выраженное в количестве логических пикселей в каждом измерении. Более подробную информацию об этой концепции мы предоставляем в Резолюции .

Далее, в разделе «Основы мультимедийных приложений» , мы покажем вам, как проверить эти характеристики с помощью двух инструментов командной строки: Shaka Packager и FFmpeg.