新建一个Flash文档,按下“Ctrl+F7”组合键打开组件窗口,将Media Componets中的MediaPlayback组件拖入场景中。
用鼠标选中刚拖入的MediaPlayback组件,按下“Alt+F7”组合键打开“组件检查器”界面。组件检查器中的参数含义如下:定义了播放文件的类型为FLV,也可以播放MP3文件;URL中需要指定FLV文 件的路径,因为我们将FLV文件和Flash文件放在了同一目录中,所以这里只要指定文件名就可以了;Automatically Play为自动播放;Control Placement和Control Visibility分别为播放面板的位置和是否可见。
flv
FLV头文件
文件类型3bytes 总是FLV(0x46 0x4C 0x56)
版本1byte 一般是0x01,表示FLV version 1
流信息1byte 倒数第一bit是1表示有视频,倒数第三bit是1表示有
音频
,其他都应该是0(有些软件如flvtool2可能造成倒数第四bit是1,不过也没发现有什么不对)
header长度4bytes 整个
文件头
的长度,一般是9(3+1+1+4),有时候后面还有些别的信息,就不是9了
FLV头文件:(9字节)
1-3: 前3个字节是文件格式标识(FLV 0x46 0x4C 0x56).
4-4: 第4个字节是版本(0x01)
5-5: 第5个字节的前5个bit是保留的必须是0.
6-9: 第6-9的四个字节还是保留的.其数据为 00000009 .
整个文件头的长度,一般是9(3+1+1+4)
flv文件中的元信息,是一些描述flv文件各类属性的信息。这些信息以AMF格式保存在文件的起始部分。adobe官方的标准flv元信息项目如下(来源:
):
audiochannels
audiocodecid
audiodatarate
audiodevice
audioinputvolume
audiosamplerate
creationdate
duration (media files only)
fmleversion (Flash Media Live Encoder version) (media files only)
framerate
height
lastkeyframetimestamp (media files only)
lasttimestamp (media files only)
presetname
videocodecid
videodatarate
videodevice
videokeyframe_frequency
width
两个常用的操作metadata的工具是
flvtool2
和
FLVMDI
,都是把keyframes作为一个默认的元信息 项目。
audio信息1byte前四位bits表示
音频格式
:
* 0 -- 未压缩
* 1 -- ADPCM
* 2 -- MP3
* 5 -- Nellymoser 8kHz momo
* 6 -- Nellymoser
下面两位bits表示samplerate:
* 0 -- 5.5kHz
* 1 -- 11kHz
* 2 -- 22kHz
* 3 -- 44kHz
下面一位bit表示每个采样的长度:
* 0 -- snd8Bit
* 1 -- snd16Bit
下面一位bit表示类型:
* 0 -- sndMomo
* 1 -- sndStereo
audio数据区
不定
video tag 数据区
video信息1byte
前四位bits表示类型:
* 1 -- keyframe
* 2 -- inner frame
* 3 -- disposable inner frame (H.263 only)
后四位bits表示编码器id:
* 2 -- Seronson H.263
* 3 -- Screen video
* 4 -- On2 VP6
* 5 -- On2 VP6 without channel
* 6 -- Screen video version 2
video数据区
不定
ScriptTagData结构(控制帧)
该类型Tag又通常被称为Metadata Tag,会放一些关于FLV视频和音频的参数信息如:duration、width、height等。通常该类型Tag会跟在File Header后面作为第一个Tag出现,而且只有一个。
前11个字节为Tag Header结构 第一个AMF包(13字节):
第1个字节表示AMF包类型,一般总是0x02,表示字符串
第2-3个字节为UI16类型值,一般总是0x000A(“onMetaData”长度)。 后面字节一般总为“onMetaData”。(6F,6E,4D,65,74,61,44,61,74,61) 第二个AMF包:
第1个字节表示AMF包类型,一般总是0x08,表示数组。 第2-5个字节为UI32类型值,表示数组元素的个数。
后面即为各数组元素的封装,数组元素为元素名称和值组成的对。表示方法如下: 第1-2个字节表示元素名称的长度,假设为L。 后面跟着为长度为L的字符串。 第L+3个字节表示元素值的类型。
后面跟着为对应值,占用字节数取决于值的类型。