3

Я изучал мультимедийные форматы (хотя недавно мне сказали не использовать слово "формат", поскольку оно неоднозначно).

Я узнал, что видеофайл состоит из необработанного битового потока, закодированного в соответствии с каким-то стандартом, например, H.264, затем этот битовый поток упаковывается в контейнер, например, .mp4.

т.е. сырой битовый поток (закодированный по стандартному протоколу) + контейнер = мой видеофайл

Я узнал об этом из другой статьи SuperUser: что такое кодек (например, DivX?) И чем он отличается от формата файла (например, MPG)?


В этой статье также сказано следующее:

До сих пор мы только объясняли необработанный "битовый поток", который в основном представляет собой просто сырые видеоданные. Вы могли бы пойти дальше и посмотреть видео, используя такой сырой битовый поток. Но в большинстве случаев этого просто недостаточно или не практично.

Поэтому вам нужно обернуть видео в контейнер. Есть несколько причин, почему:

-Может, вы хотите аудио вместе с видео.

-Может быть, вы хотите перейти к определенной части видео (например, «перейти к 1:32:20.12»).

-Одно аудио и видео должны быть идеально синхронизированы.

-Видео может потребоваться передать по надежной сети и разделить на пакеты раньше.

-Видео может быть даже отправлено через сеть с потерями (например, 3G) и разбито на пакеты раньше.

Я на самом деле просто не понимаю , почему Raw Bitstream не может быть использована и как контейнер может разрешить все эти вещи. Он говорит, что они могут, но он не объясняет как, и вот к чему я клоню.

Вероятно, это потому, что я никогда в своей жизни не имел дело с Raw Bitstreams. Я всегда нажимал на файл контейнера .mp4, и он просто работал.

Может кто-нибудь объяснить магию контейнеров и как они увеличивают сырые битовые потоки?

1 ответ1

2

Контейнеры добавляют метаданные в один или несколько «сырых» потоков битов. Последний можно представить как традиционный кинопленка: серия изображений, не более того. Контейнер будет действовать как ящик, в котором хранится рулон пленки: он добавляет заголовок, позиции указателя (сцена 2 начинается в 03:45), общую длину и так далее.

Чистое видео без контейнера может работать; Продолжительность, очевидно, может быть рассчитана без индекса, но это быстро становится непрактичным - все видео необходимо декодировать, чтобы получить его общую длину, так как объем данных, необходимых для хранения секунды фильма, не обязательно постоянен (некоторые кодеки даже допускают переменная частота кадров). Чтобы пропустить десять секунд вперед, потребуется предварительное декодирование десяти секунд видео; чтобы пропустить десять секунд назад, потребуется повторное декодирование с самого начала, или необходимо сохранить текущий индекс уже увиденного. Не красиво и не эффективно.

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

Те же ограничения применяются к чистому аудио.

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .