Поделиться через


Хранение сжатых носителей в файлах AVI (Microsoft Media Foundation)

Любое содержимое, которое вы сжимаете с помощью аудио- и видеокодеков Windows Media, должно быть помещено в какой-либо формат контейнера. Одним из самых популярных форматов является Аудио видео interleave или AVI. Для создания файлов AVI можно использовать Microsoft Video для Windows (VfW) или Microsoft DirectShow.

Для использования свойств расширенного формата систем (ASF), который является контейнером, используемым Windows Media, были разработаны аудио и видеокодеки Windows Media. Так как содержимое AVI и ASF хранятся по-разному, некоторые трудности возникают при хранении содержимого, сжатого с помощью аудио- и видеокодеков Windows Media в файле AVI.

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

Однако файлы AVI не сохраняют метки времени с примерами. Это означает, что содержимое аудио Windows Media невозможно правильно распаковываться при хранении в файле AVI. Содержимое Видео Windows Media не имеет этого ограничения и может быть включено в файлы AVI. Чтобы кодировать содержимое Видео Windows Media в AVI-файл с синхронизированным звуком, необходимо использовать другой звуковой кодек.

Другая проблема с использованием AVI-файла в качестве контейнера для Windows Media касается видео с низкой скоростью. Одним из способов создания видеокодеков Windows Media для низкой скорости является удаление повторяющихся кадров. Если вы хотите поместить содержимое Видео Windows Media в ASF-файл, необходимо настроить кодировщик для доставки фиктивных кадров для повторяющихся кадров ( задайте для MFPKEY_PRODUCEDUMMYFRAMES значение VARIANT_TRUE ), чтобы каждый кадр был представлен в файле. Фиктивные кадры, созданные кодеком, равны 8 байтам. Однако кадр, записанный в файл мультиплексером AVI, может быть сотнями байтов больше и заполнен случайными данными. AVI-файл, сделанный таким образом, по-прежнему будет воспроизводиться, но он будет гораздо больше, чем ожидалось. Эту проблему можно избежать с помощью более высоких скоростей при кодировании видео для хранения в файлах AVI.

Кодеки Windows Media