一种跨浏览器的H.265视频播放方法技术

技术编号:23991550 阅读:31 留言:0更新日期:2020-04-29 16:21
本发明专利技术公开一种跨浏览器的H.265视频播放方法,将H.265视频的解码器用WebAssembly技术编译成经过实例化后可以被浏览器的JavaScript引擎调用的.wasm格式,使得浏览器可以直接在网页上播放H.265视频,无需另行安装客户端等;而由于浏览器可以播放基于H.265的视频文件,服务端可以直接存储使用H.265编码的视频文件,可以极大的节省服务器的存储空间。

A cross browser h.265 video playback method

【技术实现步骤摘要】
一种跨浏览器的H.265视频播放方法
本专利技术涉及视频编码
,具体涉及一种跨浏览器的H.265视频播放方法。
技术介绍
H.265是ITU-TVCEG继H.264之后所制定的新的视频编码标准,相较于之前的H.264标准有了相当大的改善,仅需原先的一半带宽即可播放相同质量的视频,H.265标准也同时支持4K(4096×2160)和8K(8192×4320)超高清视频.鉴于H.265相对于H.264的巨大优势,对基于H.265的视频数据传输的需求越来越大,Android等多种平台都对H.265进行了支持.但是直至现在,作为B/S架构的基石——浏览器,全部都未对H.265进行支持。如何能在浏览器上实现直接播放H.265标准的视频,成为业内亟待解决的技术难题。
技术实现思路
针对上述提到的现有的浏览器不支持直接播放H.265视频的问题,本专利技术提供一种跨浏览器的H.265视频播放方法,利用WebAssembly技术对H.265视频的解码器进行加工,使其能够在现有的浏览器上运行。应当认识到,本专利技术的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术-包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作——根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。此外,可按任何合适的顺序来执行本文描述的过程的操作,除非本文另外指示或以其他方式明显地与上下文矛盾。本文描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本专利技术的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本文所述的专利技术包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本专利技术所述的方法和技术编程时,本专利技术还包括计算机本身。计算机程序能够应用于输入数据以执行本文所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本专利技术优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。本专利技术解决其技术问题采用的技术方案是:一种跨浏览器的H.265视频播放方法,包括以下步骤:S1,将H.265视频解码器的源码编译成WebAssembly库,产生.wasm文件;S2,浏览器和服务器建立网络连接,加载所述.wasm文件;S3,浏览器的WebAssembly模块对.wasm文件进行编译,得到WebAssembly库;S4,所述H.265视频解码器的类和方法被暴露给浏览器的JavaScript引擎,并建立一个负责桥接的JavaScript文件,所述JavaScript文件定义一个和WebAssembly库中的H.265视频解码器的类名和方法名一致的JavaScript类;S5,浏览器的JavaScript引擎建立浏览器到流媒体服务器的网络连接,从流媒体服务器上获取H.265视频的音视频数据;S6,浏览器的JavaScript引擎对所述JavaScript类进行实例化和调用,同时所述H.265视频解码器也被实例化,并在内存中建立对应的数据缓冲区;S7,所述H.265视频解码器和所述JavaScript文件通过指定的内存地址交换所述音视频数据,并将所述音视频数据缓存在所述数据缓冲区;S8,所述H.265视频解码器对所述音视频数据进行解码,输出YUV数据,并将所述YUV数据转换成RGB数据;S9,所述JavaScript通过解码器回调的方法获取所述RGB数据所在的内存地址,并从所述内存地址获取所述RGB数据;S10,所述JavaScript引擎调用html中canvas的绘制函数,使用浏览器的渲染引擎将JavaScript引擎读取到的RGB数据渲染到canvas画布上,得到视频。本专利技术解决其技术问题采用的技术方案进一步还包括:所述被实例化的H.265视频解码器有一个以上,每个H.265视频解码器实例独占一块用于缓存视频数据的数据缓冲区。所述浏览器到流媒体服务器的网络连接为http长连接或websokcet连接。所述H.265视频的音视频数据使用的视频传输协议为rtmp,rtsp,http-flv或自定义协议。所述H.265视频解码库采用C/C++语言编写。所述H.265视频解码器的解码库为ffmpeg解码库、X265解码库或海思H.265解码库中的一个。所述H.265视频解码器至少包括解码库配置、视频数据的输入和解码后的数据回调三个函数。每个WebAssembly库中的H.265视频解码器实例包括一个输入线程和一个输出线程,所述输入线程从数据缓冲区中读取待解码的H.265格式的音视频数据,并将解码后的YUV数据放入数据缓冲区,所述输出线程将从数据缓冲区读取到所述YUV数据转换成RGB数据,并通过解码回调返回到JavaScript引擎。所述H.265视频解码器实例与html页面中的canvas画布一对一绑定。本专利技术的有益效果是:本专利技术的跨浏览器的H.265视频播放方法将H.265视频的解码器用WebAssembly技术编译成经过实例化后可以被浏览器的JavaScript引擎调用的.wasm格式,使得浏览器可以直接在网页上播放H.265视频,无需另行安装客户端等;而由于浏览器可以播放基于H.265的视频文件,服务端可以直接存储使用H.265编码的视频文件,可以极大的节省服务器的存储空间。下面将结合附图和具体实施方式对本专利技术做进一步说明。附图说明图1为本专利技术的跨浏览器的H.265视频播放方法实施例的流程图;图2为本专利技术的跨浏览器的H.265视频播放方法实施例的数据流向示意图。本文档来自技高网...

