视频 FOURC
许多视频格式都为其分配了 FOURCC 代码。 FOURCC 代码是通过连接四个 ASCII 字符创建的 32 位无符号整数。 例如,YUY2 视频的 FOURCC 代码为“YUY2”。
定义了各种 C/C++ 宏,用于在源代码中声明 FOURCC 值。 MAKEFOURCC 宏在 Mmsystem.h 中定义,FCC 宏在 Aviriff.h 和其他各种头文件中定义。 还可以直接将 FOURCC 代码声明为字符串文本,只需反转字符的顺序即可。 因此,以下语句等效:
DWORD fccYUY2 = MAKEFOURCC('Y','U','Y','2');
DWORD fccYUY2 = FCC('YUY2');
DWORD fccYUY2 = '2YUY'; // Declares the FOURCC 'YUY2'.
(在最后一个示例中,需要反转字节顺序,因为 Windows 使用 little-endian 体系结构。“Y” = 0x59,“U”= 0x55,“2”= 0x32,因此“2YUY”是0x32595559。
某些 DirectX 视频加速 2.0 API 使用 D3DFORMAT 值来描述视频格式。 还可以在此上下文中使用 FOURCC 代码:
D3DFORMAT fmt = (D3DFORMAT)MAKEFOURCC('Y','U','Y','2');
D3DFORMAT fmt = (D3DFORMAT)FCC('YUY2');
D3DFORMAT fmt = D3DFORMAT('2YUY'); // Coerce to D3DFORMAT type.
FOURCC 常量
下表列出了一些常见的 FOURCC 代码。
FOURCC 值 | 描述 |
---|---|
“H264” | H.264 视频。 |
“I420” | 以平面 4:2:0 格式存储的 YUV 视频。 |
“IYUV” | 以平面 4:2:0 格式存储的 YUV 视频。 |
“M4S2” | MPEG-4 第 2 部分视频。 |
“MP4S” | Microsoft MPEG 4 编解码器版本 3。 不再支持此编解码器。 |
“MP4V” | MPEG-4 第 2 部分视频。 |
“MPG1” | MPEG-1 视频。 |
“MSS1” | 使用 Windows 媒体视频 7 屏幕编解码器编码的内容。 |
“MSS2” | 使用 Windows 媒体视频 9 屏幕编解码器编码的内容。 |
“UYVY” | 以打包的 4:2:2 格式存储的 YUV 视频。 类似于 YUY2,但数据顺序不同。 |
“WMV1” | 使用 Windows 媒体视频 7 编解码器编码的内容。 |
“WMV2” | 使用 Windows 媒体视频 8 编解码器编码的内容。 |
“WMV3” | 使用 Windows 媒体视频 9 编解码器编码的内容。 |
“WMVA” | 使用旧版 Windows 媒体视频 9 高级配置文件编解码器进行编码的内容。 |
“WMVP” | 使用 Windows 媒体视频 9.1 图像编解码器编码的内容。 |
“WVC1” | SMPTE 421M(“VC-1”)。 使用 Windows 媒体视频 9 高级配置文件编码的内容。 |
“WVP2” | 使用 Windows 媒体视频 9.1 图像 v2 编解码器编码的内容。 |
“YUY2” | 以打包的 4:2:2 格式存储的 YUV 视频。 |
“YV12” | 以平面 4:2:0 或 4:1:1 格式存储的 YUV 视频。 与 I420/IYUV 相同,只是切换了你和 V 平面。 |
“YVU9” | 以平面 16:1:1 格式存储的 YUV 视频。 |
“YVYU” | 以打包的 4:2:2 格式存储的 YUV 视频。 类似于 YUY2,但数据顺序不同。 |
相关主题