FLV 是FLASH VIDEO的简称,FLV流媒体格式是随着Flash MX的推出发展而来的视频格式。由于它形成的文件极小、加载速度极快,使得网络观看视频文件成为可能,它的出现有效地解决了视频文件导入Flash后,使导出的SWF文件体积庞大,不能在网络上很好的使用等问题。
FLV是被众多新一代视频分享网站所采用,是目前增长最快、最为广泛的视频传播格式。是在sorenson公司的压缩算法的基础上开发出来的,FLV格式不仅可以轻松的导入Flash中,速度极快,并且能起到保护版权的作用,并且可以不通过本地的微软或者REAL播放器播放视频。
nginx的FLV模块支持对FLV(flash)文件的拖动播放,nginx处理文件的过程为:
(1)为请求的文件增加FLV头"FLV\x1\x5\0\0\0\x9\0\0\0\0";
(2)根据请求参数中的start=XXX转发文件;
(1)Signature: UI8 Signature byte always 'F' (0x46)
(2)Signature: UI8 Signature byte always 'L' (0x4C)
(3)Signature: UI8 Signature byte always 'V' (0x56)
备注:前3个字节是格式签名,一般是FLV。
(4)Version: UI8 File version (for example, 0x01 for FLV version 1)
备注:第4个字节是FLV版本。
(5)TypeFlagsReserved:UB[5] Must be 0
(6)TypeFlagsAudio UB[1] Audio tags are present
(7)TypeFlagsReserved UB[1] Must be 0
(8)TypeFlagsVideo UB[1] Video tags are present
备注:第5个字节是流信息,最高5位必须是0,为保留位。
FLV header:
46 4c 56 (FLV)
01 (version)
05 (Flags)
00 00 00 09 (header长度,一般是9)
FLV body:
00 00 00 00
Audio tag数据区:
00 dd
#./configure –prefix=/root/macro --with-http_flv_module
#make
#make install
server{
location ~ \.flv${
flv; #处理flv视频
}
}
ngx_http_flv(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
函数功能:解析flv指令,设置handler为ngx_http_flv_handler。
ngx_http_flv_handler(ngx_http_request_t *r)
函数功能:处理flv视频需求,支持start=bytes参数。
备注:测试文件test.flv约27MB。
#curl http://10.0.2.15/test.flv?start=28129554
FLV格式:
http://noahgenius.iteye.com/blog/164782