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_Audio 或 MFMediaType_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 文件源按如下所示设置子类型:
- subtype = MFMPEG4Format_Base
- 子类型。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_H264或MFVideoFormat_h264设置MF_NALU_LENGTH_SET。 它为每个输出样本设置 MF_NALU_LENGTH_INFORMATION 的 blob,在一个压缩样本中为不同的 NALU 设置 4 字节的 NALU 长度。
添加了对 MP4 源中的 MPEG2 ADTS 音频的支持。
相关主题