一种视频文件转换为SWF文件的方法及系统
技术领域
本发明属于计算机应用领域,更具体地说,涉及一种视频文件转换为SWF文件的方法及系统。
背景技术
当前在因特网上,通常说的Flash格式主体分为SWF(ShackWave File)文件格式和FLV(Flash Video)视频格式。FLV视频格式相对于普通视频格式,是一种支持在线播放的流媒体格式,SWF文件格式则是包容了一些视频如FLV、脚本、图片、动画、声音等的可播放的媒体文件,它通过Adobe公司Flash Player来播放执行。
近几年来,网络对Flash文件的需求一直都是上升势头,其中,Flash格式(SWF文件和FLV视频)主导网络视频市场,份额高达81%,在国内,98%的上网电脑安装了Flash Player;根据艾瑞调查,2008年10月到2009年1月,美国在线视频浏览总量由135亿增长到148亿,三个月增长了10%。网络视频的流行使得用户对Flash格式文件的热情居高不下,由于FLV文件仅仅是视频文件,需要结合对应脚本的SWF文件才能在网络上进行播放,所以一直以来,一部分用户就希望能把FLV文件直接转换成SWF文件,这样方便了文件管理,也更方便文件共享。
目前,将FLV文件转换成SWF文件的方式主要有如下两种:
1、以流的方式直接将FLV文件“缝合”到SWF文件后面,FLV视频内容和SWF文件内容从逻辑上仍然是独立的,然后播放的时候再进行分别读取到不同的地方再合起来播放。
2、将视频格式完全解码,将每帧转换成一张张图片元素,然后再作为SWF文件的一部分完全嵌入SWF文件。
第一种方法,以文件流的方式直接将FLV文件追加到SWF文件后面,因为该格式破坏了Flash文件的标准格式,所以标准的Flash Player并不进行支持,需要专门的播放器进行播放。
第二种方法中,在将一个视频转换成图片元素时,因为SWF文件的长度不得超过16000帧,按照此前最普通视频每秒至少播放15帧来计算,16000帧至多包含1067秒的视频内容(16000÷15≈1067),也即至多包含18分钟的视频内容(1067÷60≈18)。也就是说,如果按照传统的方法不加以处理,一个普通视频最多只能转换出18分钟的SWF文件。所以Flash单个SWF文件不得操作16000帧的天然限制将不得不成为转换长度超长的视频文件必须跨越的障碍。
因此,需要一种视频格式转换为SWF文件格式的方案,不仅能不破坏Flash文件的标准格式,还能突破SWF文件对视频长度的限制,来克服现有技术中存在的上述缺陷。
发明内容
本发明所要解决的技术问题在于,针对现有视频格式转换为SWF文件格式技术中存在的破坏Flash文件的标准格式的缺陷、SWF文件对视频文件的长度有限制的缺陷,提供一种视频文件转换为SWF文件的方法及系统。
本发明解决其技术问题所采用的技术方案之一是:提供一种视频文件转换为SWF文件的方法,包括如下步骤:
S1)提取源视频文件的相关参数值,并据此计算需要生成的主SWF文件相关参数值;
S2)转换源视频文件为至少一个FLV文件;
S3)根据S1计算出的主SWF文件相关参数值,生成至少一个子SWF文件,将S2中的每个FLV文件分别嵌入到每个子SWF文件中;
S4)根据S1计算出的主SWF文件相关参数值,生成一个主SWF文件,从所述主SWF文件的第二帧开始,将步骤S3中生成的至少一个子SWF文件依次逐帧加入到所述主SWF文件中;
S5)加入播放规则到主SWF文件;
S6)保存输出主SWF文件。
本方案的关键在于SWF文件一个独特的特征:即SWF文件中允许在某个指定部位嵌入其它SWF文件,该特征一般被用来加入用户自定义广告和小商标元素等。本方案将完美的利用这一特征,把FLV视频制作成能让主SWF文件误认为是广告的子SWF文件,在互不干扰的嵌入主SWF文件后,再在主SWF文件中通过脚本代码来控制这些小广告影片的播放及其屏幕效果,最终实现FLV视频文件无畅的转换成可直接播放SWF文件的目标。
本发明所述的一种视频文件转换为SWF文件的方法,所述至少一个子SWF文件的相关参数值和所述主SWF文件的相关参数值要保持一致。
本发明所述的一种视频文件转换为SWF文件的方法,步骤S2包括:
S21)将源视频完全解码,将视频转换为一张张连续的图片元素;
S22)根据单个SWF文件可操作图片数量的临界上限值,对已解码的连续图片元素进行分组,连续的且数量在临界上限值之内的一组图片元素分为一组,形成连续的至少一组图片元素;
S23)将每组图片元素转换成一个FLV文件,形成连续的至少一个FLV文件。
本发明所述的一种视频文件转换为SWF文件的方法,所述步骤S5进一步包括:根据嵌入的所述子SWF文件名称和位置添加脚本为播放规则,并将其写入所述主SWF文件的第一帧位置。
本发明所述的一种视频文件转换为SWF文件的方法,所述脚本用于控制所述子SWF文件的播放顺序、进度条的拖动、声音的控制和实时调整所述子SWF文件的屏幕效果。
本发明解决其技术问题所采用的技术方案之二是:提供一种视频文件转换为SWF文件的系统,包括:
相关参数值产生模块:用于提取源视频的相关参数值,并据此计算需要生成的主SWF文件相关参数值;
FLV文件生成模块:用于生成至少一个FLV文件;
子SWF文件生成模块:用于根据计算出的主SWF文件相关参数值,生成至少一个子SWF文件,并将每个FLV文件分别嵌入到每个子SWF文件中;
主SWF文件生成模块:用于根据计算出的主SWF文件相关参数值,生成一个主SWF文件,从所述主SWF文件的第二帧开始,将生成的至少一个子SWF文件依次逐帧加入到所述主SWF文件中;
播放规则写入模块:于写入播放规则的脚本。
本发明所述的一种视频文件转换为SWF文件的系统,子SWF文件生成模块生成的至少一个子SWF的相关参数值和主SWF文件生成模块生成的主SWF文件的相关参数值要保持一致。
本发明所述的一种视频文件转换为SWF文件的系统,FLV文件生成模块包括:
解码单元:用于对视频文件完全解码,将视频转换为一张张图片元素;
分组单元:用于根据单个SWF文件可操作图片数量的临界上限值,对已解码的连续图片元素进行分组,将连续的且数量在临界上限值之内的一组图片元素分为一组,形成连续的至少一组图片元素;
生成单元:用于将每组图片元素转换成一个FLV文件,形成连续的至少一个FLV文件。
本发明所述的一种视频文件转换为SWF文件的系统,播放规则写入模块根据嵌入的所述子SWF文件名称和位置添加脚本为播放规则,并将其写入所述主SWF文件的第一帧位置。
本发明所述的一种视频文件转换为SWF文件的系统,播放规则写入模块用于控制子SWF文件的播放顺序、进度条的拖动、声音的控制和实时调整所述子SWF文件的屏幕效果。
实施本发明的技术方案,具有以下有益效果:不破坏Flash文件的标准格式,且不论任何长度的视频文件,生成的SWF文件都只有一个,突破了SWF文件对视频长度的限制。
附图说明
图1是本发明一较佳实施例提供的一种视频文件转换为SWF文件方法的流程图;
图2是本发明一较佳实施例提供的源视频文件转换为至少一个FLV文件的流程图;
图3是本发明一较佳实施例提供的一种视频文件转换为SWF文件的系统示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明方案的关键在于SWF文件一个独特的特征:即SWF文件中允许在某个指定部位嵌入其它SWF文件,该特征一般被用来加入用户自定义广告和小商标元素等。本方案将完美的利用这一特征,把FLV视频制作成能让主SWF文件误认为是广告的子SWF文件,在互不干扰的嵌入主SWF文件后,再在主SWF文件中通过脚本代码来控制这些小广告影片的播放及其屏幕效果,最终实现FLV视频文件无畅的转换成可直接播放SWF文件的目标。
图1是本发明一较佳实施例提供的一种视频文件转换为SWF文件方法的流程图,如图1所示,详述如下:
在步骤S1中,提取源视频文件的相关参数值,并据此计算需要生成的主SWF文件相关参数值。
作为本发明的实施例,相关参数包括分辨率、帧率等,提取源这些相关参数值作为需要生成的主SWF文件的相关参数值。
在步骤S2中,转换源视频文件为至少一个FLV文件。图2是本发明一较佳实施例提供的源视频文件转换为至少一个FLV文件的流程图,如图2所示,步骤S2又包括如下步骤:
S21)将源视频完全解码,将视频转换为一张张连续的图片元素;
S22)根据单个SWF文件可操作图片数量的临界上限值,对已解码的连续图片元素进行分组,连续的且数量在临界上限值之内的一组图片元素分为一组,形成连续的至少一组图片元素;
S23)将每组图片元素转换成一个FLV文件,形成连续的至少一个FLV文件。
在本发明的实施例中,单个SWF文件可操作的图片元素的临界上限值为16000。
在一个实施例中,可对已解码的连续图片元素进行连续编号,然后根据编号分组,每组的图片元素必须是连续的且数量可以相等也可以不相等,组与组之间的图片元素必须是连续的,每组的图片元素数量必须在临界上限值16000之内,如对图片元素编号为1、2...160000、16001、16002...32000...,将编号为1至16000的图片元素分为第一组,编号为16001至32000的图片元素为第二组;或将编号为1至10000的图片元素为第一组,编号为10001至23587的为第二组,编号为23588至31000为第三组,等等。
在另一个实施例中,也可对已解码的连续图片元素进行连续循环编号,然后根据编号分组。不管如何对图片元素编号,每组的图片元素必须是连续的且数量可以相等也可以不相等,组与组之间的图片元素必须是连续的,每组的图片元素数量必须在临界上限值16000之内。
在步骤S3中,根据S1计算出的主SWF文件相关参数值,生成至少一个子SWF文件,将S2中的每个FLV文件分别嵌入到每个子SWF文件中。
作为本发明的实施例,生成的每个子SWF文件的相关参数值必须和主SWF文件相关参数值保持一致。
在步骤S4中,根据S1计算出的主SWF文件相关参数值,生成一个主SWF文件,将S3中的至少一个子SWF文件逐帧加入到主SWF文件中。
在本发明的实施例中,从主SWF文件的第二帧开始,将步骤S3中生成的至少一个子SWF文件依次逐帧加入到所述主SWF文件中,必须确保每个子SWF文件彼此不处在主SWF文件的同一帧上,不会互相产生干扰。
在步骤S5中,加入播放规则到主SWF文件。
在本发明的实施例中,S5进一步包括:根据嵌入的所述子SWF文件名称和位置添加脚本为播放规则,并将其写入所述主SWF文件的第一帧位置;脚本用于控制子SWF文件的播放顺序、进度条的拖动、声音的控制和实时调整所述子SWF文件的屏幕效果,让用户感受为无损体验。
步骤S6为保存输出主SWF文件。
图3是本发明一较佳实施例提供的一种视频文件转换为SWF文件的系统示意图,如图3所示,包括相关参数值产生模块31、FLV文件生成模块32、子SWF文件生成模块33、主SWF文件生成模块34和播放规则写入模块35。而FLV文件生成模块32又进一步包括:解码单元321、分组单元322和生成单元323。
相关参数值产生模块31提取源视频的相关参数值,并据此计算需要生成的主SWF文件相关参数值;FLV文件生成模块32将源视频文件转换成至少一个FLV文件;子SWF文件生成模块33用于根据计算出的主SWF文件相关参数值,生成至少一个子SWF文件,并将每个FLV文件分别嵌入到每个子SWF文件中;主SWF文件生成模块34根据计算出的主SWF文件相关参数值,生成一个主SWF文件,将至少一个子SWF文件逐帧加入到主SWF文件中;播放规则写入模块35用于写入播放规则的脚本。
作为本发明的实施例,相关参数值产生模块31提取并计算的参数包括分辨率、帧率等。
作为本发明的实施例,FLV文件生成模块32将源视频文件转换成至少一个FLV文件的过程具体为:解码单元321用于对视频文件完全解码,将视频转换为一张张图片元素,分组单元322根据单个SWF文件可操作图片数量的临界上限值,对已解码的连续图片元素进行分组,将连续的且数量在临界上限值之内的一组图片元素分为一组,形成连续的至少一组图片元素,生成单元323将每组图片元素转换成一个FLV文件,形成连续的至少一个FLV文件。
作为本发明实施例,子SWF文件生成模块32生成的至少一个SWF文件的相关参数值必须和相关参数值计算模块31计算出的主SWF文件的相关参数值保持一致。
作为本发明的实施例,主SWF文件生成模块34从主SWF文件的第二帧开始,将子SWF文件生成模块33生成的至少一个子SWF文件依次逐帧加入到主SWF文件中,确保每个子SWF文件彼此不处在主SWF文件的同一帧上,不会互相产生干扰。
作为本发明的实施例,播放规则写入模块35根据嵌入的子SWF文件名称和位置添加脚本为播放规则,并将其写入所述主SWF文件的第一帧位置;脚本用于控制子SWF文件的播放顺序、进度条的拖动、声音的控制和实时调整所述子SWF文件的屏幕效果。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。