青园网站建设,seo网站优化软件,源码搭建网站,宜春网站建设哪家专业一、SCRIPTDATA
根据《video_file_format_spec_v10_1.pdf》第75页到76页#xff0c;如果某个Tag的Tag header中的TagType值为18#xff0c;表示该Tag为Script Tag#xff08;脚本Tag#xff0c;又称Data Tag、SCRIPTDATA tag#xff09;。这时如果Filter的值不为1表示未加…一、SCRIPTDATA
根据《video_file_format_spec_v10_1.pdf》第75页到76页如果某个Tag的Tag header中的TagType值为18表示该Tag为Script Tag脚本Tag又称Data Tag、SCRIPTDATA tag。这时如果Filter的值不为1表示未加密不需要预处理则StreamID之后紧接着的就是SCRIPTDATA。也就是说这时Tag header之后的是SCRIPTDATA 所以未加密的情况下一个Script Tag Tag header SCRIPTDATA。 根据《video_file_format_spec_v10_1.pdf》第80页SCRIPTDATA包含可选的加密元数据和脚本有效负载。加密的情况下SCRIPTDATA的Body为EncryptedBody未加密的情况下SCRIPTDATA的Body为ScriptTagBody。这里我们主要讲解未加密的情况 所以未加密的情况下SCRIPTDATA ScriptTagBody 二、ScriptTagBody
根据《video_file_format_spec_v10_1.pdf》第80页ScriptTagBody包含以Action Message FormatAMF编码的SCRIPTDATA。AMF是一种用于数据交换的开放标准旨在简化数据传输和解析过程。ScriptTagBody由Name和Value组成这两个属性都是SCRIPTDATAVALUE类型的 所以ScriptTagBody Name Value 三、SCRIPTDATAVALUE类型
根据《video_file_format_spec_v10_1.pdf》第80页到81页SCRIPTDATAVALUE类型由一个8位1字节的Type和一个ScriptDataValue组成。其中Type属性用来指定ScriptDataValue的类型根据Type值的不同ScriptDataValue的类型也不同 四、ScriptTagBody的Name属性
由上文我们可以知道ScriptTagBody由Name和Value组成。 Name属性指定方法或对象名称为SCRIPTDATAVALUE类型。Name对应的Type的值必为2所以Name对应的ScriptDataValue属性必为SCRIPTDATASTRING类型 根据《video_file_format_spec_v10_1.pdf》第83页SCRIPTDATASTRING类型用来记录存贮不超过65535个字符的字符串数据。SCRIPTDATASTRING类型由一个16位2字节的StringLength属性和一个存贮字符数据的StringData属性组成。其中StringLength属性用来指定要存贮的字符串的长度单位为字节StringData属性存贮实际的字符串数据不超过65535个字符 所以
ScriptTagBody的Name 1字节的值为2的Type 2字节的StringLength 可变长的StringData 五、ScriptTagBody的Value属性
ScriptTagBody的Value属性指定了AMF参数或对象的属性为SCRIPTDATAVALUE类型。Value对应的Type的值必为8所以Value对应的ScriptDataValue属性必为SCRIPTDATAECMAARRAY类型 根据《video_file_format_spec_v10_1.pdf》第81页SCRIPTDATAECMAARRAY类型存储一个ECMA数组。SCRIPTDATAECMAARRAY类型由一个32位4字节的ECMAArrayLength、一个由每个元素都为SCRIPTDATAOBJECTPROPERTY类型的数组构成的Variables和一个SCRIPTDATAOBJECTEND类型的List Terminator组成 所以
ScriptTagBody的Value 1字节的值为8的Type 4字节的ECMAArrayLength Variables数组 List Terminator 一ECMAArrayLength属性
SCRIPTDATAECMAARRAY类型的ECMAArrayLength属性指定ECMA数组中的元素个数。 二Variables属性
SCRIPTDATAECMAARRAY类型的Variables属性是一个数组该数组的每个元素都为SCRIPTDATAOBJECTPROPERTY类型。数组中的每个元素由变量名称PropertyName和变量的值PropertyData组成。根据《video_file_format_spec_v10_1.pdf》第82页PropertyName为上文提到过的SCRIPTDATASTRING类型而PropertyData为上文提到过的SCRIPTDATAVALUE类型 所以
Variables数组中某个元素 PropertyName PropertyData
Variables数组中某个元素的PropertyName 2字节的StringLength 可变长的StringData
Variables数组中某个元素的PropertyData 1字节的值为0到12的Type ScriptDataValue 三List Terminator属性
List Terminator属性是SCRIPTDATAOBJECTEND类型为终止符。根据《video_file_format_spec_v10_1.pdf》第82页SCRIPTDATAOBJECTEND类型用来终止SCRIPTDATAOBJECTPROPERTY类型的数组。SCRIPTDATAOBJECTEND类型固定3字节值必须为009 所以
ScriptTagBody的Value 1字节的值为8的Type 4字节的ECMAArrayLength Variables数组 List Terminator 1字节的值为8的Type 4字节的ECMAArrayLength Variables数组 3字节的终止符值固定为009 六、onMetaData
根据《video_file_format_spec_v10_1.pdf》第84页FLV文件的元数据对象应该在名称为“onMetadata”的SCRIPTDATA tagScript Tag中携带。也就是说FLV文件中存在一个特殊的Script Tag它的ScriptTagBody中的Name属性中的StringData属性存贮“onMetadata”字符串而它的ScriptTagBody中的Value属性中的Variables数组中的每个元素都分别为一个元数据属性。用来存贮当前文件的一些基本信息比如视频和音频的编解码器ID、视频的分辨率、文件大小、文件总时长、创建日期等 根据上图对于名称为“onMetadata”的Script Tag其Variables数组中的元素可用的属性 根据创建FLV文件的软件而有所不同。典型的属性包括
1.audiocodecid音频编解码器ID。根据《video_file_format_spec_v10_1.pdf》第76页可以看到FLV文件中的音频压缩编码格式可以为PCM、MP3......AAC等 2.audiodatarate音频码率单位为kilobits per second即Kbps。 3.audiodelay音频编解码器引入的延迟以秒为单位。 4.audiosamplerate音频采样率单位为Hz。 5.audiosamplesize音频采样位数。 6.canSeekToEnd表示最后一帧视频是否为关键帧能否跳转到最后。 7.creationdate该FLV文件的创建日期和时间。 8.duration该FLV文件的总时长以秒为单位。 9.filesize该FLV文件的总大小以字节为单位。 10.framerate视频帧率。 11.height视频分辨率的高以像素为单位。 12.stereo表示音频是否是立体声。 13.videocodecid视频编解码器ID。根据《video_file_format_spec_v10_1.pdf》第78页可以看到FLV文件中的视频压缩编码格式可以为H.263VP6......AVC即H.264等 14.videodatarate视频码率单位为kilobits per second即Kbps。 15.width视频分辨率的宽以像素为单位。 除了《video_file_format_spec_v10_1.pdf》第84页表格中显示的属性外某些软件比如FFmpeg生成的FLV文件中其名称为“onMetadata”的Script Tag的Variables数组中的可用元素可能还有
1.major_brand表示“最好”基于哪种格式来解析当前的文件。
2.minor_version提供 major_brand 的说明信息比如版本号。
3.compatible_brands文件兼容的brand列表。
4.encoder编码器。 七、总结
1.如果某个Tag的Tag header中的TagType值为18表示该Tag为Script Tag脚本Tag又称Data Tag、SCRIPTDATA tag。 2.未加密的情况下
一个Script Tag Tag header SCRIPTDATA
SCRIPTDATA ScriptTagBody
ScriptTagBody Name Value
ScriptTagBody的Name 1字节的值为2的Type 2字节的StringLength 可变长的StringData
ScriptTagBody的Value 1字节的值为8的Type 4字节的ECMAArrayLength Variables数组 3字节的终止符值固定为009
Variables数组中某个元素 PropertyName PropertyData
Variables数组中某个元素的PropertyName 2字节的StringLength 可变长的StringData
Variables数组中某个元素的PropertyData 1字节的值为0到12的Type ScriptDataValue 3.FLV文件中存在一个特殊的Script Tag它的ScriptTagBody中的Name属性中的StringData属性存贮“onMetadata”字符串而它的ScriptTagBody中的Value属性中的Variables数组中的每个元素都分别为一个元数据属性。用来存贮当前文件的一些基本信息比如视频和音频的编解码器ID、视频的分辨率、文件大小、文件总时长、创建日期等。