ASF全称Advanced Systems Format 高级串流格式,微软出的一种开放封装格式的标准。它可以包含很多内容如:音视频、脚本命令、JPEG、二进制文件、或是由开发者自己定义的内容.常见的遵循这种标准的封装格式.asf .wmv .wma.
1.最小组成单元ASF object
像FLV的tag、MKV的EBML一样,ASF文件也有类似的最小组成单元 ASF object.可以理解成ASF文件就是由很多个ASF object组成的。
Field
|
Size (bytes)
|
Object GUID
|
16
|
Object Size
|
8
|
Object Data
|
varies (≥0)
|
ASF object 是16个字节的GUID代表这个Object的类型,Object的类型有很多种。8个字节的 Size 代表这个Object的大小,紧接着就是Object的内容。
GUID: 即Globally Unique Identifier(全球唯一标识符). 是一种由算法生成的唯一标识,通常表示成32个16进制数字(0-9,A-E)组成的字符串,如:{21EC2020-3AEA-1069-A2DD-08002B30309D},它实质上是一个128位长的二进制整数。GUID一词有时也专指微软对UUID标准的实现。
GUID本质上是一个16字节(128位)的二进制数,最常见[1]的结构如下:
位
|
字节
|
描述
|
字节序
|
32
|
4
|
数据1
|
原生
|
16
|
2
|
数据2
|
原生
|
16
|
2
|
数据3
|
原生
|
64
|
8
|
数据4
|
大端序
|
数据4的字节序和GUID显示成文本的结果相同,而其它3个数据在小端序的机器(如英特尔的CPU)上必须先转换成大端序。
举个例子打开一个文件
前16个字节就是GUID,转换成相应的格式就是 75B22630-668E-11CF-A6D9-00AA0062CE6C 查文档得知 这个GUID是ASF_Header_Object 标识着这个object是asf的头。
紧跟着8个字节size = 0x33D(829) 剩下的就是data
ASF_Header_Object 可以作为ASF容器格式的可辨识信息。ASF文件都是以ASF_Header_Object开头。
2.ASF 文件整体结构
从ASF文件整体来看是由3大部分组成:Header Object, the Data Object,the Index Object(s).
Header Object, Data Object都是必须有的,而且Header Object在ASF文件头部,紧跟着是the Data Object。
Index Object(s)是可选的,存在ASF文件尾部,Index Object(s)对seek以及快进快退的操作非常重要。
刚才那个例子可以看一下,这3大部分都有
3. Header Object
Header Object 包含着一系列的ASF object,它们分别代表着不同类型object,由GUID区分,以(ASF_Header_Object GUID) object开头。
它们提供了关于ASF DATA 的一些解释信息,如音视频类型及详细信息等, Header Object 可能包含如下类型的object:
File Properties Object. 包含整个文件属性,如文件大小、时长等.
Stream Properties Object. 包含数字多媒体特性,如音视频格式、PID等.
Header Extension Object. Allows additional functionality to be added to an ASF file while maintaining backward compatibility.
Content Description Object. Contains bibliographic information.
Script Command Object. Contains commands that can be executed on the playback timeline.
Marker Object. Provides named jump points within a file.
一般情况, Header Object必须包含1个 File Properties Object, 1个 Header Extension Object, 和至少一个Stream Properties Object.
还是以上面那个例子。上面的例子Header Object中包含了下面一些object
File Properties Object
通过 File Properties Object 你可以获得整个文件大小 时长等信息。上面例子对应解析出来的
File Properties Object (104 bytes)
|
Property
|
Value
|
|
File Position
|
30 ( 0x1E )
|
|
Object ID
|
8CABDCA1-A947-11CF-8EE4-00C00C205365
|
|
Object Size
|
104 ( 0x68 )
|
|
|
Version
|
2
|
|
MMS ID
|
247D3E82-C389-11D3-BD6F-00C0261004E0
|
|
Total Size
|
13639000 ( 0xD01D58 )
|
|
Creation Time
|
2000-1-5 15:00:32.820
|
|
Packets
|
2081
|
|
Duration
|
03:31.697
|
|
Send Duration
|
03:28.080
|
|
Preroll
|
00:03.199
|
|
Flags
|
0x00000002
|
|
Broadcast
|
0
|
|
Seekable
|
1
|
|
Use Packet Template
|
0
|
|
Live
|
0
|
|
Reliable
|
0
|
|
Recordable
|
0
|
|
Unknown Data Size
|
0
|
|
Max Packet Size
|
6553 ( 0x1999 )
|
|
Min Packet Size
|
6553 ( 0x1999 )
|
|
Max Bitrate (bit/sec)
|
524288
|
Stream Properties Object
包含的是文件中流的关键信息,通过对这部分内容你可以获知asf文件中包含几个音视频流,每个流相对应的基本信息。比如视频的宽高、音频的采样率等。
根据 Stream Type GUID的值来判断流的类型,参看附表。然后具体信息装在Type-Specific Data
来看看上面的例子
红框中的GUID表示 B7DC0791-A9B7-11CF-8EE6-00C00C205365 表示的就是 Stream Properties Object 。size = 0x72
紧跟着绿色框里面就是 Stream Type F8699E40-5B4D-11CF-A8FD-00805F5C442B 查表可知 类型是 ASF_Audio_Media 。也就是音频的信息。
Type-Specific Data Length 长度为 0x1c
蓝色框里面的就是Type-Specific Data 61 01 02 00 44 AC 00 00 45 1F-00 00 CF 05 10 00 0A 00 00 00 01 00 0F 00 78 2E-00 00
因为是音频 Type-Specific Data 就是按照WAVEFORMATEX structure 保存。下面的表格来解析 Type-Specific Data
-
typedef struct {
-
WORD wFormatTag;
-
WORD nChannels;
-
DWORD nSamplesPerSec;
-
DWORD nAvgBytesPerSec;
-
WORD nBlockAlign;
-
WORD wBitsPerSample;
-
WORD cbSize;
-
} WAVEFORMATEX;
解析的结果
Stream Type
|
Audio Media
|
|
Format Tag
|
353
|
|
Channels
|
2
|
|
Samples / Seconds
|
44100
|
|
Average Bytes / Second
|
8005
|
|
Average Bitrate (bits/sec)
|
64040
|
|
Block Align
|
1487 ( 0x5CF )
|
|
Bits / Sample
|
16
|
|
Extra Data Size
|
10
|
|
Extra Data
|
0000: 00 00 01 00 0F 00 78 2E-00 00
|
Format Tag 可看附表2 这个表示音频格式。通过查表得知353(0x161)对应的就是WMA2
这个 Stream Properties Object 就解析完毕了。
紧接着还是个 Stream Properties Object
绿色框 GUID BC19EFC0-5B4D-11CF-A8FD-00805F5C442B表示着是 ASF_Video_Media
蓝色框就是Type-Specific Data。
40 01 00 00 F0 00 00 00 02 28-00 28 00 00 00 40 01 00 00 F0 00 00 00 01 00 18-00
4D 50 34 33 00 84 03 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 00
因为是ASF_Video_Media 就按照下表解析
Format Data 是 BITMAPINFOHEADER structure
Stream Type Specific
|
Stream Type
|
Video Media
|
|
Window Width
|
320
|
|
Window Height
|
240
|
|
Flags
|
2
|
|
Bitmap Info Header
|
biSize
|
40
|
|
Width
|
320
|
|
Height
|
240
|
|
Planes
|
1
|
|
Bits
|
24
|
|
Compression
|
TEXT: MP43
0000: 4D 50 34 33 MP43
|
|
Image Size
|
230400 ( 0x38400 )
|
|
X Pels / Meter
|
0
|
|
Y Pels / Meter
|
0
|
|
Colors Used
|
0
|
|
Colors Important
|
0
|
Compression ID 就是video 的格式,MP43。附表3
解析完了所有的 Stream Properties Object 就可以获得所有音视频基本信息。
Codec List Object
这个object 表示asf文件中包含的codec信息。
Object ID
|
86D15240-311D-11D0-A3A4-00A0C90348F6
|
|
Object Size
|
226 ( 0xE2 )
|
|
|
Codec ID
|
Reserved 2
|
|
Codecs
|
Name
|
Description
|
Type
|
Format / FourCC
|
Info Size
|
Info
|
|
"Windows Media Audio V2"
|
" 64 kbps, 44 kHz, stereo"
|
WMT_CODECINFO_AUDIO
|
353
|
2
|
0000: 61 01 a
|
|
"Microsoft MPEG-4 Video Codec V3"
|
""
|
WMT_CODECINFO_VIDEO
|
MP43
|
4
|
TEXT: MP43
0000: 4D 50 34 33 MP43
|
|
|
这个之前 Stream Properties Object 解析后的信息一致。
未完待续......
附表1
附表2
Tag
|
Description
|
0
|
0x0000
|
Unknown
|
1
|
0x0001
|
Microsoft PCM
|
2
|
0x0002
|
Microsoft ADPCM
|
3
|
0x0003
|
IEEE Float
|
4
|
0x0004
|
Compaq VSELP
|
5
|
0x0005
|
IBM CVSD
|
6
|
0x0006
|
Microsoft ALAW
|
7
|
0x0007
|
Microsoft MULAW
|
16
|
0x0010
|
OKI ADPCM
|
17
|
0x0011
|
Intel DVI ADPCM
|
18
|
0x0012
|
Videologic MediaSpace ADPCM
|
19
|
0x0013
|
Sierra ADPCM
|
20
|
0x0014
|
Antex Electronics G.723 ADPCM
|
21
|
0x0015
|
DSP Solution DIGISTD
|
22
|
0x0016
|
DSP Solution DIGIFIX
|
23
|
0x0017
|
Dialogic OKI ADPCM
|
24
|
0x0018
|
MediaVision ADPCM
|
25
|
0x0019
|
HP CU
|
32
|
0x0020
|
Yamaha ADPCM
|
33
|
0x0021
|
Speech Compression Sonarc
|
34
|
0x0022
|
DSP Group True Speech
|
35
|
0x0023
|
Echo Speech EchoSC1
|
36
|
0x0024
|
Audiofile AF36
|
37
|
0x0025
|
APTX
|
38
|
0x0026
|
AudioFile AF10
|
39
|
0x0027
|
Prosody 1612
|
40
|
0x0028
|
LRC
|
48
|
0x0030
|
Dolby AC2
|
49
|
0x0031
|
Microsoft GSM610
|
50
|
0x0032
|
Microsoft MSNAudio
|
51
|
0x0033
|
Antex ADPCME
|
52
|
0x0034
|
Control Res VQLPC
|
53
|
0x0035
|
Digireal
|
54
|
0x0036
|
DigiADPCM AC2
|
55
|
0x0037
|
Control Res CR10
|
56
|
0x0038
|
NMS VBXADPCM AC2
|
57
|
0x0039
|
Roland RDAC
|
58
|
0x003A
|
EchoSC3
|
59
|
0x003B
|
Rockwell ADPCM
|
60
|
0x003C
|
Rockwell Digit LK
|
61
|
0x003D
|
Xebec
|
64
|
0x0040
|
Antex Electronics G.721
|
65
|
0x0041
|
Antex Electronics G.728 CELP
|
66
|
0x0042
|
Microsoft MSG723
|
80
|
0x0050
|
MPEG
|
82
|
0x0052
|
Voxware RT24
|
83
|
0x0053
|
InSoft PAC
|
85
|
0x0055
|
MPEG Layer 3
|
89
|
0x0059
|
Lucent G.723
|
96
|
0x0060
|
Cirrus
|
97
|
0x0061
|
ESPCM
|
98
|
0x0062
|
Voxware
|
99
|
0x0063
|
Canopus Atrac
|
100
|
0x0064
|
APICOM G.726 ADPCM
|
101
|
0x0065
|
APICOM G.722 ADPCM
|
102
|
0x0066
|
Microsoft DSAT
|
103
|
0x0067
|
Microsoft DSAT Display
|
105
|
0x0069
|
Voxware Byte Aligned
|
112
|
0x0070
|
Voxware AC8
|
113
|
0x0071
|
Voxware AC10
|
114
|
0x0072
|
Voxware AC16
|
115
|
0x0073
|
Voxware AC20
|
116
|
0x0074
|
Voxware Metavoice
|
117
|
0x0075
|
Voxware Metasound
|
118
|
0x0076
|
Voxware RT29HW
|
119
|
0x0077
|
Voxware VR12
|
120
|
0x0078
|
Voxware VR18
|
121
|
0x0079
|
Voxware TQ40
|
128
|
0x0080
|
Softsound
|
129
|
0x0081
|
Voxware TQ60
|
130
|
0x0082
|
MSRT24
|
131
|
0x0083
|
AT&T G.729A
|
132
|
0x0084
|
Motion Pixels MVI MV12
|
133
|
0x0085
|
DF G.726
|
134
|
0x0086
|
DF GSM610
|
136
|
0x0088
|
ISIAudio
|
137
|
0x0089
|
Onlive
|
145
|
0x0091
|
Siemens SBC24
|
146
|
0x0092
|
Dolby AC3 SPDIF
|
151
|
0x0097
|
ZyXEL ADPCM
|
152
|
0x0098
|
Philips LPCBB
|
153
|
0x0099
|
Packed
|
256
|
0x0100
|
Rhetorex ADPCM
|
257
|
0x0101
|
BeCubed IRAT
|
273
|
0x0111
|
Vivo G.723
|
274
|
0x0112
|
Vivo Siren
|
291
|
0x0123
|
DEC G.723
|
512
|
0x0200
|
Creative ADPCM
|
514
|
0x0202
|
Creative FastSpeech8
|
515
|
0x0203
|
Creative FastSpeech10
|
544
|
0x0220
|
Quarterdeck
|
768
|
0x0300
|
Fujitsu FM Towns Snd
|
1024
|
0x0400
|
BTV Digital
|
1664
|
0x0680
|
AT&T VME VMPCM
|
4096
|
0x1000
|
Olivetti OLIGSM
|
4097
|
0x1001
|
Olivetti OLIADPCM
|
4098
|
0x1002
|
Olivetti OLICELP
|
4099
|
0x1003
|
Olivetti OLISBC
|
4100
|
0x1004
|
Olivetti OLIOPR
|
4352
|
0x1100
|
LH Codec
|
5120
|
0x1400
|
Norris
|
5121
|
0x1401
|
AT&T ISIAudio
|
5376
|
0x1500
|
AT&T Soundspace Music Compression
|
8192
|
0x2000
|
DVM
|
65534
|
0xFFFE
|
WAVE_FORMAT_EXTENSIBLE
|
65535
|
0xFFFF
|
Experimental
|
附表3
-
const AVCodecTag ff_codec_bmp_tags[] = {
-
{ AV_CODEC_ID_H264, MKTAG('H', '2', '6', '4') },
-
{ AV_CODEC_ID_H264, MKTAG('h', '2', '6', '4') },
-
{ AV_CODEC_ID_H264, MKTAG('X', '2', '6', '4') },
-
{ AV_CODEC_ID_H264, MKTAG('x', '2', '6', '4') },
-
{ AV_CODEC_ID_H264, MKTAG('a', 'v', 'c', '1') },
-
{ AV_CODEC_ID_H264, MKTAG('D', 'A', 'V', 'C') },
-
{ AV_CODEC_ID_H264, MKTAG('V', 'S', 'S', 'H') },
-
{ AV_CODEC_ID_H264, MKTAG('Q', '2', '6', '4') },
-
{ AV_CODEC_ID_H263, MKTAG('H', '2', '6', '3') },
-
{ AV_CODEC_ID_H263, MKTAG('X', '2', '6', '3') },
-
{ AV_CODEC_ID_H263, MKTAG('T', '2', '6', '3') },
-
{ AV_CODEC_ID_H263, MKTAG('L', '2', '6', '3') },
-
{ AV_CODEC_ID_H263, MKTAG('V', 'X', '1', 'K') },
-
{ AV_CODEC_ID_H263, MKTAG('Z', 'y', 'G', 'o') },
-
{ AV_CODEC_ID_H263, MKTAG('M', '2', '6', '3') },
-
{ AV_CODEC_ID_H263P, MKTAG('H', '2', '6', '3') },
-
{ AV_CODEC_ID_H263I, MKTAG('I', '2', '6', '3') },
-
{ AV_CODEC_ID_H261, MKTAG('H', '2', '6', '1') },
-
{ AV_CODEC_ID_H263, MKTAG('U', '2', '6', '3') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('F', 'M', 'P', '4') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('D', 'I', 'V', 'X') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('D', 'X', '5', '0') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('X', 'V', 'I', 'D') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('M', 'P', '4', 'S') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('M', '4', 'S', '2') },
-
{ AV_CODEC_ID_MPEG4, MKTAG( 4 , 0 , 0 , 0 ) },
-
{ AV_CODEC_ID_MPEG4, MKTAG('D', 'I', 'V', '1') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('B', 'L', 'Z', '0') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('m', 'p', '4', 'v') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('U', 'M', 'P', '4') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('W', 'V', '1', 'F') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('S', 'E', 'D', 'G') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('R', 'M', 'P', '4') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('3', 'I', 'V', '2') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('W', 'A', 'W', 'V') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('F', 'F', 'D', 'S') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('F', 'V', 'F', 'W') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('D', 'C', 'O', 'D') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('M', 'V', 'X', 'M') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('P', 'M', '4', 'V') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('S', 'M', 'P', '4') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('D', 'X', 'G', 'M') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('V', 'I', 'D', 'M') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('M', '4', 'T', '3') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('G', 'E', 'O', 'X') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('H', 'D', 'X', '4') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('D', 'M', 'K', '2') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('D', 'I', 'G', 'I') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('I', 'N', 'M', 'C') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('E', 'P', 'H', 'V') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('E', 'M', '4', 'A') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('M', '4', 'C', 'C') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('S', 'N', '4', '0') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('V', 'S', 'P', 'X') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('U', 'L', 'D', 'X') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('G', 'E', 'O', 'V') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('S', 'I', 'P', 'P') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('S', 'M', '4', 'V') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('X', 'V', 'I', 'X') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('D', 'r', 'e', 'X') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('Q', 'M', 'P', '4') },
-
{ AV_CODEC_ID_MPEG4, MKTAG('P', 'L', 'V', '1') },
-
{ AV_CODEC_ID_MSMPEG4V3, MKTAG('M', 'P', '4', '3') },
-
{ AV_CODEC_ID_MSMPEG4V3, MKTAG('D', 'I', 'V', '3') },
-
{ AV_CODEC_ID_MSMPEG4V3, MKTAG('M', 'P', 'G', '3') },
-
{ AV_CODEC_ID_MSMPEG4V3, MKTAG('D', 'I', 'V', '5') },
-
{ AV_CODEC_ID_MSMPEG4V3, MKTAG('D', 'I', 'V', '6') },
-
{ AV_CODEC_ID_MSMPEG4V3, MKTAG('D', 'I', 'V', '4') },
-
{ AV_CODEC_ID_MSMPEG4V3, MKTAG('D', 'V', 'X', '3') },
-
{ AV_CODEC_ID_MSMPEG4V3, MKTAG('A', 'P', '4', '1') },
-
{ AV_CODEC_ID_MSMPEG4V3, MKTAG('C', 'O', 'L', '1') },
-
{ AV_CODEC_ID_MSMPEG4V3, MKTAG('C', 'O', 'L', '0') },
-
{ AV_CODEC_ID_MSMPEG4V2, MKTAG('M', 'P', '4', '2') },
-
{ AV_CODEC_ID_MSMPEG4V2, MKTAG('D', 'I', 'V', '2') },
-
{ AV_CODEC_ID_MSMPEG4V1, MKTAG('M', 'P', 'G', '4') },
-
{ AV_CODEC_ID_MSMPEG4V1, MKTAG('M', 'P', '4', '1') },
-
{ AV_CODEC_ID_WMV1, MKTAG('W', 'M', 'V', '1') },
-
{ AV_CODEC_ID_WMV2, MKTAG('W', 'M', 'V', '2') },
-
{ AV_CODEC_ID_DVVIDEO, MKTAG('d', 'v', 's', 'd') },
-
{ AV_CODEC_ID_DVVIDEO, MKTAG('d', 'v', 'h', 'd') },
-
{ AV_CODEC_ID_DVVIDEO, MKTAG('d', 'v', 'h', '1') },
-
{ AV_CODEC_ID_DVVIDEO, MKTAG('d', 'v', 's', 'l') },
-
{ AV_CODEC_ID_DVVIDEO, MKTAG('d', 'v', '2', '5') },
-
{ AV_CODEC_ID_DVVIDEO, MKTAG('d', 'v', '5', '0') },
-
{ AV_CODEC_ID_DVVIDEO, MKTAG('c', 'd', 'v', 'c') },
-
{ AV_CODEC_ID_DVVIDEO, MKTAG('C', 'D', 'V', 'H') },
-
{ AV_CODEC_ID_DVVIDEO, MKTAG('C', 'D', 'V', '5') },
-
{ AV_CODEC_ID_DVVIDEO, MKTAG('d', 'v', 'c', ' ') },
-
{ AV_CODEC_ID_DVVIDEO, MKTAG('d', 'v', 'c', 's') },
-
{ AV_CODEC_ID_DVVIDEO, MKTAG('d', 'v', 'h', '1') },
-
{ AV_CODEC_ID_DVVIDEO, MKTAG('d', 'v', 'i', 's') },
-
{ AV_CODEC_ID_DVVIDEO, MKTAG('p', 'd', 'v', 'c') },
-
{ AV_CODEC_ID_DVVIDEO, MKTAG('S', 'L', '2', '5') },
-
{ AV_CODEC_ID_DVVIDEO, MKTAG('S', 'L', 'D', 'V') },
-
{ AV_CODEC_ID_MPEG1VIDEO, MKTAG('m', 'p', 'g', '1') },
-
{ AV_CODEC_ID_MPEG1VIDEO, MKTAG('m', 'p', 'g', '2') },
-
{ AV_CODEC_ID_MPEG2VIDEO, MKTAG('m', 'p', 'g', '2') },
-
{ AV_CODEC_ID_MPEG2VIDEO, MKTAG('M', 'P', 'E', 'G') },
-
{ AV_CODEC_ID_MPEG1VIDEO, MKTAG('P', 'I', 'M', '1') },
-
{ AV_CODEC_ID_MPEG2VIDEO, MKTAG('P', 'I', 'M', '2') },
-
{ AV_CODEC_ID_MPEG1VIDEO, MKTAG('V', 'C', 'R', '2') },
-
{ AV_CODEC_ID_MPEG1VIDEO, MKTAG( 1 , 0 , 0 , 16) },
-
{ AV_CODEC_ID_MPEG2VIDEO, MKTAG( 2 , 0 , 0 , 16) },
-
{ AV_CODEC_ID_MPEG4, MKTAG( 4 , 0 , 0 , 16) },
-
{ AV_CODEC_ID_MPEG2VIDEO, MKTAG('D', 'V', 'R', ' ') },
-
{ AV_CODEC_ID_MPEG2VIDEO, MKTAG('M', 'M', 'E', 'S') },
-
{ AV_CODEC_ID_MPEG2VIDEO, MKTAG('L', 'M', 'P', '2') },
-
{ AV_CODEC_ID_MPEG2VIDEO, MKTAG('s', 'l', 'i', 'f') },
-
{ AV_CODEC_ID_MPEG2VIDEO, MKTAG('E', 'M', '2', 'V') },
-
{ AV_CODEC_ID_MPEG2VIDEO, MKTAG('M', '7', '0', '1') },
-
{ AV_CODEC_ID_MPEG2VIDEO, MKTAG('m', 'p', 'g', 'v') },
-
{ AV_CODEC_ID_MPEG1VIDEO, MKTAG('B', 'W', '1', '0') },
-
{ AV_CODEC_ID_MPEG1VIDEO, MKTAG('X', 'M', 'P', 'G') },
-
{ AV_CODEC_ID_MJPEG, MKTAG('M', 'J', 'P', 'G') },
-
{ AV_CODEC_ID_MJPEG, MKTAG('L', 'J', 'P', 'G') },
-
{ AV_CODEC_ID_MJPEG, MKTAG('d', 'm', 'b', '1') },
-
{ AV_CODEC_ID_MJPEG, MKTAG('m', 'j', 'p', 'a') },
-
{ AV_CODEC_ID_LJPEG, MKTAG('L', 'J', 'P', 'G') },
-
{ AV_CODEC_ID_MJPEG, MKTAG('J', 'P', 'G', 'L') },
-
{ AV_CODEC_ID_JPEGLS, MKTAG('M', 'J', 'L', 'S') },
-
{ AV_CODEC_ID_JPEGLS, MKTAG('M', 'J', 'P', 'G') },
-
{ AV_CODEC_ID_MJPEG, MKTAG('M', 'J', 'L', 'S') },
-
{ AV_CODEC_ID_MJPEG, MKTAG('j', 'p', 'e', 'g') },
-
{ AV_CODEC_ID_MJPEG, MKTAG('I', 'J', 'P', 'G') },
-
{ AV_CODEC_ID_AVRN, MKTAG('A', 'V', 'R', 'n') },
-
{ AV_CODEC_ID_MJPEG, MKTAG('A', 'C', 'D', 'V') },
-
{ AV_CODEC_ID_MJPEG, MKTAG('Q', 'I', 'V', 'G') },
-
{ AV_CODEC_ID_MJPEG, MKTAG('S', 'L', 'M', 'J') },
-
{ AV_CODEC_ID_MJPEG, MKTAG('C', 'J', 'P', 'G') },
-
{ AV_CODEC_ID_MJPEG, MKTAG('I', 'J', 'L', 'V') },
-
{ AV_CODEC_ID_MJPEG, MKTAG('M', 'V', 'J', 'P') },
-
{ AV_CODEC_ID_MJPEG, MKTAG('A', 'V', 'I', '1') },
-
{ AV_CODEC_ID_MJPEG, MKTAG('A', 'V', 'I', '2') },
-
{ AV_CODEC_ID_MJPEG, MKTAG('M', 'T', 'S', 'J') },
-
{ AV_CODEC_ID_MJPEG, MKTAG('Z', 'J', 'P', 'G') },
-
{ AV_CODEC_ID_MJPEG, MKTAG('M', 'M', 'J', 'P') },
-
{ AV_CODEC_ID_HUFFYUV, MKTAG('H', 'F', 'Y', 'U') },
-
{ AV_CODEC_ID_FFVHUFF, MKTAG('F', 'F', 'V', 'H') },
-
{ AV_CODEC_ID_CYUV, MKTAG('C', 'Y', 'U', 'V') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG( 0 , 0 , 0 , 0 ) },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG( 3 , 0 , 0 , 0 ) },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('I', '4', '2', '0') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('Y', 'U', 'Y', '2') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '4', '2', '2') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('V', '4', '2', '2') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('Y', 'U', 'N', 'V') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('U', 'Y', 'N', 'V') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('U', 'Y', 'N', 'Y') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('u', 'y', 'v', '1') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('2', 'V', 'u', '1') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('2', 'v', 'u', 'y') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('y', 'u', 'v', 's') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('y', 'u', 'v', '2') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('P', '4', '2', '2') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('Y', 'V', '1', '2') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('Y', 'V', '1', '6') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('Y', 'V', '2', '4') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('U', 'Y', 'V', 'Y') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('V', 'Y', 'U', 'Y') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('I', 'Y', 'U', 'V') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '8', '0', '0') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '8', ' ', ' ') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('H', 'D', 'Y', 'C') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('Y', 'V', 'U', '9') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('V', 'D', 'T', 'Z') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '4', '1', '1') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('N', 'V', '1', '2') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('N', 'V', '2', '1') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '4', '1', 'B') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('Y', '4', '2', 'B') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('Y', 'U', 'V', '9') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('Y', 'V', 'U', '9') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('a', 'u', 'v', '2') },
-
{ AV_CODEC_ID_RAWVIDEO, MKTAG('Y', 'V', 'Y', 'U') },
-
{ AV_CODEC_ID_FRWU, MKTAG('F', 'R', 'W', 'U') },
-
{ AV_CODEC_ID_R10K, MKTAG('R', '1', '0', 'k') },
-
{ AV_CODEC_ID_R210, MKTAG('r', '2', '1', '0') },
-
{ AV_CODEC_ID_V210, MKTAG('v', '2', '1', '0') },
-
{ AV_CODEC_ID_V308, MKTAG('v', '3', '0', '8') },
-
{ AV_CODEC_ID_V408, MKTAG('v', '4', '0', '8') },
-
{ AV_CODEC_ID_AYUV, MKTAG('A', 'Y', 'U', 'V') },
-
{ AV_CODEC_ID_V410, MKTAG('v', '4', '1', '0') },
-
{ AV_CODEC_ID_YUV4, MKTAG('y', 'u', 'v', '4') },
-
{ AV_CODEC_ID_INDEO3, MKTAG('I', 'V', '3', '1') },
-
{ AV_CODEC_ID_INDEO3, MKTAG('I', 'V', '3', '2') },
-
{ AV_CODEC_ID_INDEO4, MKTAG('I', 'V', '4', '1') },
-
{ AV_CODEC_ID_INDEO5, MKTAG('I', 'V', '5', '0') },
-
{ AV_CODEC_ID_VP3, MKTAG('V', 'P', '3', '1') },
-
{ AV_CODEC_ID_VP3, MKTAG('V', 'P', '3', '0') },
-
{ AV_CODEC_ID_VP5, MKTAG('V', 'P', '5', '0') },
-
{ AV_CODEC_ID_VP6, MKTAG('V', 'P', '6', '0') },
-
{ AV_CODEC_ID_VP6, MKTAG('V', 'P', '6', '1') },
-
{ AV_CODEC_ID_VP6, MKTAG('V', 'P', '6', '2') },
-
{ AV_CODEC_ID_VP6F, MKTAG('V', 'P', '6', 'F') },
-
{ AV_CODEC_ID_VP6F, MKTAG('F', 'L', 'V', '4') },
-
{ AV_CODEC_ID_VP8, MKTAG('V', 'P', '8', '0') },
-
{ AV_CODEC_ID_ASV1, MKTAG('A', 'S', 'V', '1') },
-
{ AV_CODEC_ID_ASV2, MKTAG('A', 'S', 'V', '2') },
-
{ AV_CODEC_ID_VCR1, MKTAG('V', 'C', 'R', '1') },
-
{ AV_CODEC_ID_FFV1, MKTAG('F', 'F', 'V', '1') },
-
{ AV_CODEC_ID_XAN_WC4, MKTAG('X', 'x', 'a', 'n') },
-
{ AV_CODEC_ID_MIMIC, MKTAG('L', 'M', '2', '0') },
-
{ AV_CODEC_ID_MSRLE, MKTAG('m', 'r', 'l', 'e') },
-
{ AV_CODEC_ID_MSRLE, MKTAG( 1 , 0 , 0 , 0 ) },
-
{ AV_CODEC_ID_MSRLE, MKTAG( 2 , 0 , 0 , 0 ) },
-
{ AV_CODEC_ID_MSVIDEO1, MKTAG('M', 'S', 'V', 'C') },
-
{ AV_CODEC_ID_MSVIDEO1, MKTAG('m', 's', 'v', 'c') },
-
{ AV_CODEC_ID_MSVIDEO1, MKTAG('C', 'R', 'A', 'M') },
-
{ AV_CODEC_ID_MSVIDEO1, MKTAG('c', 'r', 'a', 'm') },
-
{ AV_CODEC_ID_MSVIDEO1, MKTAG('W', 'H', 'A', 'M') },
-
{ AV_CODEC_ID_MSVIDEO1, MKTAG('w', 'h', 'a', 'm') },
-
{ AV_CODEC_ID_CINEPAK, MKTAG('c', 'v', 'i', 'd') },
-
{ AV_CODEC_ID_TRUEMOTION1, MKTAG('D', 'U', 'C', 'K') },
-
{ AV_CODEC_ID_TRUEMOTION1, MKTAG('P', 'V', 'E', 'Z') },
-
{ AV_CODEC_ID_MSZH, MKTAG('M', 'S', 'Z', 'H') },
-
{ AV_CODEC_ID_ZLIB, MKTAG('Z', 'L', 'I', 'B') },
-
{ AV_CODEC_ID_SNOW, MKTAG('S', 'N', 'O', 'W') },
-
{ AV_CODEC_ID_4XM, MKTAG('4', 'X', 'M', 'V') },
-
{ AV_CODEC_ID_FLV1, MKTAG('F', 'L', 'V', '1') },
-
{ AV_CODEC_ID_FLV1, MKTAG('S', '2', '6', '3') },
-
{ AV_CODEC_ID_FLASHSV, MKTAG('F', 'S', 'V', '1') },
-
{ AV_CODEC_ID_SVQ1, MKTAG('s', 'v', 'q', '1') },
-
{ AV_CODEC_ID_TSCC, MKTAG('t', 's', 'c', 'c') },
-
{ AV_CODEC_ID_ULTI, MKTAG('U', 'L', 'T', 'I') },
-
{ AV_CODEC_ID_VIXL, MKTAG('V', 'I', 'X', 'L') },
-
{ AV_CODEC_ID_QPEG, MKTAG('Q', 'P', 'E', 'G') },
-
{ AV_CODEC_ID_QPEG, MKTAG('Q', '1', '.', '0') },
-
{ AV_CODEC_ID_QPEG, MKTAG('Q', '1', '.', '1') },
-
{ AV_CODEC_ID_WMV3, MKTAG('W', 'M', 'V', '3') },
-
{ AV_CODEC_ID_WMV3IMAGE, MKTAG('W', 'M', 'V', 'P') },
-
{ AV_CODEC_ID_VC1, MKTAG('W', 'V', 'C', '1') },
-
{ AV_CODEC_ID_VC1, MKTAG('W', 'M', 'V', 'A') },
-
{ AV_CODEC_ID_VC1IMAGE, MKTAG('W', 'V', 'P', '2') },
-
{ AV_CODEC_ID_LOCO, MKTAG('L', 'O', 'C', 'O') },
-
{ AV_CODEC_ID_WNV1, MKTAG('W', 'N', 'V', '1') },
-
{ AV_CODEC_ID_WNV1, MKTAG('Y', 'U', 'V', '8') },
-
{ AV_CODEC_ID_AASC, MKTAG('A', 'A', 'S', '4') },
-
{ AV_CODEC_ID_AASC, MKTAG('A', 'A', 'S', 'C') },
-
{ AV_CODEC_ID_INDEO2, MKTAG('R', 'T', '2', '1') },
-
{ AV_CODEC_ID_FRAPS, MKTAG('F', 'P', 'S', '1') },
-
{ AV_CODEC_ID_THEORA, MKTAG('t', 'h', 'e', 'o') },
-
{ AV_CODEC_ID_TRUEMOTION2, MKTAG('T', 'M', '2', '0') },
-
{ AV_CODEC_ID_CSCD, MKTAG('C', 'S', 'C', 'D') },
-
{ AV_CODEC_ID_ZMBV, MKTAG('Z', 'M', 'B', 'V') },
-
{ AV_CODEC_ID_KMVC, MKTAG('K', 'M', 'V', 'C') },
-
{ AV_CODEC_ID_CAVS, MKTAG('C', 'A', 'V', 'S') },
-
{ AV_CODEC_ID_JPEG2000, MKTAG('m', 'j', 'p', '2') },
-
{ AV_CODEC_ID_JPEG2000, MKTAG('M', 'J', '2', 'C') },
-
{ AV_CODEC_ID_JPEG2000, MKTAG('L', 'J', '2', 'C') },
-
{ AV_CODEC_ID_JPEG2000, MKTAG('L', 'J', '2', 'K') },
-
{ AV_CODEC_ID_JPEG2000, MKTAG('I', 'P', 'J', '2') },
-
{ AV_CODEC_ID_VMNC, MKTAG('V', 'M', 'n', 'c') },
-
{ AV_CODEC_ID_TARGA, MKTAG('t', 'g', 'a', ' ') },
-
{ AV_CODEC_ID_PNG, MKTAG('M', 'P', 'N', 'G') },
-
{ AV_CODEC_ID_PNG, MKTAG('P', 'N', 'G', '1') },
-
{ AV_CODEC_ID_CLJR, MKTAG('C', 'L', 'J', 'R') },
-
{ AV_CODEC_ID_DIRAC, MKTAG('d', 'r', 'a', 'c') },
-
{ AV_CODEC_ID_RPZA, MKTAG('a', 'z', 'p', 'r') },
-
{ AV_CODEC_ID_RPZA, MKTAG('R', 'P', 'Z', 'A') },
-
{ AV_CODEC_ID_RPZA, MKTAG('r', 'p', 'z', 'a') },
-
{ AV_CODEC_ID_SP5X, MKTAG('S', 'P', '5', '4') },
-
{ AV_CODEC_ID_AURA, MKTAG('A', 'U', 'R', 'A') },
-
{ AV_CODEC_ID_AURA2, MKTAG('A', 'U', 'R', '2') },
-
{ AV_CODEC_ID_DPX, MKTAG('d', 'p', 'x', ' ') },
-
{ AV_CODEC_ID_KGV1, MKTAG('K', 'G', 'V', '1') },
-
{ AV_CODEC_ID_LAGARITH, MKTAG('L', 'A', 'G', 'S') },
-
{ AV_CODEC_ID_G2M, MKTAG('G', '2', 'M', '2') },
-
{ AV_CODEC_ID_G2M, MKTAG('G', '2', 'M', '3') },
-
{ AV_CODEC_ID_G2M, MKTAG('G', '2', 'M', '4') },
-
{ AV_CODEC_ID_AMV, MKTAG('A', 'M', 'V', 'F') },
-
{ AV_CODEC_ID_UTVIDEO, MKTAG('U', 'L', 'R', 'A') },
-
{ AV_CODEC_ID_UTVIDEO, MKTAG('U', 'L', 'R', 'G') },
-
{ AV_CODEC_ID_UTVIDEO, MKTAG('U', 'L', 'Y', '0') },
-
{ AV_CODEC_ID_UTVIDEO, MKTAG('U', 'L', 'Y', '2') },
-
{ AV_CODEC_ID_VBLE, MKTAG('V', 'B', 'L', 'E') },
-
{ AV_CODEC_ID_ESCAPE130, MKTAG('E', '1', '3', '0') },
-
{ AV_CODEC_ID_DXTORY, MKTAG('x', 't', 'o', 'r') },
-
{ AV_CODEC_ID_ZEROCODEC, MKTAG('Z', 'E', 'C', 'O') },
-
{ AV_CODEC_ID_Y41P, MKTAG('Y', '4', '1', 'P') },
-
{ AV_CODEC_ID_FLIC, MKTAG('A', 'F', 'L', 'C') },
-
{ AV_CODEC_ID_EXR, MKTAG('e', 'x', 'r', ' ') },
-
{ AV_CODEC_ID_MSS1, MKTAG('M', 'S', 'S', '1') },
-
{ AV_CODEC_ID_MSA1, MKTAG('M', 'S', 'A', '1') },
-
{ AV_CODEC_ID_TSCC2, MKTAG('T', 'S', 'C', '2') },
-
{ AV_CODEC_ID_MTS2, MKTAG('M', 'T', 'S', '2') },
-
{ AV_CODEC_ID_CLLC, MKTAG('C', 'L', 'L', 'C') },
-
{ AV_CODEC_ID_MSS2, MKTAG('M', 'S', 'S', '2') },
-
{ AV_CODEC_ID_SVQ3, MKTAG('S', 'V', 'Q', '3') },
-
{ AV_CODEC_ID_NONE, 0 }
-
};
阅读(4843) | 评论(0) | 转发(0) |