CN104091608A - 一种基于ios设备的视频编辑方法及装置 - Google Patents
一种基于ios设备的视频编辑方法及装置 Download PDFInfo
- Publication number
- CN104091608A CN104091608A CN201410265870.1A CN201410265870A CN104091608A CN 104091608 A CN104091608 A CN 104091608A CN 201410265870 A CN201410265870 A CN 201410265870A CN 104091608 A CN104091608 A CN 104091608A
- Authority
- CN
- China
- Prior art keywords
- data
- editing
- buffer area
- video
- rich media
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Television Signal Processing For Recording (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Management Or Editing Of Information On Record Carriers (AREA)
Abstract
本发明提供了一种基于IOS设备的视频编辑方法,所述IOS设备设置有第一缓冲区域以及第二缓冲区域,所述方法包括:在接收视频编辑指令后,判断所述第一缓冲区域的地址对应的内存地址中是否存在第一编辑数据,所述视频编辑指令包括目标富媒体数据的路径信息;若是,则获取所述第一编辑数据并编码;若否,则生成第一数据获取请求;依据所述第一数据获取请求判断所述第二缓冲区域中是否存在第二编辑数据;若是,则获取所述第二编辑数据并对所述第二编辑数据进行渲染,生成第一编辑数据存储在第一缓冲区域中;否则,则依据所述路径信息获取对应的目标富媒体数据,对所述目标富媒体数据进行解码,得到第二编辑数据存储在第二缓冲区域中。
Description
技术领域
本发明涉及视频编辑技术领域,特别是涉及一种基于IOS设备的视频编辑装置及一种基于IOS设备的视频编辑方法。
背景技术
近年来,随着计算机图形图像技术的迅速发展,图片视频编辑技术逐渐成熟,已成为制作影视节目、数字多媒体的主要工具。其中,图片视频编辑是指对图片或者视频进行加工,例如:将多张高清视频合成一个连续的视频,将完整视频裁剪成多段视频,合并多个视频为单个视频,添加背景音乐,改变视频的颜色等对视频进行的操作。
但是,在现有的图片视频编辑处理过程中,若需要对视频添加特效,需要经过多次编码解码的过程,耗费时间长,生成视频速度缓慢。例如,若采用多媒体框架GPUimage做一个贴素材动画以及带3个filter的风格,制作过程为:先将视频或者拼接的视频进行贴素材动画处理,生成一个0.mp4;进行filter处理时,是将0.mp4进行解码,然后filter处理,生成1.mp4;整个过程做了2次解码,2次编码,大大浪费了时间,而且3个filter必须写在一个文件中,要修改只能程序员去修改渲染语言。
发明内容
本发明实施例所要解决的技术问题是提供一种基于IOS设备的视频编辑方法,用以解决视频编辑过程中,对视频编码解码次数多导致的生成视频速度缓慢的问题。
相应的,本发明实施例还提供了一种基于IOS设备的视频编辑装置,用以保证上述方法的实现及应用。
为了解决上述问题,本发明实施例公开了一种基于IOS设备的视频编辑装置,包括指令接收模块、编码模块、渲染模块、解码模块,所述编码模块与所述渲染模块间设置有大小为第一预设阈值的第一缓冲区域,所述解码模块与所述渲染模块间设置有大小为第二预设阈值的第二缓冲区域,所述IOS设备预先设置有第一缓冲区域地址与内存地址的映射关系,其中,
指令接收模块,用于接收视频编辑指令,并将所述视频编辑指令发送至编码模块和/或解码模块,所述视频编辑指令包括目标富媒体数据的路径信息;
编码模块,用于依据所述视频编辑指令生成第一数据获取请求,将所述第一数据获取请求发送至渲染模块,以及,从所述第一缓冲区域的地址对应的内存地址中获取一帧第一编辑数据,对所述第一编辑数据进行编码,其中所述第一编辑数据为经过渲染的数据;
渲染模块,用于在收到第一数据获取请求时,或在监测到所述第一缓冲区域中的数据量小于第一预设阈值时,判断所述第二缓冲区域是否存在第二编辑数据,若是,则从所述第二缓冲区域中获取一帧第二编辑数据,对所述第二编辑数据进行渲染生成第一编辑数据,将所述第一编辑数据存储到第一缓冲区域中;若否,则生成第二数据获取请求,将所述第二数据获取请求发送至解码模块;所述第二编辑数据为经过解码但未经过渲染的数据;
解码模块,用于在接收到所述视频编辑指令时,或在接收到所述第二数据获取请求时,依据所述路径信息获取对应的目标富媒体数据,对所述目标富媒体数据进行解码,得到第二编辑数据存储在第二缓冲区域中,以及,实时监测所述第二缓冲区域的所述第二编辑数据的数据量,在所述数据量大于或等于第二预设阈值时,停止解码所述目标富媒体数据,在所述数据量小于第二预设阈值时,继续解码所述目标富媒体数据。
优选地,所述目标富媒体数据包括目标视频数据和/或目标图片数据,所述第二编辑数据包括第一图像数据,和/或第二图像数据,所述解码模块包括:
视频解码子模块,用于对所述目标视频数据进行解码,得到第一图像数据;
图片解码子模块,用于对所述目标图片数据进行解码,得到第二图像数据。
优选地,所述IOS设备具有avasset reader接口,所述第二缓冲区域位于显存中,所述IOS设备预设有内存地址与第二缓冲区域地址的映射关系,所述视频解码子模块包括:
解码单元,用于采用所述avasset reader接口在内存中对所述目标视频数据进行解码,得到第一图像数据;
转换单元,用于获取所述内存的内存地址,按照所述内存地址与第二缓冲区域地址的映射关系,将所述第一图像数据的存储地址由所述内存地址转换成对应的第二缓冲区域地址。
优选地,所述解码单元还用于,初始化所述avasset reader接口,设置输出的一帧第一图像数据的分辨率大小。
优选地,所述解码单元还用于,采用所述avasset reader接口在内存中对所述目标视频数据进行解码,得到与所述第一图像数据对应的音频数据,所述音频数据存储在内存中。
优选地,所述与所述第一图像数据对应的音频数据,采用如下方式获得:
获取所述目标视频数据的帧率;
计算预设的音频数据采样率/帧率,得到一帧第一图像数据对应的音频数据。
优选地,所述视频编辑装置还包括:
音频渲染模块,用于在内存中对所述音频数据进行渲染。
优选地,所述渲染模块还用于,将所述第一缓冲区域中的第一编辑数据从第二缓冲区域中读取到内存中。
优选地,所述IOS设备具有avasset writer接口,所述编码模块还用于,采用所述avasset writer接口在内存中对所述第一编辑数据进行编码,最终生成视频文件。
优选地,所述编码模块还用于,
在内存中获取每一帧第一编辑数据对应的音频数据;
在内存中对所述第一编辑数据以及对应的音频数据进行编码。
优选地,所述第二缓冲区域位于显存中,所述图片解码子模块还用于,采用多线程在内存中对所述目标图片数据进行解码,得到第二图像数据,将所述内存中的第二图像数据复制到第二缓冲区域中。
优选地,所述第一数据获取请求包括视频编辑样式信息,所述渲染模块包括:
数据接收子模块,用于接收所述第一图像数据和/或所述第二图像数据;
解析子模块,用于解析所述视频编辑样式信息,获得一个或多个特效元素;
顺序确定子模块,用于在所述特效元素为多个时,确定所述特效元素的组合顺序;
特效添加子模块,用于按照所述组合顺序在所述第一图像数据中依次添加对应的特效元素,生成第三图像数据;
第一编辑数据生成子模块,用于合并所述第三图像数据以及所述第二图像数据,生成第一编辑数据。
优选地,所述特效添加子模块还用于,采用着色语言GLSL按照所述组合顺序在所述第一图像数据中依次添加对应的特效元素,生成第三图像数据。
优选地,所述特效元素包括裁剪信息、尺寸缩放信息、颜色编辑信息、透明度编辑信息、模糊效果信息。
优选地,所述路径信息有多个,所述视频编辑指令包括多个路径信息的导入顺序,则对应的目标富媒体数据有多个,所述解码模块还用于,
在接收到所述第二数据获取请求时,依据所述导入顺序确定所述多个富媒体数据的解码顺序;
按照所述解码顺序对所述目标富媒体数据进行解码。
优选地,所述渲染模块位于第一线程中,所述编码模块位于第二线程中,所述第一线程与第二线程并行运行。
本发明实施例还公开了一种基于IOS设备的视频编辑方法,所述IOS设备设置有大小为第一预设阈值的第一缓冲区域以及大小为第二预设阈值的第二缓冲区域,所述第一缓冲区域用于存储第一编辑数据,所述第二缓冲区域用于存储第二编辑数据,所述第一编辑数据为经过渲染的数据,所述第二编辑数据为经过解码但未渲染的数据,以及,预先设置有第一缓冲区域地址与内存地址的映射关系,所述方法包括:
在接收视频编辑指令后,判断所述第一缓冲区域的地址对应的内存地址中是否存在第一编辑数据,所述视频编辑指令包括目标富媒体数据的路径信息;
若所述内存中存在所述第一编辑数据,则获取所述第一编辑数据并编码;
若所述第二缓冲区域不存在所述第一编辑数据,则生成第一数据获取请求;
依据所述第一数据获取请求判断所述第二缓冲区域中是否存在第二编辑数据;
若所述第二缓冲区域存在所述第二编辑数据,则获取所述第二编辑数据并对所述第二编辑数据进行渲染,生成第一编辑数据存储在第一缓冲区域中;
若所述第二缓冲区域不存在第二编辑数据,则依据所述路径信息获取对应的目标富媒体数据,对所述目标富媒体数据进行解码,得到第二编辑数据存储在第二缓冲区域中。
优选地,所述方法还包括:
实时监控所述第一缓冲区域中的第一编辑数据的数据量,以及所述第二缓冲区域中的第二编辑数据的数据量;
在所述第一编辑数据的数据量大于或等于第一预设阈值时,停止对第二编辑数据的渲染;
在所述第二编辑数据的数据量大于或等于第二预设阈值时,停止对目标富媒体数据的解码。
优选地,所述目标富媒体数据包括目标视频数据,所述第二编辑数据包括第一图像数据,所述IOS设备具有avasset reader接口,所述依据所述路径信息获取对应的目标富媒体数据,对所述目标富媒体数据进行解码,得到第二编辑数据存储在第二缓冲区域中的步骤包括:
所述依据所述路径信息获取对应的目标视频数据;
采用所述avasset reader接口在内存中对所述目标视频数据进行解码,得到预设分辨率大小的第一图像数据;
将所述第一图像数据存储在第二缓冲区域中。
优选地,所述第二缓冲区域位于显存中,所述IOS设备预设有内存地址与第二缓冲区域地址的映射关系,所述将所述第一图像数据存储在第二缓冲区域中的步骤包括:
获取所述内存的内存地址;
按照所述内存地址与第二缓冲区域地址的映射关系,将所述第一图像数据的存储地址由所述内存地址转换成对应的第二缓冲区域地址。
优选地,所述预设分辨率大小为在所述avasset reader接口初始化时设定。
优选地,所述方法还包括:
采用所述avasset reader接口在内存中对所述目标视频数据进行解码,获得与所述第一图像数据对应的音频数据,所述音频数据存储在内存中;
在内存中渲染所述音频数据;
在对所述第一编辑数据进行编码时,从内存中获取与所述第一编辑数据对应的经过渲染后的音频数据;
对所述经过渲染后的音频数据进行编码。
优选地,所述与所述第一图像数据对应的音频数据,采用如下方式获得:
获取所述目标视频数据的帧率;
计算预设的音频数据采样率/帧率,得到一帧第一图像数据对应的音频数据。
优选地,所述IOS设备具有avasset writer接口,采用所述avasset writer接口在内存中对所述第一编辑数据进行编码,最终生成视频文件。
优选地,所述目标富媒体数据包括目标图片数据,所述第二编辑数据包括第二图像数据,所述依据所述路径信息获取对应的目标富媒体数据,对所述目标富媒体数据进行解码,得到第二编辑数据存储在第二缓冲区域中的步骤包括:
所述依据所述路径信息获取对应的目标图片数据;
在内存中采用多线程对所述目标图片数据进行解码,得到第二图像数据;
将所述第二图像数据从内存中复制到第二缓冲区域中。
优选地,所述第一数据获取请求包括视频编辑样式信息,所述获取所述第二编辑数据并对所述第二编辑数据进行渲染,生成第一编辑数据存储在第一缓冲区域中的步骤包括:
接收所述第一图像数据和/或所述第二图像数据;
解析所述视频编辑样式信息,获得一个或多个特效元素;
在所述特效元素为多个时,确定所述特效元素的组合顺序;
按照所述组合顺序在所述第一图像数据中依次添加对应的特效元素,生成第三图像数据;
合并所述第三图像数据以及所述第二图像数据,生成第一编辑数据。
优选地,所述按照所述组合顺序在所述第一图像数据中依次添加对应的特效元素,生成第三图像数据的步骤包括:
采用着色语言GLSL按照所述组合顺序在所述第一图像数据中依次添加对应的特效元素,生成第三图像数据。
优选地,所述特效元素包括裁剪信息、尺寸缩放信息、颜色编辑信息、透明度编辑信息、模糊效果信息。
优选地,所述路径信息有多个,所述视频编辑指令包括多个路径信息的导入顺序,则对应的目标富媒体数据有多个,所述依据所述路径信息获取对应的目标富媒体数据,对所述目标富媒体数据进行解码,得到第二编辑数据存储在第二缓冲区域中的步骤包括:
获取与所述路径信息对应的多个目标富媒体数据;
依据所述导入顺序确定所述多个富媒体数据的解码顺序;
按照所述解码顺序对所述目标富媒体数据进行解码,得到第二编辑数据存储在第二缓冲区域中。
与背景技术相比,本发明实施例包括以下优点:
第一,本发明实施例在进行视频编辑时,解码模块对目标富媒体数据解码后得到第二编辑数据,然后渲染模块对第二编辑数据渲染完成后生成第一编辑数据,编码模块才对第一编辑数据进行编码,整个过程只需要一次编辑和解码,提高了视频编辑效率,提升设备性能,同时,增强了用户体验;第二,本发明实施例设置了第二缓冲区域来控制解码模块解码的数据量,使得解码模块无需将目标富媒体数据完整解码好再传输给渲染模块,避免了因解码后的数据过大导致存储空间不足而限制视频编辑发挥的情况发生,提高了IOS设备的性能,并且减少了渲染模块的等待时间,降低了视频预览时延;
第三,在本发明实施例中,设置了第一缓冲区域来存储需要编码的数据,在编码模块需要的时候才到第一缓冲区域的地址对应的内存地址中获得数据,避免了编码模块由于编码不及时而导致的丢帧的情况发生,从而达到准确的帧级控制,提高视频编辑实时预览的准确性,提升视频编辑质量;
第四,本发明实施例采取可组装的特效信息添加方式,在需要用到某个特效filter时,采用底层GLSL将该filter注册到框架就可以(无需将一个filter写到另一个filter中),随时进行特效元素的添加或删减,代码重用性高,简化了开发者的工作量,提高特效添加效率,进而提高视频预览效率,降低视频预览时延;
第五,本发明实施例在进行特效元素添加以及贴素材时,无需进行在特效元素添加完后生成一次视频,再对生成视频进行贴素材的过程,本发明实施例经过一次编码和解码便可完成上述动作,节省了编码解码时间,提高视频编辑效率;
第六,在本发明实施例中,采用avasset reader接口完成目标视频数据的解码,由于avasset reader接口的特性,可以直接将解码后得到的第二编辑数据转换至第二缓冲区域中,而无需将第二编辑数据由内存复制至显存中,节省了数据传输的时间,同时,防止数据传输过程中数据丢失等情况的发生,提高视频编辑准确率;
第七,本发明实施例对于目标图片数据的解码,采用多线程的方式进行,提高解码效率,提升设备性能。
附图说明
图1示出了本发明的一种基于IOS设备的视频编辑装置实施例1的结构框图;
图2示出了本发明的本发明的一种基于IOS设备的视频编辑装置实施例2的结构框图;
图3示出了本发明的一种基于IOS设备的视频编辑装置实施例2中的视频编辑样式示意图;
图4示出了本发明的一种基于IOS设备的视频编辑方法实施例的步骤流程图。
具体实施方式
为使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明实施例作进一步详细的说明。
参照图1,示出了本发明的一种基于IOS设备的视频编辑装置实施例1的结构框图,可以包括指令接收模块10、编码模块20、渲染模块30以及解码模块40,所述编码模块20与所述渲染模块30间设置有大小为第一预设阈值的第一缓冲区域,所述解码模块40与所述渲染模块30间设置有大小为第二预设阈值的第二缓冲区域,所述IOS设备预先设置有第一缓冲区域地址与内存地址的映射关系,其中,
指令接收模块10,用于接收视频编辑指令,并将所述视频编辑指令发送至编码模块和/或解码模块,所述视频编辑指令包括目标富媒体数据的路径信息;
编码模块20,用于依据所述视频编辑指令生成第一数据获取请求,将所述第一数据获取请求发送至渲染模块,以及,从所述第一缓冲区域的地址对应的内存地址中获取一帧第一编辑数据,对所述第一编辑数据进行编码,其中所述第一编辑数据为经过渲染的数据;
渲染模块30,用于在收到第一数据获取请求时,或在监测到所述第一缓冲区域中的数据量小于第一预设阈值时,判断所述第二缓冲区域是否存在第二编辑数据,若是,则从所述第二缓冲区域中获取一帧第二编辑数据,对所述第二编辑数据进行渲染生成第一编辑数据,将所述第一编辑数据存储到第一缓冲区域中;若否,则生成第二数据获取请求,将所述第二数据获取请求发送至解码模块;所述第二编辑数据为经过解码但未经过渲染的数据;
解码模块40,用于在接收到所述视频编辑指令时,或在接收到所述第二数据获取请求时,依据所述路径信息获取对应的目标富媒体数据,对所述目标富媒体数据进行解码,得到第二编辑数据存储在第二缓冲区域中;以及,实时监测所述显存区域的所述第二编辑数据的数据量,在所述数据量大于或等于第二预设阈值时,停止解码所述目标富媒体数据,在所述数据量小于第二预设阈值时,继续解码所述目标富媒体数据。
具体而言,所述视频编辑指令可以包括目标富媒体数据的路径信息等,第一缓冲区域以及第二缓冲区域位于显存中,第一缓冲区域用来存储已经渲染好但未编码的数据(第一编辑数据),第二缓冲区域用来存储已经解码好但未渲染的数据(第二编辑数据),采用本发明实施例中的视频编辑装置进行视频编辑时,可以包括如下过程:
指令接收模块10接收到视频编辑指令后,将所述视频编辑指令发送至编码模块20和/或解码模块40,编码模块20接收到视频编辑指令后,依据视频编辑指令生成第一数据获取请求并发送至渲染模块30。
渲染模块30接收到第一数据获取请求后,判断第二缓冲区域是否存在第二编辑数据,若是(解码模块接收到视频编辑指令的情况,此时,解码模块依据视频编辑指令解码目标富媒体数据),则渲染模块30从第二缓冲区域中获取一帧第二编辑数据,对所述第二编辑数据进行渲染生成第一编辑数据,将所述第一编辑数据存储到第一缓冲区域中,并从第一缓冲区域读取至内存中,编码模块20检测到内存中有第一编辑数据,从内存中获取一帧第一编辑数据进行编码。若渲染模块30判断第二缓冲区域不存在已经解码好的第二编辑数据(解码模块没有接收到视频编辑指令的情况),则生成第二数据获取请求,将所述第二数据获取请求发送至解码模块。
解码模块40接收到第二数据获取请求后,依据所述路径信息获取对应的目标富媒体数据,对所述目标富媒体数据进行解码,得到第二编辑数据存储在第二缓冲区域中,以供渲染模块30提取。
本发明实施例中,渲染模块30实时监控第一缓冲区域中的第一编辑数据的数据量,在所述第一编辑数据的数据量小于第一预设阈值时,判断第二缓冲区域是否存在第二编辑数据,若是,则渲染模块30从第二缓冲区域中获取一帧第二编辑数据,对所述第二编辑数据进行渲染生成第一编辑数据,将所述第一编辑数据存储到第一缓冲区域中,如此反复,直到所述第一编辑数据的数据量大于或等于第一预设阈值时,停止渲染;若渲染模块30判断第二缓冲区域不存在第二编辑数据,则生成第二数据获取请求,将所述第二数据获取请求发送至解码模块40,解码模块40接收到第二数据获取请求后,对所述目标富媒体数据进行解码,得到第二编辑数据存储在第二缓冲区域中,以供渲染模块30提取。
解码模块实时监控第二缓冲区域中的第二编辑数据的数据量,在所述第二编辑数据的数据量小于第二预设阈值时,继续解码所述目标富媒体数据,获得第二编辑数据存储到第二缓冲区域中,如此反复,直到所述第二编辑数据的数据量大于或等于第二预设阈值时,停止解码目标富媒体数据。
需要说明的是,所述第一预设阈值以及第二预设阈值可以为跟帧率相当的取值,例如若帧率为25帧/秒,则预设阈值为25帧,当然,本领域技术人员也可以根据实际需求设置为其他取值,例如1帧,2帧,本发明对此无需加以限制。
本发明实施例在进行视频编辑时,解码模块对目标富媒体数据解码后得到第二编辑数据,然后渲染模块对第二编辑数据渲染完成后生成第一编辑数据,编码模块才对第一编辑数据进行编码,整个过程只需要一次编辑和解码,提高了视频编辑效率,提升设备性能,同时,增强了用户体验。
另外,本发明实施例设置了第二缓冲区域来控制解码模块解码的数据量,使得解码模块40无需将目标富媒体数据完整解码好再传输给渲染模块30,避免了因解码后的数据过大导致存储空间不足而限制视频编辑发挥的情况发生,提高了IOS设备的性能,并且减少了渲染模块30的等待时间,降低了视频预览时延。
另外,在本发明实施例中,设置了第一缓冲区域来存储需要编码的数据,在编码模块20需要的时候才获得第一编码数据,避免了编码模块20由于编码不及时而导致的丢帧的情况发生,从而达到准确的帧级控制,提高视频编辑实时预览的准确性,提升视频编辑质量。
参照图2,示出了本发明的一种基于IOS设备的视频编辑装置实施例2的结构框图,所述视频编辑装置是基于OpenGL ES(OpenGL forEmbedded Systems)的视频编辑装置,其中,OpenGL ES是OpenGL(OpenGraphics Library,是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库)的三维图形API的子集,是免授权费的,跨平台的,功能完善的2D和3D图形应用程序接口API,主要针对多种嵌入式设备专门设计,包括控制台、移动电话、手持设备、家电设备和汽车。它由精心定义的桌面OpenGL子集组成,创造了软件与图形加速间灵活强大的底层交互接口。
本发明实施例中的视频编辑装置可以包括指令接收模块100、编码模块200、渲染模块300以及解码模块400,所述编码模块200与所述渲染模块300间设置有大小为第一预设阈值的第一缓冲区域,所述解码模块400与所述渲染模块300间设置有大小为第二预设阈值的第二缓冲区域,第一缓冲区域及第二缓冲区域位于显存中,所述IOS设备预先设置有第一缓冲区域地址与内存地址的映射关系,以下对每个模块加以具体说明:
指令接收模块100,用于接收视频编辑指令,并将所述视频编辑指令发送至编码模块和/或解码模块,所述视频编辑指令包括目标富媒体数据的路径信息;
在具体实现中,用户可以采用本发明实施例中的视频编辑装置对某个视频进行编辑或者将多张图片拼接成视频,最后编码成视频文件。此时,用户侧的操作可以为:用户在视频编辑装置提供的特定入口中导入IOS设备中的用户想用于编辑的富媒体数据的路径信息,选择界面中给出的视频编辑样式,点击“start”等特定触发按钮,即可触发本视频编辑装置工作。因此,目标富媒体数据为该用户导入的路径信息对应的富媒体数据,视频编辑指令为用户点击特定触发按钮所触发的指令,本发明实施例中的视频编辑指令可以包括目标富媒体数据的路径信息,视频编辑样式信息,若所述路径信息为多个,所述视频编辑指令还可以包括多个路径信息的导入顺序等,所述目标富媒体数据可以包括目标视频数据和/或目标图片数据。
需要说明的是,所述IOS设备中的富媒体数据的来源,可以为采用所述IOS设备采集得到的,也可以是其他外部设备导入的,本发明实施例对富媒体数据的来源无需加以限制。
指令接收模块100接收视频编辑指令后,将该视频编辑指令发送至编码模块200和/或解码模块400,以触发编码模块200和/或解码模块400的工作。
编码模块200,用于依据所述视频编辑指令生成第一数据获取请求,将所述第一数据获取请求发送至渲染模块,以及,从所述第一缓冲区域的地址对应的内存地址中获取一帧第一编辑数据,对所述第一编辑数据进行编码,其中所述第一编辑数据为经过渲染的数据;
在本发明实施例中,编码模块200的作用是将一帧一帧的第一编辑数据编码成视频文件,具体而言,指令接收模块100接收到视频编辑指令后,将视频编辑指令发送至编码模块200,编码模块200接收到视频编辑指令后,生成第一数据获取请求,并将所述第一数据获取请求发送至渲染模块300,以触发渲染模块300获取第二编辑数据,并对所述第二编辑数据进行渲染生成第一编辑数据。
应用于本发明实施例,所述IOS设备具有avasset writer接口,所述编码模块200还用于,采用所述avasset writer接口在内存中对所述第一编辑数据进行编码,最终生成视频文件。在具体实现中,编码模块200向渲染模块300发送第一数据获取请求的过程,实际为编码模块200调用渲染模块300中的相应函数的过程。
渲染模块300,用于在收到第一数据获取请求时,或在监测到所述第一缓冲区域中的数据量小于第一预设阈值时,判断所述第二缓冲区域是否存在第二编辑数据,若是,则从所述第二缓冲区域中获取一帧第二编辑数据,对所述第二编辑数据进行渲染生成第一编辑数据,将所述第一编辑数据存储到第一缓冲区域中;若否,则生成第二数据获取请求,将所述第二数据获取请求发送至解码模块;所述第二编辑数据为经过解码但未经过渲染的数据;
在具体实现中,渲染模块300的作用是对解码后的第二编辑数据进行渲染生成第一编辑数据,具体而言,渲染模块300接收到第一数据获取请求后,判断第二缓冲区域是否存在第二编辑数据,若是(解码模块接收到视频编辑指令的情况,此时,解码模块依据视频编辑指令解码目标富媒体数据),则渲染模块300从第二缓冲区域中获取一帧第二编辑数据,对所述第二编辑数据进行渲染生成第一编辑数据,将所述第一编辑数据存储到第一缓冲区域中,在实际中,渲染模块300可以调用相应函数将第一缓冲区域中的第一编辑数据读取到内存中,编码模块200检测到内存中有第一编辑数据,从内存中获取一帧第一编辑数据进行编码。若渲染模块300判断第二缓冲区域不存在已经解码好的第二编辑数据(解码模块没有接收到视频编辑指令的情况),则生成第二数据获取请求,将所述第二数据获取请求发送至解码模块400。其中,渲染模块300向解码模块400发送第二数据获取请求的过程,实际为渲染模块300调用解码模块400中的相应函数的过程。
本发明实施例中,渲染模块300实时监控第一缓冲区域中的第一编辑数据的数据量,在所述第一编辑数据的数据量小于第一预设阈值时,判断第二缓冲区域是否存在第二编辑数据,若是,则渲染模块300从第二缓冲区域中获取一帧第二编辑数据,对所述第二编辑数据进行渲染生成第一编辑数据,将所述第一编辑数据存储到第一缓冲区域中,如此反复,直到第一缓冲区域中的所述第一编辑数据的数据量大于或等于第一预设阈值时,停止渲染;若渲染模块300判断第二缓冲区域不存在第二编辑数据,则生成第二数据获取请求,将所述第二数据获取请求发送至解码模块40。
本发明实施例设置第一缓冲区域存储第一编辑数据,编码模块编码完一帧第一编辑数据后,从内存中获取下一帧第一编辑数据进行编码,编码模块在需要的时候才获取第一编辑数据,避免因编码不及时导致的丢帧的情况发生,提高视频编辑质量,提升IOS设备性能。需要说明的是,所述第一预设阈值可以为跟帧率相当的取值,当然本领域技术人员也可以根据实际需求将第一预设阈值设置为其他取值,例如1帧,2帧,本发明对此无需加以限制。
在实际中,对第二编辑数据进行渲染的过程,可以为对第二编辑数据添加特效以及贴素材的过程。由于视频编辑指令中包含视频编辑样式信息,因此依据视频编辑指令生成的第一数据获取请求也包含视频编辑样式信息,在本发明实施例的一种优选实施例中,渲染模块300可以包括如下子模块:
数据接收子模块3001,接收第一图像数据和/或第二图像数据;
具体而言,第一图像数据为对目标视频数据解码后得到的数据,第二图像数据为对目标图片数据解码后得到的数据。第二图像数据可以作为素材数据,贴在第一图像数据中。对于第一图像数据以及第二图像数据将在下面解码模块中加以具体说明。
解析子模块3002,用于解析所述视频编辑样式信息,获得一个或多个特效元素;
顺序确定子模块3003,用于在所述特效元素为多个时,确定所述特效元素的组合顺序;
具体而言,视频编辑样式信息为上述用户侧操作中用户选择的视频编辑样式后生成的信息,是用户所想要添加到目标富媒体数据中的特效元素以及素材元素的组合,通过解析视频编辑样式信息可以获得一个或多个特效元素,以及在特效信息为多个时,可以确定所述特效元素的组合顺序。例如,如图3所示的视频编辑样式示意图,对该视频编辑样式解析,可知其添加了透明泡泡特效以及颜色特效,而由于视频编辑样式中的泡泡是有颜色的,可以得知两个特效的组合顺序是先添加透明泡泡特效,然后添加颜色特效。
进一步地,还可以依据所述视频编辑样式信息获取特效元素添加的位置信息,即特效元素添加到视频的哪个时间段上。例如,若一段视频数据一共有10秒,若需要在4-6秒添加特效元素,则特效元素添加在4-6秒的帧上。
所述特效元素可以包括裁剪信息、尺寸缩放信息、颜色编辑信息、透明度编辑信息、模糊效果信息等。在实际中,可以使用滤镜(filter)来添加特效元素。
特效添加子模块3004,用于按照所述组合顺序在所述第一图像数据中依次添加对应的特效元素,生成第三图像数据;
具体而言,渲染模块300内部包含各种不同的独立的且模块化了的filter,可以根据用户的选择来进行不同的组合得到不一样的效果。具体的,可以按照组合顺序将多个特效元素的滤镜filter串联起来,当处理到特效元素添加的位置信息时,对该位置信息上的每一帧第一图像数据,依次被串联起来的滤镜渲染后生成第三图像数据,例如,一个1920x1080的第二编辑数据,最后要生成一个480x480正方形的第一编辑数据,可以先经过裁剪filter,裁剪成1080x1080,然后通过缩放filter缩放成480x480。
在本发明实施例中,可以采用着色语言GLSL按照组合顺序在第一图像数据中依次添加对应的特效元素,生成第三图像数据。GLSL(OpenGLShading Language,OpenGL着色语言)是用来在OpenGL中着色编程的语言,也即开发人员写的短小的自定义程序,是在图形卡的GPU(GraphicProcessor Unit图形处理器)上执行的,代替了固定的渲染管线的一部分,使渲染管线中不同层次具有可编程型。比如:视图转换、投影转换等。可以将GLSL所写的代码直接作为长字符串资源放进应用程序中。
本发明实施例采取可组装的特效信息添加方式,在需要用到某个特效filter时,采用底层GLSL将该filter注册到框架就可以(无需将一个filter写到另一个filter中),随时进行特效元素的添加或删减,代码重用性高,简化了开发者的工作量,提高特效添加效率,进而提高视频预览效率,降低视频预览时延。
第一编辑数据生成子模块3005,用于合并所述第三图像数据以及所述第二图像数据,生成第一编辑数据。
具体而言,对第一图像数据添加特效元素生成第三图像数据后,以第二图像数据作为素材元素贴到第三图像数据中,即合并第三图像数据以及第二图像数据,生成第一编辑数据。在具体实现中,可以通过叠加运算例如第三图像数据以及第二图像数据的对应位置像素相加的方式来实现第三图像数据和第二图像数据的合并。
本发明实施例在进行特效元素添加以及贴素材时,无需进行在特效元素添加完后生成一次视频,再对生成视频进行贴素材的过程,本发明实施例经过一次编码和解码便可完成上述动作,节省了编码解码时间,提高视频编辑效率。
在本发明实施例中,IOS设备包括图形处理器GPU(GraphicProcessing Unit,图形处理器,GPU是显示卡的“大脑”,它决定了该显卡的档次和大部分性能),渲染模块300位于GPU中,则渲染模块300与编码模块200位于不同线程中(例如,渲染模块300位于第一线程中,编码模块200位于第二线程中),且并行运行。解码模块400,用于在接收到视频编辑指令时,或在接收到所述所述第二数据获取请求时,依据所述路径信息获取对应的目标富媒体数据,对所述目标富媒体数据进行解码,得到第二编辑数据存储在第二缓冲区域中;以及,实时监测所述第二缓冲区域的所述第二编辑数据的数据量,在所述数据量大于或等于第二预设阈值时,停止解码所述目标富媒体数据,在所述数据量小于第二预设阈值时,继续解码所述目标富媒体数据。
在本发明实施例中,解码模块400的作用是将目标富媒体数据解码成一帧一帧的原始数据(即第二编辑数据)。具体而言,若解码模块400接收到视频编辑指令,则解码模块400在初始化时即开始解码目标富媒体数据,具体的,解码模块400依据所述路径信息获取对应的目标富媒体数据,对所述目标富媒体数据进行解码,得到第二编辑数据存储在第二缓冲区域中,以供渲染模块300提取。若解码模块400没有接收到视频编辑指令,则解码模块400在接收到第二数据获取请求后才开始解码目标富媒体数据,具体的,解码模块接收到第二数据获取请求后,依据所述路径信息获取对应的目标富媒体数据,对所述目标富媒体数据进行解码,得到第二编辑数据存储在第二缓冲区域中,以供渲染模块300提取。
本发明实施例中,解码模块400实时监控第二缓冲区域中的第二编辑数据的数据量,在所述第二编辑数据的数据量小于第二预设阈值时,继续解码所述目标富媒体数据,获得第二编辑数据存储到第二缓冲区域中,如此反复,直到所述第二缓冲区域中的第二编辑数据的数据量大于或等于第二预设阈值时,停止解码目标富媒体数据。其中,所述第二预设阈值可以为跟帧率相当的取值,当然本领域技术人员也可以根据实际需求将第二预设阈值设置为其他取值,例如1帧,2帧,本发明对此无需加以限制。
本发明实施例设置第二缓冲区域,使得解码模块400只需要解码一部分目标富媒体数据即可开始渲染及编码操作,无需将目标富媒体数据完整解码好再传输给渲染模块300,避免了因解码后的数据过大导致存储空间不足限制视频编辑发挥的情况发生,提高了设备性能,且减少了对渲染模块300的等待时间,降低了视频预览时延。
在具体实现中,若所述路径信息有多个,则视频编辑指令包括多个路径信息的导入顺序,则依据视频编辑指令生成的第二数据获取请求可以包括多个路径信息的导入顺序,解码模块400在对目标富媒体数据解码时,还可以依据所述导入顺序确定所述多个富媒体数据的解码顺序;按照所述解码顺序对所述目标富媒体数据进行解码。即在导入多个富媒体数据的路径的情况下,先解码第一个导入的富媒体数据的路径对应的富媒体数据。
在本发明实施例中,目标富媒体数据可以包括目标图片数据以及目标视频数据,相对应地,所述第二编辑数据可以包括第一图像数据,和/或第二图像数据,解码模块400可以包括视频解码子模块4001以及图片解码子模块4002,视频解码子模块4001用于对目标视频数据进行解码,得到第一图像数据;图片解码子模块4002用于对目标图片数据进行解码,得到第二图像数据。
在本发明实施例的一种优选实施例中,所述IOS设备具有avassetreader接口,所述IOS设备预设有内存地址与第二缓冲区域地址的映射关系,所述视频解码子模块可以包括如下单元:
解码单元,用于采用所述avasset reader接口在内存中对所述目标视频数据进行解码,得到第一图像数据以及与所述第一图像数据对应的音频数据;
具体而言,avasset是IOS设备中的一个视频API(ApplicationProgramming Interface,应用程序编程接口)接口,avasset reader接口用来解码目标视频数据,得到一帧一帧的第一图像数据以及与所述第一图像数据对应的音频数据。可以通过初始化所述avasset reader接口来设置输出的一帧第一图像数据的分辨率大小,从而省略将其他分辨率缩放至需要的分辨率的过程,节省时间的同时,提升了后续的渲染速度。其中,所述分辨率可以为IOS设备的最佳显示分辨率,例如,需求的分辨率是640x480,可以直接通过avasset reader的初始化来设置输出大小,这样可以直接减掉一些高清视频缩放到640x480的过程,提升后续的渲染速度。
在本发明实施例的一种优选实施例中,所述与所述第一图像数据对应的音频数据,可以采用如下方式获得:获取所述目标视频数据的帧率;计算预设的音频数据采样率/帧率,得到一帧第一图像数据对应的音频数据。
具体的,帧率(Frame rate)是用于测量显示帧数的量度。所谓的测量单位为每秒显示帧数(Frames per Second,简称:FPS)或“赫兹”(Hz),所述目标视频数据的帧率可以从所述目标视频数据的头文件中获得,音频采样率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然,在数字音频领域,常用的采样率有:8,000Hz、11,025Hz、22,050Hz、32,000Hz、44,100Hz、47,250Hz、48,000Hz、50,000Hz、50,400Hz、96,000或者192,000Hz、2.8224MHz等。计算预设的音频数据采样率/帧率,得到一帧第一图像数据对应的音频数据,例如,目标视频数据的帧率是25帧每秒,音频采样率是8000Hz(表示一秒钟采样了8000个点,假设每个点是一个字节,那么一秒钟音频数据量就是8000个字节),计算出一帧第一图像数据对应的音频数据为8000/25=320个字节。
转换单元,用于获取所述内存的内存地址,按照所述内存地址与第二缓冲区域地址的映射关系,将所述第一图像数据的存储地址由所述内存地址转换成对应的第二缓冲区域地址。
在本发明实施例中,采用avasset reader接口完成目标视频数据的解码,由于avasset reader接口的特性,可以直接将解码后得到的第二编辑数据转换至第二缓冲区域中,具体的,本发明实施例的IOS设备上预设有内存地址与第二缓冲区域地址的映射关系,当解码出第二编辑数据后,可以通过avasset reader接口,依据所述内存地址与第二缓冲区域地址的映射关系,直接将第二编辑数据的内存地址转换成第二缓冲区域地址,期间第二编辑数据的存储位置并没发生变化,只是存储的地址名称发生了改变,而无需将第二编辑数据由内存复制至显存中,节省了数据传输的时间,同时,防止数据传输过程中数据丢失等情况的发生,提高视频编辑准确率。
需要说明的是,对目标视频数据解码后得到的第一图像数据存储在显存的第二缓冲区域中,并在显存中对所述第一图像数据进行渲染;而解码后得到的与所述第一图像数据对应的音频数据存储在内存中,本发明实施例还设置有音频渲染模块,用于在内存中对所述音频数据进行渲染(包括变调处理等)。对于所述音频数据,所述编码模块还用于,在内存中获取每一帧第一编辑数据对应的音频数据;在内存中对所述第一编辑数据以及对应的音频数据进行编码。
本发明实施例采用avasset reader接口来解码目标视频数据,由于avasset reader本身的工作原理是,想要获取哪个时间的帧,就会解码对应的帧,不存在与音频数据的同步,避免了调用播放器来解码视频时出现音视频同步导致的后期处理时间不够快出现的丢帧的情况,达到精准的帧级控制。
对于目标图片数据的解码,本实施例中的图片解码子模块采用多线程的方式在内存中对所述目标图片数据进行解码,提高解码效率,提升设备性能。解码后得到的第二图像数据可以通过opengles的teximage2d函数由内存中复制到第二缓冲区域中。另外,若图片解码子模块用来将多张图片拼接成视频,由于在所述第二缓冲区域中的所述第二图像数据的数据量大于第二预设阈值,停止解码所述目标图片数据,否则,继续解码所述目标图片数据,防止出现多张图片拼接成视频时存储空间不够而导致需要限制拼接图片张数引起的影响视频质量的问题,提升视频编辑质量。
参照图4,示出了本发明的一种基于IOS设备的视频编辑方法实施例的步骤流程图,所述IOS设备设置有大小为第一预设阈值的第一缓冲区域以及大小为第二预设阈值的第二缓冲区域,所述第一缓冲区域用于存储第一编辑数据,所述第二缓冲区域用于存储第二编辑数据,所述第一编辑数据为经过渲染的数据,所述第二编辑数据为经过解码但未渲染的数据,以及,预先设置有第一缓冲区域地址与内存地址的映射关系,本发明实施例可以包括如下步骤:
步骤401,接收视频编辑指令,所述视频编辑指令包括目标富媒体数据的路径信息;
步骤402,判断所述第一缓冲区域的地址对应的内存地址中是否存在第一编辑数据,若是,执行步骤403,若否,执行步骤404;
步骤403,获取所述第一编辑数据并编码;
步骤404,生成第一数据获取请求,继续执行步骤405;
步骤405,依据所述第一数据获取请求判断所述第二缓冲区域中是否存在第二编辑数据,若是,执行步骤406,若否,执行步骤407;
步骤406,获取所述第二编辑数据并对所述第二编辑数据进行渲染,生成第一编辑数据存储在第一缓冲区域中,返回执行步骤402;
步骤407,依据所述路径信息获取对应的目标富媒体数据,对所述目标富媒体数据进行解码,得到第二编辑数据存储在第二缓冲区域中,返回执行步骤405。
在本发明的一种优选实施例中,本发明实施例还可以包括:
实时监控所述第一缓冲区域中的第一编辑数据的数据量,以及所述第二缓冲区域中的第二编辑数据的数据量,在所述第二编辑数据的数据量大于或等于第二预设阈值时,停止对目标富媒体数据的解码。
在本发明的一种优选实施例中,所述目标富媒体数据包括目标视频数据,所述第二编辑数据包括第一图像数据,所述IOS设备具有avassetreader接口,所述步骤407可以包括如下子步骤:
子步骤S11,所述依据所述路径信息获取对应的目标视频数据;
子步骤S12,采用所述avasset reader接口在内存中对所述目标视频数据进行解码,得到预设分辨率大小的第一图像数据;
其中,所述预设分辨率大小为在所述avasset reader接口初始化时设定。
子步骤S13,将所述第一图像数据存储在第二缓冲区域中。
在本发明的一种优选实施例中,所述第二缓冲区域位于显存中,所述IOS设备预设有内存地址与第二缓冲区域地址的映射关系,所述子步骤S13进一步可以包括如下子步骤:
子步骤S131,获取所述内存的内存地址;
子步骤S132,按照所述内存地址与第二缓冲区域地址的映射关系,将所述第一图像数据的存储地址由所述内存地址转换成对应的第二缓冲区域地址。
在本发明的一种优选实施例中,所述方法还可以包括:
采用所述avasset reader接口在内存中对所述目标视频数据进行解码,与所述第一图像数据对应的音频数据,所述音频数据存储在内存中;
在内存中渲染所述音频数据;
在对所述第一编辑数据进行编码时,从内存中获取与所述第一编辑数据对应的经过渲染后的音频数据;
对经过渲染后的音频数据进行编码。
在本发明的一种优选实施例中,所述与所述第一图像数据对应的音频数据,可以采用如下方式获得:
获取所述目标视频数据的帧率;
计算预设的音频数据采样率/帧率,得到一帧第一图像数据对应的音频数据。
在本发明的一种优选实施例中,所述IOS设备具有avasset writer接口,采用所述avasset writer接口在内存中对所述第一编辑数据进行编码,最终生成视频文件。
在本发明的一种优选实施例中,所述目标富媒体数据包括目标图片数据,所述第二编辑数据包括第二图像数据,所述步骤407可以包括如下子步骤:
子步骤S21,所述依据所述路径信息获取对应的目标图片数据;
子步骤S22,在内存中采用多线程对所述目标图片数据进行解码,得到第二图像数据;
子步骤S23,将所述第二图像数据从内存中复制到第二缓冲区域中。
在本发明的一种优选实施例中,所述第一数据获取请求包括视频编辑样式信息,所述步骤406可以包括如下子步骤:
子步骤S31,接收所述第一图像数据和/或所述第二图像数据;
子步骤S32,解析所述视频编辑样式信息,获得一个或多个特效元素;
子步骤S33,在所述特效元素为多个时,确定所述特效元素的组合顺序;
子步骤S34,按照所述组合顺序在所述第一图像数据中依次添加对应的特效元素,生成第三图像数据;
子步骤S35,合并所述第三图像数据以及所述第二图像数据,生成第一编辑数据。
在本发明的一种优选实施例中,所述子步骤S34进一步可以包括如下子步骤:
子步骤S341,采用着色语言GLSL按照所述组合顺序在所述第一图像数据中依次添加对应的特效元素,生成第三图像数据。
作为本发明实施例的一种示例,所述特效元素可以包括裁剪信息、尺寸缩放信息、颜色编辑信息、透明度编辑信息、模糊效果信息。
在本发明的一种优选实施例中,所述路径信息有多个,所述视频编辑指令包括多个路径信息的导入顺序,则对应的目标富媒体数据有多个,所述步骤407可以包括如下子步骤:
子步骤S41,获取与所述路径信息对应的多个目标富媒体数据;
子步骤S42,依据所述导入顺序确定所述多个富媒体数据的解码顺序;
子步骤S43,按照所述解码顺序对所述目标富媒体数据进行解码,得到第二编辑数据存储在第二缓冲区域中。
对于方法实施例而言,由于其与上述装置实施例基本相似,所以描述的比较简单,相关之处参照在通讯录中添加插件的方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参照即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、移动设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理移动设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理移动设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理移动设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理移动设备上,使得在计算机或其他可编程移动设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程移动设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者移动设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者移动设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者移动设备中还存在另外的相同要素。
以上对本发明实施例所提供的一种基于IOS设备的视频编辑装置和一种基于IOS设备的视频编辑方法进行了详细介绍,本文中应用了具体个例对本发明实施例的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明实施例的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明实施例的限制。
Claims (29)
1.一种基于IOS设备的视频编辑装置,其特征在于,包括指令接收模块、编码模块、渲染模块、解码模块,所述编码模块与所述渲染模块间设置有大小为第一预设阈值的第一缓冲区域,所述解码模块与所述渲染模块间设置有大小为第二预设阈值的第二缓冲区域,所述IOS设备预先设置有第一缓冲区域地址与内存地址的映射关系,其中,
指令接收模块,用于接收视频编辑指令,并将所述视频编辑指令发送至编码模块和/或解码模块,所述视频编辑指令包括目标富媒体数据的路径信息;
编码模块,用于依据所述视频编辑指令生成第一数据获取请求,将所述第一数据获取请求发送至渲染模块,以及,从所述第一缓冲区域的地址对应的内存地址中获取一帧第一编辑数据,对所述第一编辑数据进行编码,其中所述第一编辑数据为经过渲染的数据;
渲染模块,用于在收到第一数据获取请求时,或在监测到所述第一缓冲区域中的数据量小于第一预设阈值时,判断所述第二缓冲区域是否存在第二编辑数据,若是,则从所述第二缓冲区域中获取一帧第二编辑数据,对所述第二编辑数据进行渲染生成第一编辑数据,将所述第一编辑数据存储到第一缓冲区域中;若否,则生成第二数据获取请求,将所述第二数据获取请求发送至解码模块;所述第二编辑数据为经过解码但未经过渲染的数据;
解码模块,用于在接收到所述视频编辑指令时,或在接收到所述第二数据获取请求时,依据所述路径信息获取对应的目标富媒体数据,对所述目标富媒体数据进行解码,得到第二编辑数据存储在第二缓冲区域中,以及,实时监测所述第二缓冲区域的所述第二编辑数据的数据量,在所述数据量大于或等于第二预设阈值时,停止解码所述目标富媒体数据,在所述数据量小于第二预设阈值时,继续解码所述目标富媒体数据。
2.根据权利要求1所述的装置,其特征在于,所述目标富媒体数据包括目标视频数据和/或目标图片数据,所述第二编辑数据包括第一图像数据,和/或第二图像数据,所述解码模块包括:
视频解码子模块,用于对所述目标视频数据进行解码,得到第一图像数据;
图片解码子模块,用于对所述目标图片数据进行解码,得到第二图像数据。
3.根据权利要求2所述的装置,其特征在于,所述IOS设备具有avasset reader接口,所述第二缓冲区域位于显存中,所述IOS设备预设有内存地址与第二缓冲区域地址的映射关系,所述视频解码子模块包括:
解码单元,用于采用所述avasset reader接口在内存中对所述目标视频数据进行解码,得到第一图像数据;
转换单元,用于获取所述内存的内存地址,按照所述内存地址与第二缓冲区域地址的映射关系,将所述第一图像数据的存储地址由所述内存地址转换成对应的第二缓冲区域地址。
4.根据权利要求3所述的装置,其特征在于,所述解码单元还用于,初始化所述avasset reader接口,设置输出的一帧第一图像数据的分辨率大小。
5.根据权利要求3或4所述的装置,其特征在于,所述解码单元还用于,采用所述avasset reader接口在内存中对所述目标视频数据进行解码,得到与所述第一图像数据对应的音频数据,所述音频数据存储在内存中。
6.根据权利要求5所述的装置,其特征在于,所述与所述第一图像数据对应的音频数据,采用如下方式获得:
获取所述目标视频数据的帧率;
计算预设的音频数据采样率/帧率,得到一帧第一图像数据对应的音频数据。
7.根据权利要求5所述的装置,其特征在于,所述视频编辑装置还包括:
音频渲染模块,用于在内存中对所述音频数据进行渲染。
8.根据权利要求7所述的装置,其特征在于,所述渲染模块还用于,将所述第一缓冲区域中的第一编辑数据从第二缓冲区域中读取到内存中。
9.根据权利要求8所述的装置,其特征在于,所述IOS设备具有avasset writer接口,所述编码模块还用于,采用所述avasset writer接口在内存中对所述第一编辑数据进行编码,最终生成视频文件。
10.根据权利要求9所述的装置,其特征在于,所述编码模块还用于,
在内存中获取每一帧第一编辑数据对应的音频数据;
在内存中对所述第一编辑数据以及对应的音频数据进行编码。
11.根据权利要求2所述的装置,其特征在于,所述第二缓冲区域位于显存中,所述图片解码子模块还用于,采用多线程在内存中对所述目标图片数据进行解码,得到第二图像数据,将所述内存中的第二图像数据复制到第二缓冲区域中。
12.根据权利要求2所述的装置,其特征在于,所述第一数据获取请求包括视频编辑样式信息,所述渲染模块包括:
数据接收子模块,用于接收所述第一图像数据和/或所述第二图像数据;
解析子模块,用于解析所述视频编辑样式信息,获得一个或多个特效元素;
顺序确定子模块,用于在所述特效元素为多个时,确定所述特效元素的组合顺序;
特效添加子模块,用于按照所述组合顺序在所述第一图像数据中依次添加对应的特效元素,生成第三图像数据;
第一编辑数据生成子模块,用于合并所述第三图像数据以及所述第二图像数据,生成第一编辑数据。
13.根据权利要求12所述的装置,其特征在于,所述特效添加子模块还用于,采用着色语言GLSL按照所述组合顺序在所述第一图像数据中依次添加对应的特效元素,生成第三图像数据。
14.根据权利要求12或13所述的装置,其特征在于,所述特效元素包括裁剪信息、尺寸缩放信息、颜色编辑信息、透明度编辑信息、模糊效果信息。
15.根据权利要求1所述的装置,其特征在于,所述路径信息有多个,所述视频编辑指令包括多个路径信息的导入顺序,则对应的目标富媒体数据有多个,所述解码模块还用于,
在接收到所述第二数据获取请求时,依据所述导入顺序确定所述多个富媒体数据的解码顺序;
按照所述解码顺序对所述目标富媒体数据进行解码。
16.根据权利要求1所述的装置,其特征在于,所述渲染模块位于第一线程中,所述编码模块位于第二线程中,所述第一线程与第二线程并行运行。
17.一种基于IOS设备的视频编辑方法,其特征在于,所述IOS设备设置有大小为第一预设阈值的第一缓冲区域以及大小为第二预设阈值的第二缓冲区域,所述第一缓冲区域用于存储第一编辑数据,所述第二缓冲区域用于存储第二编辑数据,所述第一编辑数据为经过渲染的数据,所述第二编辑数据为经过解码但未渲染的数据,以及,预先设置有第一缓冲区域地址与内存地址的映射关系,所述方法包括:
在接收视频编辑指令后,判断所述第一缓冲区域的地址对应的内存地址中是否存在第一编辑数据,所述视频编辑指令包括目标富媒体数据的路径信息;
若所述内存中存在所述第一编辑数据,则获取所述第一编辑数据并编码;
若所述第二缓冲区域不存在所述第一编辑数据,则生成第一数据获取请求;
依据所述第一数据获取请求判断所述第二缓冲区域中是否存在第二编辑数据;
若所述第二缓冲区域存在所述第二编辑数据,则获取所述第二编辑数据并对所述第二编辑数据进行渲染,生成第一编辑数据存储在第一缓冲区域中;
若所述第二缓冲区域不存在第二编辑数据,则依据所述路径信息获取对应的目标富媒体数据,对所述目标富媒体数据进行解码,得到第二编辑数据存储在第二缓冲区域中。
18.根据权利要求17所述的方法,其特征在于,还包括:
实时监控所述第一缓冲区域中的第一编辑数据的数据量,以及所述第二缓冲区域中的第二编辑数据的数据量;
在所述第一编辑数据的数据量大于或等于第一预设阈值时,停止对第二编辑数据的渲染;
在所述第二编辑数据的数据量大于或等于第二预设阈值时,停止对目标富媒体数据的解码。
19.根据权利要求17所述的方法,其特征在于,所述目标富媒体数据包括目标视频数据,所述第二编辑数据包括第一图像数据,所述IOS设备具有avasset reader接口,所述依据所述路径信息获取对应的目标富媒体数据,对所述目标富媒体数据进行解码,得到第二编辑数据存储在第二缓冲区域中的步骤包括:
所述依据所述路径信息获取对应的目标视频数据;
采用所述avasset reader接口在内存中对所述目标视频数据进行解码,得到预设分辨率大小的第一图像数据;
将所述第一图像数据存储在第二缓冲区域中。
20.根据权利要求19所述的方法,其特征在于,所述第二缓冲区域位于显存中,所述IOS设备预设有内存地址与第二缓冲区域地址的映射关系,所述将所述第一图像数据存储在第二缓冲区域中的步骤包括:
获取所述内存的内存地址;
按照所述内存地址与第二缓冲区域地址的映射关系,将所述第一图像数据的存储地址由所述内存地址转换成对应的第二缓冲区域地址。
21.根据权利要求19所述的方法,其特征在于,所述预设分辨率大小为在所述avasset reader接口初始化时设定。
22.根据权利要求19所述的方法,其特征在于,还包括:
采用所述avasset reader接口在内存中对所述目标视频数据进行解码,获得与所述第一图像数据对应的音频数据,所述音频数据存储在内存中;
在内存中渲染所述音频数据;
在对所述第一编辑数据进行编码时,从内存中获取与所述第一编辑数据对应的经过渲染后的音频数据;
对所述经过渲染后的音频数据进行编码。
23.根据权利要求22所述的方法,其特征在于,所述与所述第一图像数据对应的音频数据,采用如下方式获得:
获取所述目标视频数据的帧率;
计算预设的音频数据采样率/帧率,得到一帧第一图像数据对应的音频数据。
24.根据权利要求17-23所述的方法,其特征在于,所述IOS设备具有avasset writer接口,采用所述avasset writer接口在内存中对所述第一编辑数据进行编码,最终生成视频文件。
25.根据根据权利要求17所述的方法,其特征在于,所述目标富媒体数据包括目标图片数据,所述第二编辑数据包括第二图像数据,所述依据所述路径信息获取对应的目标富媒体数据,对所述目标富媒体数据进行解码,得到第二编辑数据存储在第二缓冲区域中的步骤包括:
所述依据所述路径信息获取对应的目标图片数据;
在内存中采用多线程对所述目标图片数据进行解码,得到第二图像数据;
将所述第二图像数据从内存中复制到第二缓冲区域中。
26.根据权利要求25所述的方法,其特征在于,所述第一数据获取请求包括视频编辑样式信息,所述获取所述第二编辑数据并对所述第二编辑数据进行渲染,生成第一编辑数据存储在第一缓冲区域中的步骤包括:
接收所述第一图像数据和/或所述第二图像数据;
解析所述视频编辑样式信息,获得一个或多个特效元素;
在所述特效元素为多个时,确定所述特效元素的组合顺序;
按照所述组合顺序在所述第一图像数据中依次添加对应的特效元素,生成第三图像数据;
合并所述第三图像数据以及所述第二图像数据,生成第一编辑数据。
27.根据权利要求26所述的方法,其特征在于,所述按照所述组合顺序在所述第一图像数据中依次添加对应的特效元素,生成第三图像数据的步骤包括:
采用着色语言GLSL按照所述组合顺序在所述第一图像数据中依次添加对应的特效元素,生成第三图像数据。
28.根据权利要求26或27所述的方法,其特征在于,所述特效元素包括裁剪信息、尺寸缩放信息、颜色编辑信息、透明度编辑信息、模糊效果信息。
29.根据权利要求17所述的方法,其特征在于,所述路径信息有多个,所述视频编辑指令包括多个路径信息的导入顺序,则对应的目标富媒体数据有多个,所述依据所述路径信息获取对应的目标富媒体数据,对所述目标富媒体数据进行解码,得到第二编辑数据存储在第二缓冲区域中的步骤包括:
获取与所述路径信息对应的多个目标富媒体数据;
依据所述导入顺序确定所述多个富媒体数据的解码顺序;
按照所述解码顺序对所述目标富媒体数据进行解码,得到第二编辑数据存储在第二缓冲区域中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410265870.1A CN104091608B (zh) | 2014-06-13 | 2014-06-13 | 一种基于ios设备的视频编辑方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410265870.1A CN104091608B (zh) | 2014-06-13 | 2014-06-13 | 一种基于ios设备的视频编辑方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104091608A true CN104091608A (zh) | 2014-10-08 |
CN104091608B CN104091608B (zh) | 2017-03-15 |
Family
ID=51639318
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410265870.1A Active CN104091608B (zh) | 2014-06-13 | 2014-06-13 | 一种基于ios设备的视频编辑方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104091608B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104602116A (zh) * | 2014-12-26 | 2015-05-06 | 北京农业智能装备技术研究中心 | 一种交互式富媒体可视化渲染方法及*** |
CN107979777A (zh) * | 2016-10-25 | 2018-05-01 | 央视国际网络无锡有限公司 | 一种直播流无缝切换方法及装置 |
CN111343499A (zh) * | 2018-12-18 | 2020-06-26 | 北京奇虎科技有限公司 | 一种视频合成方法和装置 |
CN111814714A (zh) * | 2020-07-15 | 2020-10-23 | 前海人寿保险股份有限公司 | 基于音视频录制的图像识别方法、装置、设备及存储介质 |
CN112954233A (zh) * | 2021-01-29 | 2021-06-11 | 稿定(厦门)科技有限公司 | 基于gpu的视频合成***及方法 |
CN113556500A (zh) * | 2020-04-24 | 2021-10-26 | 华为技术有限公司 | 一种视频叠加方法、装置及*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002281431A (ja) * | 2001-03-15 | 2002-09-27 | Fujitsu Ltd | 編集機能付き映像再生装置及び映像記録再生装置 |
CN100353450C (zh) * | 2003-01-10 | 2007-12-05 | 华为技术有限公司 | 一种多媒体数据的处理方法 |
CN103531218A (zh) * | 2013-04-17 | 2014-01-22 | Tcl集团股份有限公司 | 一种在线多媒体文件编辑方法及*** |
US20140044413A1 (en) * | 2011-05-26 | 2014-02-13 | Avid Technology, Inc. | Synchronous data tracks in a media editing system |
-
2014
- 2014-06-13 CN CN201410265870.1A patent/CN104091608B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002281431A (ja) * | 2001-03-15 | 2002-09-27 | Fujitsu Ltd | 編集機能付き映像再生装置及び映像記録再生装置 |
CN100353450C (zh) * | 2003-01-10 | 2007-12-05 | 华为技术有限公司 | 一种多媒体数据的处理方法 |
US20140044413A1 (en) * | 2011-05-26 | 2014-02-13 | Avid Technology, Inc. | Synchronous data tracks in a media editing system |
CN103531218A (zh) * | 2013-04-17 | 2014-01-22 | Tcl集团股份有限公司 | 一种在线多媒体文件编辑方法及*** |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104602116A (zh) * | 2014-12-26 | 2015-05-06 | 北京农业智能装备技术研究中心 | 一种交互式富媒体可视化渲染方法及*** |
CN104602116B (zh) * | 2014-12-26 | 2019-02-22 | 北京农业智能装备技术研究中心 | 一种交互式富媒体可视化渲染方法及*** |
CN107979777A (zh) * | 2016-10-25 | 2018-05-01 | 央视国际网络无锡有限公司 | 一种直播流无缝切换方法及装置 |
CN111343499A (zh) * | 2018-12-18 | 2020-06-26 | 北京奇虎科技有限公司 | 一种视频合成方法和装置 |
CN113556500A (zh) * | 2020-04-24 | 2021-10-26 | 华为技术有限公司 | 一种视频叠加方法、装置及*** |
CN113556500B (zh) * | 2020-04-24 | 2022-05-13 | 华为技术有限公司 | 一种视频叠加方法、装置及*** |
CN111814714A (zh) * | 2020-07-15 | 2020-10-23 | 前海人寿保险股份有限公司 | 基于音视频录制的图像识别方法、装置、设备及存储介质 |
CN111814714B (zh) * | 2020-07-15 | 2024-03-29 | 前海人寿保险股份有限公司 | 基于音视频录制的图像识别方法、装置、设备及存储介质 |
CN112954233A (zh) * | 2021-01-29 | 2021-06-11 | 稿定(厦门)科技有限公司 | 基于gpu的视频合成***及方法 |
WO2022160744A1 (zh) * | 2021-01-29 | 2022-08-04 | 稿定(厦门)科技有限公司 | 基于gpu的视频合成***及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104091608B (zh) | 2017-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104091607A (zh) | 一种基于ios设备的视频编辑方法及装置 | |
CN112184856B (zh) | 支持多图层特效及动画混合的多媒体处理装置 | |
CN104091608A (zh) | 一种基于ios设备的视频编辑方法及装置 | |
CN109168026A (zh) | 即时视频显示方法、装置、终端设备及存储介质 | |
CN111225232B (zh) | 基于视频的贴纸动画引擎、实现方法、服务器和介质 | |
CN109257587A (zh) | 一种编解码视频数据的方法及装置 | |
CN109788212A (zh) | 一种分段视频的处理方法、装置、终端和存储介质 | |
CN102819851B (zh) | 一种有声图片的计算机实现方法 | |
CN109002160A (zh) | 一种语音讲房控件展示方法及装置 | |
CN109327698A (zh) | 动态预览图的生成方法、***、介质和电子设备 | |
CN112802168A (zh) | 动画生成方法、装置及电视终端 | |
CN104219555A (zh) | 一种安卓***终端中的视频显示装置和方法 | |
WO2019025925A1 (en) | METHOD AND APPARATUS FOR ENCODING OR DECODING VIDEO CONTENT COMPRISING REGIONS HAVING LOOP VIDEOS OF DIFFERENT LOOP LENGTHS | |
CN114979785A (zh) | 视频处理方法和相关装置 | |
CN112929743B (zh) | 对视频中指定对象添加视频特效的方法、装置及移动端 | |
CN104506920A (zh) | 一种播放全媒体数据信息的方法及装置 | |
CN112150591B (zh) | 智能动画和图层化的多媒体处理装置 | |
CN114445600A (zh) | 一种特效道具的展示方法、装置、设备及存储介质 | |
KR20220110787A (ko) | 이기종 클라이언트 종단점에 대한 스트리밍을 위한 2d 비디오의 적응 | |
CN109246433A (zh) | 视频编码方法及装置、解码方法及装置、视频传输*** | |
US9396574B2 (en) | Choreography of animated crowds | |
CN106792219B (zh) | 一种直播回看的方法及装置 | |
CN104780389A (zh) | 一种视频处理方法及装置 | |
CN114708372A (zh) | 一种三维数字孪生场景的生成方法及相关装置 | |
EP3955585A1 (en) | Video processing method and apparatus, and electronic device and storage medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |