本发明涉及网络视频传输技术领域,尤其涉及一种分段式flash全景视频传输方法及系统。
背景技术:
现有技术adobe flash内部提供的方法中:Flash全景3d视频只局限于完整片源MP4格式的flash视频播放器,flash全景视频一般视频源格式为MP4,不支持其他格式例如分段视频格式的播放,而此时,NetStream播放HTTP视频的模式为普通模式;Away3D模块(即(3D建模插件)的3d材质模块包提取方法是通过截取当前video类显示对象的位图图像,然后将其传递给away3d中的位图截取容器对象move,由move将位图图像数据进行3d化处理后,再发送给flashplayer呈现全景效果,当启用MP4时video类显示对象可以正常启用;
当video类显示对象在HLS(流媒体直播协议,HTTP Live Streaming)模式下时,NetStream对象的播放HTTP视频模式为数据生成模式,而在数据生成模式下,Away3D模块的材质采集位图处理类里,无法采集或者获取video类显示对象的位图数据;并且Away3D的材质采集位图处理类方法MovieMaterial()里,是通过位图截取方法bitmapData.draw()进行video材质位图内容截取,当video的内容为空或者无图像的时候,会报错导致away3d无法正常运行。
技术实现要素:
本发明实施例的目的在于提出一种分段式flash全景视频传输方法,旨在解决现有技术当video显示对象video类显示对象在HLS模式下时,Away3D模块的材质采集位图处理类里,无法采集或者获取video显示对象video类显示对象的位图数据,从而导致Away3D模块无法获取材质位图,进而无法对视频内容进行渲染以及当video的内容为空或者无图像的时候,会报错导致away3d无法正常运行的问题。
本发明实施例是这样实现的,一种分段式flash全景视频传输方法,所述方法包括:
创建video类显示对象;
创建第一Sprite图片剪辑对象作为装载video类显示对象的父容器;
通过NetStream对象中的NetConnection对象加载本地文件系统或HTTP地址中的Flash视频文件,使其在video类显示对象中显示加载的视频文件内容;
创建Away3D显示对象;
初始化一个图片装载对象第三Sprite,对图片装载对象第三Sprite进行1*1的像素填充处理,然后放入截图材质容器move对象模块的最底层;
设置Away3D模块中截图材质容器move对象模块里的第二Sprite图片剪辑对象的内容位图截取方法为readGraphicsData();
通过所述内容位图截取方法readGraphicsData()对所述第一Sprite图片剪辑对象中的video显示对象的视频文件内容进行位图内容截取,将所述视频文件内容转换成二进制数据的位图图像;
当尚未截取到第一Sprite图片剪辑对象中的video显示对象中的视频文件内容时,将截图材质容器move对象底层的1*1的像素图像转换成二进制数据的位图图像;
当已经截取到时,将截取到的视频文件内容放于截图材质容器move对象模块中且位于图片装载对象第三Sprite之上,然后将截取到的视频文件内容转换成二进制数据的位图图像。
将所述二进制数据的位图图像进行3D化处理,发送给Away3D显示对象上进行显示。
本发明实施例的另一目的在于提出一种分段式flash全景视频传输系统,所述系统包括
video显示对象video类显示对象创建及显示模块,用于创建video类显
示对象及在video类显示对象中显示视频内容;
第一Sprite图片剪辑对象创建模块,用于创建第一Sprite图片剪辑对象作为装载video类显示对象的父容器;
NetStream对象模块,用于通过NetStream对象中的NetConnection对象模块加载本地文件系统或HTTP地址中的Flash视频文件,使其在video类显示对象中显示加载的视频文件内容;
Away3D显示对象创建及显示模块,用于创建Away3D显示对象及在Away3D
显示对象中显示3D视频内容;
所述Away3D显示对象是在Flash Player显示界面上创建的;
图片装载对象第三Sprite创建模块,用于初始化一个图片装载对象第三Sprite;
像素填充模块,用于对图片装载对象第三Sprite进行1*1的像素填充处理,然后放入截图材质容器move对象模块的最底层;
第二Sprite图片剪辑对象设置模块,用于设置Away3D模块中截图材质容器move对象模块里的第二Sprite图片剪辑对象的内容位图截取方法为readGraphicsData();通过所述内容位图截取方法readGraphicsData()对所述第一Sprite图片剪辑对象中的video显示对象video类显示对象中的视频文件内容进行位图内容截取,将所述视频文件内容转换成二进制数据的位图图像;
图像3D化处理模块,用于将所述二进制数据的位图图像进行3D化处理,发送给Away3D显示对象上进行显示。
本发明的有益效果
本发明方法在数据生成模式下,通过创建第一Sprite图片剪辑对象作为装载video类显示对象的父容器,将Away3D模块中的材质采集位图处理类中的第二Sprite图片剪辑对象的内容位图截取方法设置为readGraphicsData(),通过readGraphicsData()方法对所述第一Sprite图片剪辑对象中的video类显示对象中的视频文件内容进行位图内容截取,并且初始化一个装载图片对象第三Sprite,再对图片装载对象第三Sprite进行最低只有1*1的像素填充的处理,然后放入截图材质容器move对象的最底层,使得即使video的暂时图像无法传递过来,move容器的只有位图为1像素的位图内容,材质截取功能也可以作用下去,并且避开了在数据生成模式下无法获取材质位图数据内容导致的错误,在flash视频的全景模式away3d+MP4的基础上,达到hls+away3d有效兼容,进而现分段式视频的在线观看,并在节省带宽的前提下保证全景效果流畅。
附图说明
图1是本发明优选实施例一种分段式flash全景视频传输方法流程图;
图2是本发明优选实施例一种分段式flash全景视频传输系统结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图和实施例,对本发明进行进一步详细说明,为了便于说明,仅示出了与本发明实施例相关的部分。应当理解,此处所描写的具体实施例,仅仅用于解释本发明,并不用以限制本发明。
本发明实施例方法在数据生成模式下,通过创建第一Sprite图片剪辑对象作为装载video类显示对象的父容器,将Away3D模块中的材质采集位图处理类中的第二Sprite图片剪辑对象的内容位图截取方法设置为readGraphicsData(),通过readGraphicsData()方法对所述第一Sprite图片剪辑对象中的video类显示对象中的视频文件内容进行位图内容截取,并且初始化一个装载图片对象第三Sprite,再对图片装载对象第三Sprite进行最低只有1*1的像素填充的处理,然后放入截图材质容器move对象的最底层,使得即使video的暂时图像无法传递过来,move容器的只有位图为1像素的位图内容,材质截取功能也可以作用下去,并且避开了在数据生成模式下无法获取材质位图数据内容导致的错误,在flash视频的全景模式away3d+MP4的基础上,达到hls+away3d有效兼容,进而实现分段式视频的在线观看,并在节省带宽的前提下保证全景效果流畅。
实施例一
图1是本发明优选实施例一种分段式flash全景视频传输方法流程图;所述方法包括以下步骤:
S102,创建video类显示对象;
所述video类显示对象是在Flash Player内部创建的;
S104,创建第一Sprite图片剪辑对象作为装载video类显示对象的父容器;
S103,通过NetStream对象中的NetConnection对象加载本地文件系统或HTTP地址中的Flash视频文件,使其在video类显示对象中显示加载的视频文件内容;
在本发明实施中,video类显示对象是在HLS视频分段模式下,此时NetStream对象的播放HTTP视频模式为数据生成模式;在数据生成模式下,Away3D模块中的材质采集的位图处理类(即截图材质容器move对象)中的图片剪辑对象内容位图截取方法,无法采集或者获取video类显示对象的位图数据,从而导致Away3D模块无法获取材质位图,进而无法对视频内容进行渲染。
S104,创建Away3D显示对象;
所述Away3D显示对象是在Flash Player显示界面上创建的;
S105,初始化一个图片装载对象第三Sprite,对图片装载对象第三Sprite进行1*1的像素填充处理,然后放入截图材质容器move对象模块的最底层;
S106,设置Away3D模块中截图材质容器move对象模块里的第二Sprite图片剪辑对象的内容位图截取方法为readGraphicsData();
所述步骤S104-S106也可移至步骤S101之前。
S107,通过所述内容位图截取方法readGraphicsData()对所述第一Sprite图片剪辑对象中的video类显示对象中的视频文件内容进行位图内容截取,将所述视频文件内容转换成二进制数据的位图图像;
具体为:
当尚未截取到第一Sprite图片剪辑对象中的video显示对象中的视频文件内容时,将截图材质容器move对象底层的1*1的像素图像转换成二进制数据的位图图像;
当已经截取到时,将截取到的视频文件内容放于截图材质容器move对象模块中且位于图片装载对象第三Sprite之上,然后将截取到的视频文件内容转换成二进制数据的位图图像。
S108,将所述二进制数据的位图图像进行3D化处理,发送给Away3D显示对象上进行显示。
实施例二
图2是本发明优选实施例一种分段式flash全景视频传输系统结构图。所述系统包括:
video类显示对象创建及显示模块,用于创建video类显示对象及在
video类显示对象中显示视频内容;
第一Sprite图片剪辑对象创建模块,用于创建第一Sprite图片剪辑对象作为装载video类显示对象的父容器;
NetStream对象模块,用于通过NetStream对象中的NetConnection对象模块加载本地文件系统或HTTP地址中的Flash视频文件,使其在video类显示对象中显示加载的视频文件内容;
在本发明实施中,video类显示对象是在HLS视频分段模式下,此时NetStream对象的播放HTTP视频模式为数据生成模式;在数据生成模式下,Away3D模块中的材质采集的位图处理类中的图片剪辑对象内容位图截取方法,无法采集或者获取video类显示对象的位图数据,从而导致Away3D模块无法获取材质位图,进而无法对视频内容进行渲染。
Away3D显示对象创建及显示模块,用于创建Away3D显示对象及在Away3D显示对象中显示3D视频内容;
所述Away3D显示对象是在Flash Player显示界面上创建的;
图片装载对象第三Sprite创建模块,用于初始化一个图片装载对象第三Sprite;
像素填充模块,用于对图片装载对象第三Sprite进行1*1的像素填充处理,然后放入截图材质容器move对象模块的最底层;
第二Sprite图片剪辑对象设置模块,用于设置Away3D模块中截图材质容器move对象模块里的第二Sprite图片剪辑对象的内容位图截取方法为readGraphicsData();通过所述内容位图截取方法readGraphicsData()对所述第一Sprite图片剪辑对象中的video类显示对象中的视频文件内容进行位图内容截取,将所述视频文件内容转换成二进制数据的位图图像;
具体为:
当尚未截取到第一Sprite图片剪辑对象中的video显示对象中的视频文件内容时,将截图材质容器move对象底层的1*1的像素图像转换成二进制数据的位图图像;
当已经截取到时,将截取到的视频文件内容放于截图材质容器move对象模块中且位于图片装载对象第三Sprite之上,然后将截取到的视频文件内容转换成二进制数据的位图图像。
图像3D化处理模块,用于将所述二进制数据的位图图像进行3D化处理,发送给Away3D显示对象上进行显示。
所述video类显示对象是在Flash Player内部创建的;
所述Away3D显示对象是在Flash Player显示界面上创建的;
本领域的普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序指令相关硬件来完成的,所述的程序可以存储于一计算机可读取存储介质中,所述的存储介质可以为ROM、RAM、磁盘、光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。