本发明属于it与软件开发领域,尤其涉及一种基于ffmpeg实现视频音频在线预览的方法及系统。
背景技术:
1、随着短视频软件流行,h5网站对视频和音频在线预览功能的需求日益广泛。有的网站不提供视频和音频文件的在线预览,或者限制上传文件格式为h5组件默认支持格式。同时不同浏览器兼容的格式各不相同,如果不做处理用户体验极差。
技术实现思路
1、为解决上述问题,本发明提供了如下方案:一种基于ffmpeg实现视频音频在线预览的方法及系统。其中,一种基于ffmpeg实现视频音频在线预览的方法,包括:
2、针对不同的浏览器设计资源预览统一入口,使用策略模式,根据资源类型对应选择不同的处理方法进行处理,获得最优预览资源url,并输出二进制流。
3、优选地,使用策略模式,根据资源类型对应选择不同的处理方法进行处理的过程包括,
4、针对不同的浏览器设计资源预览统一入口,所述资源预览统一入口包括音频预览入口单元、视频预览入口单元以及其他预览入口单元;
5、基于所述资源预览统一入口接收参数预览目标资源url、请求信息request;
6、获取所述参数预览目标资源url中的文件类型并制定策略,根据不同的文件类型,对应采用不同的预览处理方法进行处理;
7、根据预览处理方法返回的最优预览资源url,输出二进制流。
8、优选地,根据不同的文件类型,对应采用不同的预览处理方法进行处理的过程包括,基于当前请求根据预设算法获得最优预览格式。
9、优选地,所述基于当前请求根据预设算法获得最优预览格式的过程包括,
10、接收参数预览目标资源url、请求信息request;
11、基于所述请求信息request获得当前浏览器类型;
12、根据浏览器视频音频兼容表,筛选获得当前浏览器兼容格式的数组s1;
13、根据视频音频格式的特征,进行优先级排序,获得排序结果;
14、根据所述排序结果,对所述数组s1中的元素优先级从高到低进行重新排序;
15、遍历所述数组s1中的元素,设当前元素为s1n,查询参数预览目标资源url同目录下,是否存在与目标资源名称相同、格式为s1n的资源,若存在,则s1n为最优预览格式;否则,取所述数组s1中的首个元素s10,将s10作为最优预览格式,调用格式转码方法,在目标资源同目录下,生成格式为s10的资源;
16、根据参数预览目标资源url和最优预览格式,返回最优预览资源url。
17、优选地,所述浏览器视频音频兼容表包括浏览器对音频的兼容性表和浏览器对视频的兼容性表;
18、所述浏览器对音频的兼容性表包括音频格式和浏览器类型;
19、所述浏览器对视频的兼容性表包括视频格式和浏览器类型;
20、所述音频格式包括ogg、mp3、wav;
21、所述视频格式包括ogg、mp4、webm;
22、所述浏览器类型包括chrome、firefox、ie9、opera、safari。
23、优选地,所述排序结果包括音频排序结果和视频排序结果;
24、所述音频排序结果为mp3>ogg>wav;
25、所述视频排序结果为mp4>ogg>webm。
26、优选地,所述将s10作为最优预览格式,调用格式转码方法,在目标资源同目录下,生成格式为s10的资源的过程包括,基于ffmpeg对目标资源进行安全转码,基于cache缓存历史转换记录。
27、优选地,所述基于ffmpeg对目标资源进行安全转码,基于cache缓存历史转换记录的过程包括,
28、接收参数预览目标资源url、最优预览格式s10,拼接参数预览目标资源url同目录下格式为s10的资源路径url0;
29、以url0作为key查询cache缓存中是否存在记录,如果存在说明已转换,返回成功结果;
30、否则,第二次以url0作为key查询cache缓存中是否存在记录,防止重复转码,如果仍然不存在,则加同步锁防止多线程同时对一个文件转码,同时在所述同步锁中进行调用,设置ffmpeg转码参数,准备转码;
31、第三次查询url0路径下是否存在对应文件,防止穿透缓存,如果仍然不存在,基于ffmpeg开始转码;
32、转码成功后,以url0作为key,url作为value保存在cache缓存中。
33、本发明还提供一种基于ffmpeg实现视频音频在线预览的系统,包括:
34、入口构建模块,用于针对不同的浏览器设计资源预览统一入口;所述资源预览统一入口包括音频预览入口单元、视频预览入口单元以及其他预览入口单元;
35、兼容处理模块,与所述入口构建模块连接,用于接收参数预览目标资源url和请求信息request,以及获取所述参数预览目标资源url中的文件类型并制定策略,根据不同的文件类型,对应采用不同的预览处理方法进行处理;
36、预览输出模块,与所述兼容处理模块连接,用于根据预览处理方法返回的最优预览资源url,输出二进制流。
37、优选地,所述兼容处理模块包括预览处理单元、格式转码单元;
38、所述预览处理单元用于基于当前请求根据预设算法获得最优预览格式;
39、所述格式转码单元用于基于ffmpeg对目标资源进行安全转码,基于cache缓存历史转换记录。
40、与现有技术相比,本发明具有如下优点和技术效果:
41、本发明提供网站在线预览视频音频的整体方案,提供了资源预览统一入口,并且支持用户自定义扩展,灵活性较强。
42、本发明提供了一种解决浏览器兼容性的方法,理论上支持所有视频和音频格式的预览,增加用户体验。
43、本发明提供了一种基于ffmpeg安全转码的方法,可靠性大大提高。
1.一种基于ffmpeg实现视频音频在线预览的方法,其特征在于,包括:
2.根据权利要求1所述的基于ffmpeg实现视频音频在线预览的方法,其特征在于,使用策略模式,根据资源类型对应选择不同的处理方法进行处理的过程包括,
3.根据权利要求2所述的基于ffmpeg实现视频音频在线预览的方法,其特征在于,根据不同的文件类型,对应采用不同的预览处理方法进行处理的过程包括,基于当前请求根据预设算法获得最优预览格式。
4.根据权利要求3所述的基于ffmpeg实现视频音频在线预览的方法,其特征在于,所述基于当前请求根据预设算法获得最优预览格式的过程包括,
5.根据权利要求4所述的基于ffmpeg实现视频音频在线预览的方法,其特征在于,所述浏览器视频音频兼容表包括浏览器对音频的兼容性表和浏览器对视频的兼容性表;
6.根据权利要求4所述的基于ffmpeg实现视频音频在线预览的方法,其特征在于,
7.根据权利要求4所述的基于ffmpeg实现视频音频在线预览的方法,其特征在于,所述将s10作为最优预览格式,调用格式转码方法,在目标资源同目录下,生成格式为s10的资源的过程包括,基于ffmpeg对目标资源进行安全转码,基于cache缓存历史转换记录。
8.根据权利要求7所述的基于ffmpeg实现视频音频在线预览的方法,其特征在于,所述基于ffmpeg对目标资源进行安全转码,基于cache缓存历史转换记录的过程包括,
9.一种基于ffmpeg实现视频音频在线预览的系统,其特征在于,包括:
10.根据权利要求9所述的基于ffmpeg实现视频音频在线预览的系统,其特征在于,