flv
FLASH VIDEO的简称
FLV 是FLASH VIDEO的简称,FLV流媒体格式是随着Flash MX的推出发展而来的视频格式。由于它形成的文件极小、加载速度极快,使得网络观看视频文件成为可能,它的出现有效地解决了视频文件导入Flash后,使导出的SWF文件体积庞大,不能在网络上很好的使用等问题。
flv发展
FLV是被众多新一代视频分享网站所采用,是增长最快、最为广泛的视频传播格式。是在sorenson公司的压缩算法的基础上开发出来的。FLV格式不仅可以轻松的导入Flash中,速度极快,并且能起到保护版权的作用,并且可以不通过本地的微软或者REAL播放器播放视频。
flv历史
普及
网络宽带的普及使中国网民数量跃升至全球第一,同时也造就了众多的网络神话,GOOGLE斥巨资收购YouTube,似乎将国内外本身已经够火的Web2.0视频网站被广泛关注。随后视频、播客等网站在国内如雨后春笋般兴起,新的网络战役一触即发,这对于FLV视频格式的普及无疑是一个巨大的推动力。
优势
FLV作为一种新兴的网络视频格式,能得到众多的网站支持并非偶然。除了FLV视频格式本身占有率低、视频质量良好、体积小等特点适合网络发展外,丰富、多样的资源也是FLV视频格式统一在线播放视频格式的一个重要因素。从最新的变形金刚到越狱再到各项体育节目,甚至于网友制作的自拍视频等都可以在网络中轻而易举的找到。
互联网上提供FLV视频的有两类网站,一种是专门的视频分享网站如美国的YouTube网站、国内的六间房土豆网等。另一种是门户网站提供了视频播客的板块,提供了自己的视频频道,如新浪视频播客等,也是使用FLV格式的视频。此外,百度也推出了关于视频搜索的功能,里面搜索出来的视频基本都是采用了流行的FLV格式。
使用
Web 2.0时代,要说什么类型网站最火,自然是以国外的Youtube,国内的优酷土豆网、UUME为代表的视频分享网站了。这类网站提供的视频内容可谓各有千秋,但它们无一例外的都使用了Flash作为视频播放载体,支撑这些视频网站的技术基础就是——Flash 视频(FLV) 。
FLV 是一种全新的流媒体视频格式,它利用了网页上广泛使用的Flash Player 平台,将视频整合到Flash动画中。也就是说,网站的访问者只要能看Flash动画,自然也能看FLV格式视频,而无需再额外安装其它视频插件,FLV视频的使用给视频传播带来了极大便利。
从Flash MX 2004开始,软件就提供了FLV格式支持,不过笔者建议大家使用最新版本的Flash 8(最新的版本是Flash CC了),这个版本的Flash中有一个独立的FLV转换工具:Flash 8 Video Encoder。点击系统菜单“程序”→“Macromedia”→“Macromedia Flash 8 Video Encoder”进入。
进入程序后,可以看到软件界面非常简单。实际上使用这一工具转换普通视频为FLV视频很容易,只需几步即可完成。
点击“增加”按纽,软件自动调用系统“打开”对话,选择需要导入的视频即可。Flash 8 Video Encoder支持转换的视频格式相当广泛,如:AVIWMVMPEGASFMOV等常见视频格式。视频添加进队列后,如果你不需要做特殊修改,那么点击“开始队列”按纽,程序即开始视频转换。软件转换视频的速度,笔者总的感觉还是较快,当然这与原始视频大小及设置的视频数据速率有关。整个转换过程,主窗口下方都有信息提示,并且还能看到实时的进度预览。转换结束后,在转换视频同一文件夹下,我们就能得到一个同名的FLV文件。
当然,上述这些只是按照默认设置进行转换的情况,实际情况下,我们对于视频转换的控制还可以很多,点击主窗口“设置”按纽进入高级设置对话框。
视频编码设置对话框中,最显著的就是FLV视频品质设置,默认是“Flash 8- 中等品质(400kbps)”,软件内置7种不同的编码设置组合。我们也可以选择自定义设置,点击“显示高级设置”按纽,软件将显示自定义的设置界面。
软件提供了两种视频解码器供选择:On2 VP6(用于Flash Player 8,支持Alpha 通道)、Sorenson Spark(用于Flash Player 7,适用于低配置用户);“调整视频大小”也颇有用,我们很容易生成制定尺寸的动画;如果你只重视视频效果,那么你还可以对“音频编码”开刀,将默认编码数率设置低些,那么输出的文件还会更小巧。高级设置中的选择还很多,它甚至还提供了简单的视频编辑功能,点击“裁切和修剪”标签。
裁切使用很简单,软件提供了四个方向的控制,输入数值以裁切视频,或者点击“三角”按纽显示控制滑块,拖动滑块直观地调整视频尺寸,视频预览区会实时用虚线勾画裁切范围。
修剪的使用也不复杂,在视频预览区下方可以看到一个蓝色的视频进度指示条,拖动上方的“倒三角”按纽定位视频播放进度。进度指示条下方有两个按纽,它们就是“开始点”和“结束点”定位按纽,分别拖动按纽到所需位置,即完成简单的视频修剪。
得到了FLV文件,其实我们并不能直接在网页中使用,我们还需要将它嫁接到Flash动画中去。如同大家在各种视频网站中看到的一样,我们创建的Flash视频并不是简单播放就算了,它也是带播放控制的。
运行Flash 8,创建新的Flash 文档,点击菜单“文件”→“导入”→“导入视频”,进入“导入视频”对话框。
可以看到,选择视频时会有两种不同的选择:“在您的计算机上”、“已经部署到”,这两者是有区别的,不过我们仅需在本地测试动画,选择“在您的计算机上”。点击“浏览”按纽,通过系统打开对话框,载入我们刚生成的FLV文件,点击“下一个”按纽继续。
接下来选择“部署方式”为:“从Web服务器渐进式下载”,进入“外观”选项。
Flash 8当前已经为播放FLV视频内置了数十个播放控制器,它们的外观各异,控制选项也有区别,你可以根据自己的需要,选择一个合适的播放控制器,最后点击“完成”按纽结束。
返回Flash 8主窗口工作区,可以看到我们刚插入的视频已经布置到位了,此时你可以直接按Ctrl+Enter测试动画了。
不同方式
本地文件
作为一个独立的FLV文件。虽然Flash视频文件通常是交付使用的Flash Player的控制, FLV文件本身是全功能对自己的和可以发挥的或转换为其他格式,由本地存储如硬盘或CD上。[引文需要]
嵌入式swf
在一个嵌入式的SWF文件使用Flash创作工具(支持在Flash Player 6和更高版本)。整个档案必须在移交之后,才可以开始播放。改变影片需要重建的SWF文件。
逐步下载
逐步通过HTTP下载(支持在Flash Player 7和更高版本)。此方法使用的ActionScript ,包括一外部托管的Flash视频文件的客户端播放。渐进式下载有几个优势,包括缓冲,使用通用的HTTP服务器,并有能力再用一个单一的SWF Player的多重FLASH视频源。Flash Player 8中包括支持随机存取内部的视频文件使用部分下载功能的HTTP ,有时这是被称为流。不过,不同的流使用rtmp ,HTTP的“分流” ,不支持实时广播。流通过HTTP需要自订播放器和注射液的具体Flash视频中继载有确切的出发位置在字节时间码的每一个关键帧。使用此特定的信息,自定义的Flash视频播放器,可要求任何部分的Flash视频文件,开始在指定的关键帧。举例来说,Google视频和YouTube支持渐进式下载并可以寻求任何部分的视频前缓冲完成。服务器端的一部分,这个“ HTTP的伪分流”的方法是相当简单的执行,例如在PHP中,作为Apache的httpd模块,或1 lighttpd模块。丰富的媒体项目提供球员和Flash组件兼容的“HTTP伪分流”的方法。
rtmp方式
流通过rtmp到Flash Player的使用Flash媒体服务器(以前称为闪光通信服务器),风险投资, electroserver , wowza Pro或开放原始码red5服务器。截至2008年4月,有4个流录音机,供本议定书,重新编码screencast软件排除在外。
文件生成
生成
通过动画预览,我们可以发现,默认的Flash动画尺寸比播放器宽了不少,我们需要重新设置一下。鼠标在工作区中选择“播放器控件”,调用“属性”面板(Ctrl+F3),修改X、Y轴值为“0.0”,这样我们就将“播放器控件”这个元件定位到了工作区的左上方顶点处。点击菜单“修改”→“文档”,进入“文档属性”对话框,选择“匹配”值为“内容”,点击“确定”返回,于是Flash文档的尺寸就与播放器一致了。
如果大家制作的FLV视频动画只打算在本地计算中播放,那么就直接输出SWF文件即可,如果是准备在网络中调用,那么还需要做一些事情。
先上传自己制作的FLV文件到网络服务器,获得文件远程网络地址:如:http: //www.scxp.net/01.flv。接下来,选择工作区中的“播放器控件”,调用“参数”面板,找到“contentPath”字段,修改它的值为“http://www.scxp.net/01.flv”(原始值就是最开始大家设置的本地FLV文件路径)。
点击菜单“文件”→“导出”→“导出影片”,例:设置导出影片地址为“D:/”,文件名为“01.swf”。接下来,设置播放器版本为“Flash Player 8”,ActionScript版本为“ActionScript 2.0”,点击“确定”完成。
进入“D:/”,可以看到,除了刚生成的“01.swf”文件外,还多了个 “SteelOverPlaySeekMute.swf”文件,它也是调用Flash视频必须的文件,将这两个文件也上传到你的服务器中即可。以后你在网上任何地方需要调用Flash视频时,只需要插入服务器上的那个“01.swf”动画的网络地址即可。
注:设置Flash动画调用的FLV文件为网上远程路径后,本地预览“01.swf”文件会有安全警告,这是正常的情况,大家不必担心。
另外,很多的具有视频功能的MP3也支持flv格式
公司媒体
chameleogom播放器
MPlayer的(使用ffmpeg )
使用RealPlayer
xine (用途ffmpeg )
任何播放器,可以使用ffdshow (基于ffmpeg )DirectShow的编解码器:
Winamp中
Windows Media Player中
变焦播放器
任何播放器使用的QuickTime ,安装后的FLV的组成部分
文件下载
在线观看的flv视频文件基本都不提供下载,在此介绍两种下载方法:
temp下载
该方法对多数视频适用。
首先,正常观看视频,不要关闭浏览器
(这只是默认位置,若无法访问请打开“Internet选项”(IE中菜单栏内“工具”-->“Internet选项”)单击“浏览历史记录”中“设置”,“查看文件”(不同版本IE操作可能有所区别))
这个文件夹(有可能要用到文件夹选项中的“显示全部文件”才可看见),然后,查找扩展名为flv的文件即可,可以按时间排序,很容易找到。也可以按大小,视频文件一般都比较大,排在顶部本方法适合任何flv视频网站
专业工具
还有一种(推荐, 非常轻松地下载)可借助flv视频下载软件,例如:流行的有狂雷视频下载、维棠下载、硕鼠等,都是比较成熟的软件,可提供播放、下载、转换等功能。狂雷界面简单易用,知名度高,其本身是一个flv资源平台,提供的flv资源自然丰富,狂雷视频下载像迅雷一样,功能丰富,而且下载速度是同类所有下载软件中最快的,支持优酷分段视频的自动合并,还具有强大的视频转换功能,可根据手机型号来转换FLV视频到您手机支持的视频格式。维棠像FLASHGET一样,操作比较复杂,只有下载,没有搜索功能。还有像其他的flv小软件,比如xmlbar之类的,不过功能有点简单,易操作性一般。
另外还可以通过flvcd网站在线解析视频地址,直接浏览器另存为下载,无需安装插件.
文件结构
FLV是一个二进制文件,由文件头(FLV header)和很多tag组成。tag又可以分成三类:audio,video,script,分别代表音频流视频流,脚本流(关键字或者文件信息之类)。
FLV文件=FLV头文件+ tag1+tag内容1 + tag2+tag内容2 + ...+... + tagN+tag内容N。
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作为一个默认的元信息 项目。
FLV Body
FLV body就是由很多tag组成的,一个tag包括下列信息:
previoustagsize 4bytes 前一个tag的长度,第一个tag就是0
tag类型1byte
三类:
* 8 -- 音频tag
* 9 -- 视频tag
* 18 -- 脚本tag
数据区长度3bytes时间戳3bytes 单位毫秒,如果是脚本tag就是0
扩展时间戳1byte 作为时间戳的高位
streamsID 3bytes 总是0(不知道干啥用)
数据区
根据不同的tag类型就有不同的数据区
Audio tag 数据区
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个字节表示元素值的类型。
后面跟着为对应值,占用字节数取决于值的类型。
tag格式
tag类型信息,固定长度为15字节
1-4: 前一个tag长度(4字节),第一个tag就是0
5-5: tag类型(1字节);0x8音频;0x9视频;0x12脚本数据
6-8: tag内容大小(3字节)
9-11: 时间戳(3字节)(毫秒)(第1个tag的时候总是为0,如果是脚本tag就是0)
12-12: 时间戳扩展(1字节)让时间戳变成4字节(以存储更长时间的flv时间信息),本字节作为时间戳的最高位.
在flv回放过程中,播放顺序是按照tag的时间戳顺序播放.任何加入到文件中时间设置数据格式都将被忽略.
13-15: streamID(3字节) 总是0
参考资料
最新修订时间:2024-10-14 14:25
目录
概述
flv发展
flv历史
参考资料