【技术保护点】
1.一种跨浏览器的H.265视频播放方法,其特征在于,包括以下步骤:/nS1,将H.265视频解码器的源码编译成WebAssembly库,产生.wasm文件;/nS2,浏览器和服务器建立网络连接,加载所述.wasm文件;/nS3,浏览器的WebAssembly模块对.wasm文件进行编译,得到WebAssembly库;/nS4,所述H.265视频解码器的类和方法被暴露给浏览器的JavaScript引擎,并建立一个负责桥接的JavaScript文件,所述JavaScript文件定义一个和WebAssembly库中的H.265视频解码器的类名和方法名一致的JavaScript类;/nS5,浏览器的JavaScript引擎建立浏览器到流媒体服务器的网络连接,从流媒体服务器上获取H.265视频的音视频数据;/nS6,浏览器的JavaScript引擎对所述JavaScript类进行实例化和调用,同时所述H.265视频解码器也被实例化,并在内存中建立对应的数据缓冲区;/nS7,所述H.265视频解码器和所述JavaScript文件通过指定的内存地址交换所述音视频数据,并将所述音视频数据缓存在所述数据缓冲区;/nS8,所述H.265视频解码器对所述音视频数据进行解码,输出YUV数据,并将所述YUV数据转换成RGB数据;/nS9,所述JavaScript通过解码回调的方法获取所述RGB数据所在的内存地址,并从所述内存地址获取所述RGB数据;/nS10,所述JavaScript引擎调用html中canvas的绘制函数,使用浏览器的渲染引擎将JavaScript引擎读取到的RGB数据渲染到canvas画布上,得到视频。/n...

【技术特征摘要】
1.一种跨浏览器的H.265视频播放方法,其特征在于,包括以下步骤:
S1,将H.265视频解码器的源码编译成WebAssembly库,产生.wasm文件;
S2,浏览器和服务器建立网络连接,加载所述.wasm文件;
S3,浏览器的WebAssembly模块对.wasm文件进行编译,得到WebAssembly库;
S4,所述H.265视频解码器的类和方法被暴露给浏览器的JavaScript引擎,并建立一个负责桥接的JavaScript文件,所述JavaScript文件定义一个和WebAssembly库中的H.265视频解码器的类名和方法名一致的JavaScript类;
S5,浏览器的JavaScript引擎建立浏览器到流媒体服务器的网络连接,从流媒体服务器上获取H.265视频的音视频数据;
S6,浏览器的JavaScript引擎对所述JavaScript类进行实例化和调用,同时所述H.265视频解码器也被实例化,并在内存中建立对应的数据缓冲区;
S7,所述H.265视频解码器和所述JavaScript文件通过指定的内存地址交换所述音视频数据,并将所述音视频数据缓存在所述数据缓冲区;
S8,所述H.265视频解码器对所述音视频数据进行解码,输出YUV数据,并将所述YUV数据转换成RGB数据;
S9,所述JavaScript通过解码回调的方法获取所述RGB数据所在的内存地址,并从所述内存地址获取所述RGB数据;
S10,所述JavaScript引擎调用html中canvas的绘制函数,使用浏览器的渲染引擎将JavaScript引擎读取到的RGB数据渲染到canvas画布上,得到视频。


2.如权利要求1所述的跨浏览器的H.265视频播放方法,其特...

【专利技术属性】
技术研发人员:林楠韦继国
申请(专利权)人:深圳市思博慧数据科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1