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


Приемник файлов MPEG-4

Приемник ФАЙЛОВ MPEG-4 создает MP4-файлы. Дополнительные сведения о формате MP4-файла см. в следующих документах стандартов:

  • ISO/IEC 14496-12: информационная технология - Кодирование звуковых визуальных объектов - часть 12: формат файла базового носителя ISO
  • ISO/IEC 14496-14: информационная технология - Кодирование звуковых визуальных объектов - часть 14: формат ФАЙЛА MP4

Примечание.

(Эти ресурсы могут быть недоступны на некоторых языках и странах.)

 

Приемник файлов MPEG-4 не инкапсулирует функции кодирования.

Чтобы создать приемник файлов MPEG-4, вызовите функцию MFCreateMPEG4MediaSink . Приемник файлов MPEG-4 предоставляет следующие интерфейсы через QueryInterface:

Поле "Пример описания"

MP4 — это расширяемый формат контейнера. Спецификация MP4 не определяет фиксированную структуру для описания типов носителей в контейнере MP4. Вместо этого он определяет иерархию объектов, которая позволяет пользовательским структурам определяться для каждого формата. Описание формата хранится в поле примера описания (stsd') для каждого потока. Поле описания примера содержит список примеров записей. Для каждой записи образца код 4-байтов, аналогичный FOURCC, определяет структуру формата.

Приемник файлов MPEG-4 может создать поле описания примера для следующих форматов:

  • Видео H.264/AVC
  • Звук AAC
  • Звук MP3

Для других форматов поле описания примера должно быть указано в типе носителя для каждого потока. Чтобы указать поле описания примера, задайте следующие атрибуты для типа носителя:

Атрибут Description
MF_MT_MPEG4_SAMPLE_DESCRIPTION Содержит поле описания примера в виде двоичного BLOB-объекта.
MF_MT_MPEG4_CURRENT_SAMPLE_ENTRY Указывает, какие из примеров записей в поле описания в настоящее время активны. (Необязательно.)
В настоящее время значение должно быть равно нулю.

 

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

Обычно тип носителя создается кодировщиком вышестоящий. Кодировщик может создать новый тип мультимедиа во время потоковой передачи с помощью динамического изменения формата. Дополнительные сведения см. в разделе "Изменения динамического формата".

Видео H.264/AVC

Приемник файлов MPEG-4 поддерживает версию потока AVC, которая содержит элементарную видеопоток, с набором параметров последовательности (SPS) и набором параметров рисунка (PPS), содержащимся в примере описания, как определено в разделе 15 раздела 5.1 ISO/IEC 14496. Приемник файлов не поддерживает альтернативный метод хранения NALUs SPS/PPS в качестве отдельного элемента начального потока набора параметров.

Приемник файлов MPEG-4 может создать поле описания примера, но его необходимо предоставить spS и PPS NALUs. Укажите эти сведения в типе носителя, задав атрибут MF_MT_MPEG_SEQUENCE_HEADER . Значение атрибута — заголовок последовательности H.264. Заголовок последовательности должен состоять из spS и PPS NALUs, разделенных 3-байтами или 4-байтами начальных кодов.

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

Приемник файлов MPEG-4 имеет следующие требования для битовых потоков AVC:

  • Битовый поток должен соответствовать спецификации формата H.264 в приложении B. В частности, NALUs должны быть разделены 3-байтами или 4-байтами начальных кодов.
  • Примеры мультимедиа должны содержать все срезы и NALUS данных, соответствующие одному времени презентации.
  • При написании B-кадров в MP4-файл необходимо задать метку времени презентации и метку времени декодирования. Если поток имеет кадр B и декодирование метки времени не задано, модуль записи MP4 увидит время кадра в обратном направлении и приведет к удалению кадра.

Звук в формате AAC

Для звука AAC приемник файлов MPEG-4 может создать поле описания примера для следующих подтипов:

  • MFAudioFormat_AAC
  • MEDIASUBTYPE_RAW_AAC1

Дополнительные сведения об этих подтипах см. в разделе "Типы носителей AAC".

Для подтипа MFAudioFormat_AAC тип носителя при необходимости содержит атрибут MF_MT_USER_DATA. При наличии этого атрибута часть структуры HEAACWAVEINFO, которая отображается после структуры WAVEFORMATEX (то есть после элемента wfx). За этим следует данные AudioSpecificConfig(), определенные ISO/IEC 14496-3. Если атрибут MF_MT_USER_DATA отсутствует, предполагается, что поток будет профилем AAC с низкой сложностью (LC), а приемник файлов MPEG-4 создает подходящий пример описания.

Для подтипа MEDIASUBTYPE_RAW_AAC1 приемник мультимедиа должен содержать атрибут MF_MT_USER_DATA, а атрибут должен содержать данные AudioSpecificConfig().

Приемник файла MPEG-4 создает вариант mpeg-4 примера описания AAC, используя пример записи mp4a с objectTypeIndication = 0x40. Он не использует типы объектов MPEG-2.

MP3 Audio

Для звука MP3 приемник ФАЙЛОВ MPEG-4 может создать поле описания образца из стандартного типа аудиомедийного носителя. (См. раздел Типы аудиомедийных носителей.)

Приемник файлов MPEG-4 создает вариант mpeg-4 примера описания MP3, используя пример записи mp4a с objectTypeIndication = 0x6b для звука MPEG-1.

Ограничения

  • Максимальный размер авторированного файла составляет 4 ГБ. В Windows 8 поддерживаются файлы размером более 4 ГБ.
  • Приемник файлов MPEG-4 не поддерживает списки изменений (поля edts и elst).

Обновления Windows 8 для источника и приемника MPEG-4

  • Поддержка чтения и записи поворота, добавленная в источник и приемник Windows 8 MPEG-4. Это не поддерживается в источнике и приемнике Windows 7 MPEG-4.

    Источник MPEG-4 считывает угол поворота для активной видео-дорожки в виде суммы угла поворота от Mvhd и от Tkhd.

    Приемник Microsoft MPEG-4 записывает угол поворота в матрицу tkhd, но записывает 0 градусов (удостоверение) в Mvhd. Обратите внимание, что приемник Microsoft MPEG-4 поддерживает только одну видео-дорожку.

    IPropertyStore считывает угол поворота только для первой видео-дорожки в виде суммы угла поворота от Mvhd и от Tkhd.

    IPropertyStore записывает угол поворота только для первой видео-дорожки в tkhd после того, как угол поворота корректируется в соответствии с углом поворота в mvhd, если он существует.

  • Фрагменты фильма (moof) поддерживаются в источнике и приемнике Windows 8 MPEG-4, но mfra не является.

  • H.263 поддерживается в источнике Windows 8 MPEG-4.

    Источник MPEG-4 теперь сопоставляет два четверк "h263" и "s263" в формате MPEG-4 с типом мультимедиа MFVideoFormat_H263.

  • Дополнительная поддержка fourcc, добавленная для MJPEG в источнике Windows 8 MPEG-4.

    Исходный код MPEG-4 сопоставляет foucc dmb1 с типом мультимедиа MFVideoFormat_MJPG.

  • Поддержка метаданных Furigana, добавленная в источнике WINDOWS 8 MPEG-4.

    Источник MPEG-4 считывает метаданные Furigana из "soal", "soaa", "sonm" и "soco". IPropertyStore считывает метаданные Furigana через набор соответствующих PKEYs.

    В следующей таблице показано сопоставление канонического имени оболочки, ключа свойства и идентификатора поля или тега в формате ФАЙЛА MPEG-4.

    Поле Ключ свойства Идентификатор тега или поля
    System.Music.AlbumTitleSortOverride PKEY_Music_AlbumTitleSortOverride Соал
    System.Music.ArtistSortOverride PKEY_Music_ArtistSortOverride soar
    System.Music.AlbumArtistSortOverride PKEY_Music_AlbumArtistSortOverride soaa
    System.TitleSortOverride PKEY _TitleSortOverride sonm
    System.Music.ComposerSortOverride PKEY_Music_ComposerSortOverride soco

     

  • Поддержка стереоданных 3D atom добавлена в источнике Windows 8 MPEG-4.

  • Поддержка AC3 и DD+ добавлена в источник и приемник Windows 8 MPEG-4.

  • Файлы размером более 4 ГБ поддерживаются в приемнике Windows 8 MPEG-4 для не фрагментального MP4.

  • Очистка оптимизирована в источнике Windows 8 MPEG-4.

    Чтобы уменьшить задержку, сведения о двух ближайших ключевых кадрах для конкретной позиции поиска предоставляются через МВФSeekInfo::GetNearestKeyFrames. Так как ключевой кадр не имеет зависимых кадров, он представляет кадр после декодирования только одного кадра. Используйте МВФGetService::GetService , чтобы получить этот интерфейс с помощью источника мультимедиа, конвейера или приложения.

    Задайте частоту нулю в источнике MPEG-4. Если конвейер находится в режиме очистки, скорость равна нулю.

  • SPS и PPS можно хранить в образце данных в приемнике MPEG-4.

    MF_MPEG4SINK_SPSPPS_PASSTHROUGH атрибут в приемнике MPEG-4 определяется для сохранения spS и PPS вместе с входными примерами (видеоданных H.264). Созданные mp4 клипы могут воспроизводиться источником Windows 7 MPEG-4 и другими.

  • SPS и PPS можно извлечь из входных примеров в приемнике MPEG-4.

    Если spS и PPS не задаются через MF_MT_MPEG_SEQUENCE_HEADER для входного типа носителя приемника MPEG-4, приемник MPEG-4 попытается извлечь SPS и PPS из входных примеров. Приемник MPEG-4 игнорирует все входные образцы, пока не находит первые spS и PPS, так как все входные образцы без SPS и PPS не декодируются.

  • 3D-сведения в записи конфигурации AVC поддерживаются для не фрагментальных MP4.

  • Длина NALU предоставляется для сжатых примеров H.264 для оптимизации декодирования H.264 VLD DXVA.

    Исходные наборы MPEG-4 MF_NALU_LENGTH_SET в типе выходного носителя MFVideoFormat_H264 или MFVideoFormat_h264. Он задает большой двоичный объект MF_NALU_LENGTH_INFORMATION для каждого выходного примера с четырехбайтовой длиной NALU для разных naLU в одном сжатом примере.

  • Добавлена поддержка звука MPEG2 ADTS в источнике MP4.

Requirements

Требование Значение
Минимальная версия клиента
Windows 7 [только классические приложения]
Минимальная версия сервера
Windows Server 2008 R2 [только классические приложения]

См. также

Источники мультимедиа и приемники

Приемники мультимедиа

Поддержка MPEG-4 в Media Foundation

Поддерживаемые форматы мультимедиа в Media Foundation