MPEG-4 文件源

MPEG-4 文件源分析 MP4 和 3GPP 文件。 有关 MP4 文件格式的详细信息,请参阅以下标准文档:

  • ISO/IEC 14496-12:信息技术 -- 音频视觉对象的编码 -- 第 12 部分:ISO 基础媒体文件格式
  • ISO/IEC 14496-14:信息技术 -- 音频视觉对象的编码 -- 第 14 部分:MP4 文件格式

注意

(某些语言和国家/地区可能不提供这些资源。

 

MPEG-4 文件源不会解码文件中的音频/视频数据。

本主题包含以下部分:

文件扩展名和 MIME 类型

MPEG-4 文件源是以下文件扩展名的默认媒体源。

文件扩展名 描述
.3g2 3GPP2
.3gp 3GPP
.3gp2 3GPP2
.3gpp 3GPP
.m4a MPEG-4 音频
.m4v MPEG-4 视频
.mov Apple QuickTime 电影
.mp4 MPEG-4 音频或视频
.mp4v MPEG-4 视频

 

它也是以下 MIME 类型的默认媒体源。

MIME 类型 描述
audio/3gpp 3GPP 音频
audio/3gpp2 3GPP2 音频
audio/mp4 MPEG-4 音频
video/3gpp 3GPP 视频
video/3gpp2 3GPP2 视频
video/mp4 MPEG-4 视频

 

媒体类型

MP4 是可扩展的容器格式。 MP4 规范未定义用于描述 MP4 容器中的媒体类型的固定结构。 而是定义一个对象层次结构,允许为每个格式定义自定义结构。 格式说明存储在该流的示例说明('stsd')框中。 示例说明框包含示例条目的列表。 对于每个示例条目,4 字节代码(类似于 FOURCC)定义格式结构。

这种扩展性意味着 MPEG-4 文件源无法识别每个可能的格式说明。 而是在为流创建媒体类型时采用两层方法。 每个媒体类型至少包含以下属性。

属性 描述
MF_MT_MAJOR_TYPE 等于 MFMediaType_AudioMFMediaType_Video
MF_MT_SUBTYPE 指定流子类型。
MF_MT_MPEG4_SAMPLE_DESCRIPTION 包含作为二进制 Blob 的完整示例说明框。
MF_MT_MPEG4_CURRENT_SAMPLE_ENTRY 指定示例说明框中的当前条目。

 

MPEG-4 文件源可识别一些示例条目类型。 对于这些条目,它可以分析格式结构并创建完整的媒体类型,以及描述格式详细信息的其他属性。 请参阅 媒体类型属性

MPEG-4 文件源可以分析以下示例条目。

示例条目代码 主要类型 描述 笔记
“alaw” 音频 WAVE_FORMAT_ALAW A-law 编码
“jpeg” 视频 MFVideoFormat_MJPG Photo-JPEG 流 QuickTime 容器格式还支持具有“mjpa”或“mjpb”条目的动作 JPEG 流,但 MPEG-4 文件源不提供这些类型的完整媒体类型。
“avc1” 视频 MFVideoFormat_H264 H.264 视频
“mp4a” 音频 MFAudioFormat_AAC
MFAudioFormat_MP3
AAC 或 MP3 “mp4a”条目可以描述其他 MPEG 音频格式,但 MPEG-4 文件源不会分析格式结构。
“mp4v” 视频 MFVideoFormat_M4S2
MFVideoFormat_MP4V
MPEG-4 第 2 部分 MFVideoFormat_M4S2 用于 MPEG-4 第 2 部分简单配置文件。
MFVideoFormat_MP4V 用于所有其他 MPEG-4 第 2 部分配置文件,包括高级简单配置文件。
“raw” 音频 MFAudioFormat_PCM 8 位 PCM 音频
“sowt” 音频 MFAudioFormat_PCM 16 位小端 PCM 音频
“twos” 音频 MFAudioFormat_PCM 16 位 big-endian PCM 音频 MPEG-4 文件源将音频数据转换为小端格式。
“ulaw” 音频 WAVE_FORMAT_MULAW μ法律编码
“vc-1” 视频 MFVideoFormat_WVC1 VC-1 视频
“NONE” 音频 MFAudioFormat_PCM 8 位或 16 位 big-endian PCM 音频 MPEG-4 文件源将音频数据转换为小端格式。
0x00000000 音频 MFAudioFormat_PCM 8 位或 16 位 big-endian PCM 音频 MPEG-4 文件源将音频数据转换为小端格式。
0x6d730002 音频 WAVE_FORMAT_ADPCM 自适应差异脉冲编码调节(ADPCM)
0x6d730011 音频 WAVE_FORMAT_IMA_ADPCM ADPCM

 

对于上表中未显示的任何其他代码,MPEG-4 文件源按如下所示设置子类型:

  1. 子类型 = MFMPEG4Format_Base
  2. 子类型。Data1 = 示例条目代码

对于表中未显示的代码,解码器必须使用 MF_MT_MPEG4_SAMPLE_DESCRIPTION 属性来分析示例说明框。

有关示例入口代码列表和相关规范的链接,请参阅 “MP4”注册机构 网站。

局限性

MPEG-4 文件源不支持 MP4 文件的以下功能:

  • 外部轨迹。
  • 电影片段(“moof”或“mfra”框)。 Windows 8 支持“moof”。
  • 流式处理演示文稿。 MPEG-4 文件源以无提示方式忽略提示轨道。
  • 通过 SMPTE 时间代码查找。
  • 压缩的 ('cmov') 原子。

仅支持视频和音频流。 包含其他流类型的任何曲目将被无提示忽略。 媒体数据必须放置在“mdat”原子中。

如果安装了 Windows Vista 平台更新补充,则 MPEG-4 文件源在 Windows Vista 上可用,但只能在 Windows Vista 上使用 源读取器访问。

对 MPEG-4 源和接收器的 Windows 8 更新

  • Windows 8 MPEG-4 源和接收器中添加了旋转读取和写入支持。 Windows 7 MPEG-4 源和接收器不支持此作。

    MPEG-4 源将活动视频轨道的旋转角度作为旋转角度的总和从“mvhd”和“tkhd”读取。

    Microsoft MPEG-4 接收器以“tkhd”写入旋转角度,但在“mvhd”中写入 0 度(标识)矩阵。 请注意,Microsoft MPEG-4 接收器仅支持单个视频轨道。

    IPropertyStore 仅读取第一个视频轨道的旋转角度,作为旋转角度的总和从“mvhd”和“tkhd”。

    IPropertyStore 仅在旋转角度根据“mvhd”中的旋转角度进行调整后,才为“tkhd”中的第一个视频轨道写入旋转角度(如果存在)。

  • Windows 8 MPEG-4 源和接收器支持电影片段(“moof”),但“mfra”不受支持。

  • Windows 8 MPEG-4 源支持 H.263。

    MPEG-4 源现在以 MPEG-4 文件格式将两个四cc 的“h263”和“s263”映射到 MFVideoFormat_H263的媒体类型。

  • 在 Windows 8 MPEG-4 源中添加了对 MJPEG 的更多四cc 支持。

    MPEG-4 源将“dmb1”的 foucc 映射到 MFVideoFormat_MJPG的媒体类型。

  • 在 Windows 8 MPEG-4 源中添加了 Furigana 元数据支持。

    MPEG-4 源从“soal”、“soar”、“soaa”、“sonm”和“soco”读取 Furigana 元数据。 IPropertyStore 通过相应的 PKEY 集读取 Furlakea 元数据。

    下表显示了 shell 规范名称、属性键和 MPEG-4 文件格式的 box/tag ID 之间的映射。

    属性键 标记/框 ID
    System.Music.AlbumTitleSortOverride PKEY_Music_AlbumTitleSortOverride soal
    System.Music.ArtistSortOverride PKEY_Music_ArtistSortOverride 飙升
    System.Music.AlbumArtistSortOverride PKEY_Music_AlbumArtistSortOverride soaa
    System.TitleSortOverride PKEY _TitleSortOverride sonm
    System.Music.ComposerSortOverride PKEY_Music_ComposerSortOverride soco

     

  • Windows 8 MPEG-4 源中添加的立体声 3D 原子支持。

  • 在 Windows 8 MPEG-4 源和接收器中添加了 AC3 和 DD+ 支持。

  • 非碎片 MP4 的 Windows 8 MPEG-4 接收器支持大于 4 GB 的文件。

  • 清理已在 Windows 8 MPEG-4 源中进行了优化。

    为了降低延迟,可通过 IMFSeekInfo::GetNearestKeyFrames公开特定搜寻位置的两个最接近的关键帧的信息。 由于关键帧没有依赖帧,因此它仅在解码一帧后呈现帧。 使用 IMFGetService::GetService 通过媒体源、管道或应用程序获取此接口。

    在 MPEG-4 源中将速率设置为零。 当管道处于清理模式时,速率为零。

  • SPS 和 PPS 可以存储在 MPEG-4 接收器中的示例数据中。

    定义了 MPEG-4 接收器上的 MF_MPEG4SINK_SPSPPS_PASSTHROUGH 属性,以允许 SPS 和 PPS 与输入样本(H.264 视频数据)一起保存。 生成的 mp4 剪辑可由 Windows 7 MPEG-4 源和其他源播放。

  • 可以从 MPEG-4 接收器中的输入样本中提取 SPS 和 PPS。

    如果未通过 MPEG-4 接收器的输入媒体类型的 MF_MT_MPEG_SEQUENCE_HEADER 设置 SPS 和 PPS,则 MPEG-4 接收器将尝试从输入样本中提取 SPS 和 PPS。 MPEG-4 接收器会忽略任何输入样本,直到找到第一个 SPS 和 PPS,因为没有 SPS 和 PPS 的所有输入样本都无法解码。

  • 非碎片 MP4 支持 AVC 配置记录中的 3D 信息。

  • 为 H.264 压缩样本公开 NALU 长度,以优化 H.264 VLD DXVA 解码。

    MPEG-4 源集 MF_NALU_LENGTH_SETMFVideoFormat_H264MFVideoFormat_h264的输出媒体类型。 它在每个输出样本上设置 MF_NALU_LENGTH_INFORMATION blob,其中四字节 NALU 长度用于一个压缩样本中的不同 NALU。

  • 在 MP4 源中添加了对 MPEG2 ADTS 音频的支持。

媒体源和接收器

媒体基础 中的 MPEG-4 支持

媒体基础 中支持 媒体格式