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 类型 (MIME type) 说明
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 文件源无法识别每个可能的格式说明。 相反,在为流创建媒体类型时,它采用两层方法。 每个媒体类型至少包含以下属性。

Attribute 说明
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 位 little-endian PCM 音频
“twos” 音频 MFAudioFormat_PCM 16 位 big-endian PCM 音频 MPEG-4 文件源将音频数据转换为 little-endian 格式。
'ulaw' 音频 WAVE_FORMAT_MULAW μ法编码
“vc-1” 视频 MFVideoFormat_WVC1 VC-1 视频
“NONE” 音频 MFAudioFormat_PCM 8 位或 16 位 big-endian PCM 音频 MPEG-4 文件源将音频数据转换为 little-endian 格式。
0x00000000 音频 MFAudioFormat_PCM 8 位或 16 位 big-endian PCM 音频 MPEG-4 文件源将音频数据转换为 little-endian 格式。
0x6d730002 音频 WAVE_FORMAT_ADPCM 自适应差分脉冲编码调制 (ADPCM)
0x6d730011 音频 WAVE_FORMAT_IMA_ADPCM ADPCM

 

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

  1. subtype = 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 上使用 源读取器进行访问。

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

  • 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 源中添加了汉字注音元数据支持。

    MPEG-4 源从“soal”、“soar”、“soaa”、“sonm”和“soco”读取汉字注音元数据。 IPropertyStore 通过一组相应的 PKEY 读取 Fur打素元数据。

    下表显示了 shell 规范名称、属性键和 MPEG-4 文件格式的框/标记 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 (GB) 的文件。

  • 已在 MPEG-4 源Windows 8优化清理。

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

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

  • 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 源对输出媒体类型MFVideoFormat_H264MFVideoFormat_h264设置MF_NALU_LENGTH_SET 它为每个输出样本设置 MF_NALU_LENGTH_INFORMATION 的 blob,在一个压缩样本中为不同的 NALU 设置 4 字节的 NALU 长度。

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

媒体源和接收器

Media Foundation 中的 MPEG-4 支持

Media Foundation 中支持的媒体格式