一种无插件音视频播放方法、系统、装置及可读介质与流程
未命名
09-08
阅读:108
评论:0

1.本技术属于音视频播放技术领域,尤其涉及一种无插件音视频播放方法、系统、装置及可读介质。
背景技术:
2.目前,用于通过音视频播放终端在视频播放应用上进行音视频播放时,为了兼顾音视频播放的兼容性,一般是通过浏览器的嵌入式插件以实现音视频的播放、预览、回放等操作,例如微软的ocx插件,但是,对于用户而言,每一次在音视频播放终端上进行音视频播放都需要加载插件,而且插件能适配的浏览器类型有限,以微软的ocx插件为例,其适配的浏览器仅有internet explorer浏览器,随着internet explorer浏览器停止维护,其用户会逐渐减少,继续使用该插件会给用户带来使用不便的问题。
3.因此,现有的通过浏览器的无插件音视频播放方法,通过浏览器加载用于视频转码的转码程序,对视频流进行转换获得可播放的视频流,但是不同的浏览器采用的视频播放协议格式是不同的,在视频数据传输的过程中,会存在视频播放协议难以兼容的问题。
技术实现要素:
4.有鉴于此,本技术的实施例提供了一种无插件音视频播放方法、系统、装置及可读介质,旨在不仅解决传统的音视频终端通过插件播放存在的用户使用不便的问题,还能够解决现有无插件音视频播放方法中的兼容性问题。
5.本技术实施例的第一方面提供了一种无插件音视频播放方法,包括后端服务器,该方法包括以下步骤:
6.获取浏览器的音视频请求;
7.根据浏览器确定所述浏览器对应的音视频通道参数;
8.根据音视频通道参数建立音视频链路;
9.通过音视频链路向浏览器的指定窗口返回相应的音视频流数据。
10.上述技术方案的有益效果在于,通过浏览器,例如市面上常见的浏览器firefox等,又如根据实际需求设计的视频播放平台,确定音视频通道参数,能够适应浏览器特征构建合适的音视频链路,使得通过该音视频链路传输的音视频流数据能够匹配于该浏览器的功能,更好地实现音视频播放的功能,用户体验更佳。
11.结合第一方面,在第一方面的某些实现方式中,确定浏览器的音视频请求为第一音视频请求,则根据音视频通道参数建立音视频链路,包括:
12.根据第一音视频请求,建立第一音视频链路并生成第一音视频线程,其中,第一音视频请求包括播放指定音视频的请求。
13.基于上述技术方案,每一个第一音视频请求都对应一个第一音视频链路和一个第一音视频线程,服务器后端可以根据每个第一音视频线程分别同时处理多个第一音视频请求,并将每个第一音视频请求的数据通过对应的第一音视频链路传输至浏览器前端的指定
窗口,使得用户能够同时播放多个音视频。
14.结合第一方面,在第一方面的某些实现方式中,确定浏览器的音视频请求为第二视频请求,则根据音视频通道参数建立音视频链路,包括:
15.根据第二音视频请求,建立第二音视频链路并生成第二音视频线程,第二音视频请求包括自指定时间起播放指定音视频的请求。
16.在一种可能的实现方式中,根据浏览器的音视频请求,通过音视频链路向浏览器的指定窗口返回音视频请求相应的音视频流数据,包括:
17.根据第二音视频请求的指定时间,通过第二音视频线程获取所述第二音视频请求对应的音视频流数据;
18.将第二音视频请求对应的音视频流数据返回给浏览器的指定窗口。
19.基于上述技术方案,每一个第二音视频请求都对应第一第二音视频链路和一个第二音视频请求,同时每个第二音视频请求中还包括的指定时间,服务器后端可以根据每个第二音视频请求通过第二音视频线程同时分别控制多个第二音视频请求对应的音视频流在浏览器前端窗口播放。
20.在一种可能的实现方式中,根据第二音视频请求的指定时间,通过第二音视频线程获取第二音视频请求对应的音视频流数据,包括:
21.根据第二音视频请求的指定时间,通过第二音视频线程获取一个或多个第二音视频请求对应的音视频数据包,音视频数据包包括所述第二音视频请求对应的音视频流数据和音视频流数据对应的时间戳;
22.将音视频数据包中的音视频流数据根据时间戳的先后顺序返回给浏览器的指定窗口。
23.基于上述技术方案,音视频流数据会根据时间分段进行打包压缩后传输,服务器后端在获取了音视频数据包后,根据音视频数据包的时间戳进行排序传输,确保视频可以按照时间顺序传输并播放。
24.在一种可能的实现方式中,将音视频数据包中的音视频流数据根据时间戳的先后顺序返回给浏览器的指定窗口,包括:
25.将第二音视频请求的音视频数据包的音视频流数据分别写入缓存;
26.获取写入缓存的音视频流数据包的时间戳;
27.根据所述音视频流数据包的时间戳计算所述音视频流数据的时间同步计算结果。
28.基于上述技术方案,通过音视频流数据的时间同步计算结果,对音视频流中的音频数据和视频数据进行同步,并将时间戳较早的音视频流数据优先进行音视频同步,这样时间戳较早的音视频流数据可以优先进行解码,保证了视频播放的流畅性。
29.结合第一方面,在第一方面的某些实现方式中,音视频流数据用于浏览器前端的帧头解析和音视频渲染,在获取浏览器的音视频请求之后,所述方法还包括:
30.通过预设协议对所述音视频请求进行验证。
31.基于上述技术方案,在受到音视频请求进行后,根据浏览器预设的传输协议,对音视频请求进行验证,确保浏览器的前端界面与浏览器的后端之间握手成功,使得音视频视频流能够成功传输。
32.第二方面,提供了一种无插件音视频播放系统,该系统可以包括多个前端界面和
多个后端服务器,其中,后端服务器包括:
33.请求获取模块,用于获取浏览器的音视频请求;
34.音视频通道参数获取模块,用于根据所述浏览器确定所述浏览器对应的音视频通道参数;
35.音视频链路创建模块;用于根据所述音视频通道参数建立音视频链路;
36.音视频流数据返回模块,用于根据所述浏览器的音视频请求,通过所述音视频链路向所述浏览器的指定窗口返回所述音视频请求对应的音视频流数据。
37.第二方面的有益效果可以参考第一方面的有益效果,在此不再赘述。
38.第三方面,提供了一种无插件音视频播放装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述方法的步骤。
39.第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述方法的步骤。
附图说明
40.图1为本技术实施例提供的一种无插件音视频播放方法的流程示意图;
41.图2为本技术实施例中获取第一音视频请求时的无插件音视频播放方法的流程示意图;
42.图3为图2所述方法中获取第一音视频请求时浏览器的后端流程时序图;
43.图4为图2所述方法中获取第一音视频请求后浏览器的前端流程示意图;
44.图5为本技术实施例中获取第二音视频请求时的无插件音视频播放方法的流程示意图;
45.图6为图5所述方法中获取第二音视频请求时浏览器的后端流程时序图;
46.图7为图5所述方法中获取第二音视频请求后浏览器的前端流程示意图;
47.图8是本发明实施例提供的一种无插件音视频播放系统的示意图;
48.图9是本发明实施例提供的一种无插件音视频播放装置的示意图。
具体实施方式
49.为了使本技术所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
50.下面将结合附图,对本技术中的技术方案进行描述。
51.本技术中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b的情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下中的至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a、b、c、a-b、a-c、b-c、或a-b-c,其中a、b、c可以是单个,也可以是多个。另外,在本技术的实施例中,“第一”、“第二”等字样并不对数量和执行次序进行限定。
52.需要说明的是,本技术中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本技术中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
53.如图1所示,为本技术提供的一种无插件音视频播放方法100的流程示意图,该方法可以通过任意一种浏览器进行无插件音视频播放,该方法中包括步骤120~180:
54.步骤120:获取浏览器的音视频请求。
55.本技术实施例的技术方案可以应用于各类浏览器,只要该浏览器的前端窗口无需加载浏览器的视频播放插件,就可以对视频进行播放,因此,所述浏览器包括但不限于chrome,firefox,microsoft edge等主流浏览器,同样也能够包括在局域网环境中或互联网环境中的客制化的视频监控系统、视频播放系统等。
56.本技术实施例的技术方案中,音视频请求可以是一个,也可以是多个,例如在浏览器的前端界面上同时播放多个视频,则相应的,后端服务器需要接收相应数量的音视频请求。需要说明的是,当音视频请求为多个时,每个音视频请求可以是相同的音视频请求,也可以是不同的音视频请求,本技术对此不做限定。
57.步骤140:根据所述浏览器确定所述浏览器对应的音视频通道参数。
58.本技术实施例的技术方案中,上述浏览器能够直接播放的视频解码标准是不同的,以主流浏览器chrome,firefox,microsoft edge为例,可支持h264或h265解码器的视频通过ffmpeg和webassembly在前端进行解码,以实现视频在浏览器的前端进行无插件播放。因此后端服务器根据浏览器的可支持的解码器,确定音视频通道参数,以确定向浏览器前端界面传输的视频流数据可以支持浏览器前端无插件进行播放。
59.在本技术实施例的技术方案中,音视频通道参数可以包括音视频流标识,还可以包括音视频传输参数和/或网络配置参数等,本技术对此不做限定。
60.步骤160:根据所述音视频通道参数建立音视频链路。
61.在本技术实施例的技术方案中,音视频链路通过连接后端服务器和前端界面之间的接口,使得后端服务器向前端界面进行视频流数据传输。
62.示例性的,音视频链路可以基于websocket协议,将浏览器前端与后端服务器连接起来,使浏览器前端和后端服务器进行“握手”,当“握手”动作完成后,浏览器前端和后端服务器之间就构建了音视频链路。两者之间可以进行数据的互相传送。
63.步骤180:根据所述浏览器的音视频请求,通过所述音视频链路向所述浏览器的指定窗口返回所述音视频请求对应的音视频流数据。
64.在本技术实施例的技术方案中,在音视频链路建立成功后,浏览器后端根据浏览器的音视频请求,从存储器中获取音视频请求对应的音视频流数据,将对应的视频流数据返回给浏览器前端的指定窗口。
65.示例性的,以上述步骤中基于websocket协议建立的音视频链路为例,在音视频链路建立完成后,根据“握手”信息,创建音视频请求对应的音视频对象,音视频对象执行音视频请求对应的动作,从共享内存中获取音视频请求对应的视频流数据之后,通过建立的websocket链路返回音视频请求对应的音视频流数据。
66.需要说明的是,浏览器前端的指定窗口,可以是浏览器前端页面上预设的视频播
放窗口,也可以根据浏览器的音视频请求,在浏览器的前端页面上生成新的视频播放窗口进行播放,在一个浏览器前端页面上可以存在一个或多个视频播放窗口,且视频播放窗口的位置可以根据浏览器的音视频请求确定。
67.在本技术实施例中,音视频通道参数可以包括音视频传输协议参数、音视频码率参数、视频帧率参数等。
68.在一个实施例中,音视频通道参数为音视频传输协议参数,即根据浏览器可适配的视频传输协议,例如在某些浏览器中,其能够支持h264/h265视频解码标准协议,那么在进行视频流数据传输时,传输的视频流需要符合h264/h265视频解码标准协议,在设定音视频通道参数时,可以根据浏览器的要求,使音视频链路按照需要的视频解码标准协议传输视频流数据。
69.本实施例通过浏览器的音视频解码标准协议,确定音视频通道参数,使得根据音视频通道参数构建的音视频链路可以传输符合浏览器视频解码标准协议的音视频流数据,使得浏览器能够在前端窗口进行无插件视频播放。
70.在另一个实施例中,音视频通道参数为音视频码率参数,在某些浏览器中,可接受的音视频码率是受限的,例如,某一视频直播平台的直播流量是受限的,那么就其不同清晰度的视频流的最高码率是固定的,那么在设定音视频通道参数时,可以根据浏览器和音视频请求,使音视频链路传输的码率符合浏览器的要求。
71.本实施例通过浏览器的预设码率,确定音视频通道参数,使得根据音视频通道参数构建的音视频链路可以传输符合更为适配浏览器解码器码率要求的音视频流数据,使得浏览器能够提供视频质量更为出色。
72.在另一个实施例中,音视频通道参数为音视频帧率参数,每个浏览器可支持的最高视频帧率是不同的,即不同浏览器内核能支持的最高视频帧率是不同的,例如chrome浏览器可支持的帧率就低于microsoft edge的可支持帧率,为了给用户更好的浏览器视频播放体验,因此在设定音视频通道参数时,可以对视频链路可传输的最高视频进行设定,使音视频链路传输的音视频流数据能以尽量高的帧率进行传输。
73.本实施例通过浏览器的所能支持的最高帧率,确定音视频通道参数,使得根据音视频通道参数构建的音视频链路所传输的音视频流帧率尽量接近浏览器所能支持的最高帧率,使得浏览器指定窗口播放的视频更为清晰稳定。
74.上述技术方案的有益效果在于,通过浏览器,例如市面上常见的浏览器firefox等,又如根据实际需求设计的视频播放平台,确定音视频通道参数,能够适应浏览器特征构建合适的音视频链路,使得通过该音视频链路传输的音视频流数据能够匹配于该浏览器的功能,更好地实现音视频播放的功能,用户体验更佳。
75.基于上文所指出的方案,获取音视频请求,其中音视频请求至少可能包括以下两种音视频请求,具体请参见下文:
76.第一音视频请求:
77.可选的,参见图2,在一些实施例中,当确定音视频请求为第一音视频请求时,上述步骤s140根据浏览器确定浏览器对应的音视频通道参数中,包括:
78.s140.1、根据第一音视频请求,建立第一音视频链路并生成第一音视频线程;
79.第一音视频请求包括播放指定音视频的请求。
80.在一些实施例中,第一音视频请求可以称为音视频播放请求,即根据第一音视频请求,从某一段视频的开始处完整进行播放,该段视频的开始处是预设的,可以是视频的自然开始处,也可以是直播视频的实时播放处或是预设延迟播放处等。用户不需要在视频的播放过程中对视频进度进行控制,这种音视频请求常见于视频监控场景。
81.示例性的,参见图3,为当上述音视频请求为第一音视频请求时,所述浏览器的后端服务器所执行的步骤时序图。在接收到浏览器(即图中web端)发送的第一音视频请求后,后端服务器(即图中videoserver端)中的crequesthandler根据第一音视频请求,要求相应的cpreviewmanager处理创建视频过程,并将创建视频的结果返回给crequesthandler,crequesthandler根据创建视频的结果,向web端发送带有会话标签的视频创建结果。根据上述的视频创建结果,web端和videoserver端之间构建第一音视频链路,即音视频播放链路,之后,crequesthandler根据发送给web端的会话标签,要求cpreviewmanager创建视频播放对象,cpreviewmanager创建视频对象成功后,cpreviewaction执行创建预览线程动作,创建的预览线程从服务器的共享内存中获取第一视频请求对应的视频流数据返回给web端。
82.接着,参见图4,web端在发送第一音视频请求之后,生成一个新的子线程,用于加载wasm解码程序,当web端通过第一音视频链路获取到第一视频请求对应的视频流数据后,先获取视频流数据中的帧头信息,同时将视频流数据写入缓存,加载的wasm解码程序对帧头信息进行解码,创建相应的解码类,并应用创建的解码类对写入缓存的视频流数据进行帧解析,获得解析完成的帧数据,再通过webgl对解析完成的帧数据进行渲染后,即可获得第一音视频请求请求播放的音视频。
83.第二视频请求:
84.可选的,参见图5,在一些实施例中,当确定音视频请求为第二音视频请求时,上述步骤s140根据浏览器确定浏览器对应的音视频通道参数中,包括:
85.s140.2、根据第二音视频请求,建立第二音视频链路并生成第二音视频线程;
86.第二音视频请求包括自指定时间起播放指定音视频的请求。
87.在一些实施例中,第二音视频请求可以称为音视频回放请求或音视频预览请求,即根据第二音视频请求,从某一段视频的特定时间点开始进行播放,该段视频的特定时间点可以是预设的,也可以是用户手动进行控制的。
88.示例性的,第二音视频请求为音视频回放请求,若视频为完整的播放视频,那么用户就需要在视频进度条上确认播放进度,从视频进度条上的进度处开始播放视频,直到视频播放完成或播放至设定的进度位置,或者,若视频为直播视频,那么用户可以选择从多久之前的直播进度开始进行播放。而当第二视频请求为音视频预览请求时,那么,用户在把鼠标放置在视频进度条上时,生成一个新的播放窗口,该播放窗口播放鼠标所在视频进度条处的视频的预览视频,该预览视频可以是该处视频帧后1~2秒的视频,也可以是该处视频段对应的预览视频。
89.在上述实施例中,对于每一个音视频请求,其对应一个音视频链路,同时也对应一个音视频线程,在音视频处理进程中,可以对应于多个音视频请求,可以有多个音视频线程获取对应的音视频流数据,并将音视频流数据通过对应的音视频链路传输到浏览器的指定窗口进行播放。示例性的,当浏览器的前端界面上有8个视频播放窗口,其中1~4号视频播
放窗口用于播放监控直播视频,5~8号视频播放窗口用于播放监控回放视频,那么,对于服务器后端来说,其同时收到1~4号的第一音视频请求和5~8号的第二音视频请求,服务器后端就会相应的建立4条第一音视频链路和4条第二音视频链路,根据1~4号的第一音视频请求,建立4个第一音视频线程以获取4个指定监控探头的视频流数据,根据5~8号的第二音视频请求,建立4个第二音视频线程获取4个指定监控探头中其中一个监控探头4个不同预设时间段的回放视频流数据,4个第一音视频线程和4个第二音视频线程同时可以在浏览器的前端界面上的8个指定视频播放窗口进行播放。
90.在一些实施例中,在步骤s180:根据所述浏览器的音视频请求,通过所述音视频链路向所述浏览器的指定窗口返回所述音视频请求对应的音视频流数据,包括:
91.s182.根据第二音视频请求的指定时间,通过第二音视频线程获取所述第二音视频请求对应的音视频流数据;
92.s184.将第二音视频请求对应的音视频流数据返回给浏览器的指定窗口。
93.在一些实施例中,在步骤s182中,还包括以下步骤:
94.根据第二音视频请求的指定时间,通过第二音视频线程获取一个或多个第二音视频请求对应的音视频数据包,音视频数据包包括所述第二音视频请求对应的音视频流数据和音视频流数据对应的时间戳;
95.将音视频数据包中的音视频流数据根据时间戳的先后顺序返回给浏览器的指定窗口。
96.在一种可能的实现方式中,将音视频数据包中的音视频流数据根据时间戳的先后顺序返回给浏览器的指定窗口,包括:
97.将第二音视频请求的音视频数据包的音视频流数据分别写入缓存;
98.获取写入缓存的音视频流数据包的时间戳;
99.根据音视频流数据包的时间戳计算音视频流数据的时间同步计算结果。
100.当浏览器为音视频监控平台时,正常情况下,音视频请求为第一音视频请求,浏览器窗口中播放的音视频流数据为监控摄像头的实时视频流数据,在存在多个监控摄像头,且浏览器中的播放窗口的数量少于监控摄像头的数量,用户需要对多个监控摄像头的视频流数据进行轮转播放,或者,在某一监控摄像头的监控区域出现非正常情况,用户需要对该监控摄像头的监控区域进行回放以确认非正常情况时,即用户发送的音视频请求为第二音视频请求,在建立了音视频链路之后,根据第二音视频请求,浏览器窗口中播放的音视频流数据为监控摄像头指定时间段的视频流数据,根据不同的情况,浏览器指定窗口中获取的视频流数据也是不同的。
101.若用户需要对多个监控摄像头的视频流数据进行轮转播放时,获取与第二音视频请求对应的多个监控摄像头的音视频数据包,分别对对应的监控摄像头进行编号,并按照编号顺序,依次获取每个监控摄像头的预设时长的音视频数据包,例如,对应的监控摄像头为3个,那么对对应的监控摄像头编号,之后根据当前时间14:00为例,先获取编号为1的监控摄像头中14:00~14:01的音视频数据包;接着获取编号为2的监控摄像头中14:01~14:02的音视频数据包;之后获取编号为3的监控摄像头中14:02~14:03的音视频数据包;再获取编号为1的监控摄像头中14:03~14:04的音视频数据包,依次类推,在获取数据包的同时,对数据包打上对应的时间戳,根据时间戳计算音视频流数据的时间同步计算结果,并将
音视频流数据包按照时间戳顺序传输给浏览器的指定窗口。
102.若用户需要对某一监控摄像头的监控区域进行回放时,获取第二音视频请求中对应时间点处的该监控摄像头的音视频数据包,例如,当前时间为14:00,需要回放该监控摄像头13:50开始的监控录像,此时,服务器后端能获取的视频流数据包括了该监控摄像头13:50~14:00的音视频流数据包,在浏览器前端指定窗口按照时间戳顺序播放完成13:50~14:00的音视频流数据包之后,由于在这个时间段内,服务器后端又获取了14:00~14:10的音视频流数据包,若用户没有退出当前的回放窗口,那么服务器后端会继续将14:00~14:10这一段时间中获取的音视频流数据包按照时间戳进行排序,并将音视频流数据包按照时间戳顺序传输给浏览器的指定窗口。
103.示例性的,参见图6,为当上述音视频请求为第二音视频请求时,所述浏览器的后端服务器所执行的步骤时序图。在接收到浏览器(即图中web端)发送的第二音视频请求后,后端服务器(即图中videoserver端)中的crequesthandler根据第二音视频请求,要求相应的cplaybackmanager处理创建视频过程,当创建视频成功后,要求cplaybackaction执行创建\控制第二音视频线程,根据第二音视频线程,从闪存中打开或控制相关的视频流段,并将相关的视频流段写入共享内存中之后,crequesthandler将创建视频的结果返回给crequesthandler,crequesthandler根据创建视频的结果,向web端发送带有会话标签的视频创建结果。根据上述的视频创建结果,web端和videoserver端之间构建第二音视频链路,即音视频回放链路或音视频预览链路,之后,crequesthandler根据发送给web端的会话标签,要求cplaybackmanager创建视频播放对象或视频预览对象,cplaybackmanager创建视频对象成功后,cplaybackaction执行回放动作或预览动作,根据执行的回放动作和预览动作的从服务器的共享内存中获取第二音视频线程写入共享内存的视频流数据返回给web端。
104.接着,参见图7,web端在发送第二音视频请求之后,生成一个新的子线程,用于加载wasm解码程序,当web端通过第二音视频链路获取到第二视频请求对应的视频流数据后,先获取视频流数据中的帧头信息,加载的wasm解码程序对帧头信息进行解码,创建相应的解码类,同时将视频流数据写入缓存。
105.由于根据第二视频请求,在视频进行播放的过程中,至少会存在以下播放场景:
106.场景一:
107.服务器后端可以知道视频具体的回放长度,在视频回放场景下,对视频回放的长度进行设定,例如,在进行监控视频回放的过程中,专门调用某一天的监控视频进行回放,此时,视频的开始时间戳和结束时间戳是固定的。
108.场景二:
109.服务器后端不知道视频具体的回放长度,例如在直播回放场景下,在开始进行回放后,由于直播仍然在进行,因此视频的具体回放长度无法确定,可能会存在视频在继续播放的过程中,播放进度超过了原先的直播进度,需要将后续的直播视频流数据会不断的写入缓存中。
110.为了保证回放视频按照正常的回放顺序进行播放,因此在本技术实施例中,当缓存达到一定的容量时,就对缓存中的视频流数据进行pts时间同步计算,pts早的先给到子线程解码,pts相同的一起给到解码器解码,在解码视频流数据的过程中应用根据视频帧头
创建的解码类对写入缓存的视频流数据进行帧解析,获得解析完成的帧数据,再通过webgl对解析完成的帧数据进行渲染后,即可获得第二音视频请求请求播放的音视频。
111.基于上述技术方案,音视频请求还包括第二音视频请求,而对于第二音视频请求,建立的第二音视频线程用于在浏览器的指定窗口上从指定时间开始播放指定音视频,从而在浏览器上实现视频的预览、回放等视频控制操作。
112.应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
113.本技术实施例还提供一种无插件音视频播放系统,该系统可以包括多个前端界面和多个后端服务器,其中,后端服务器包括:
114.请求获取模块,用于获取浏览器的音视频请求;
115.音视频通道参数获取模块,用于根据所述浏览器确定所述浏览器对应的音视频通道参数;
116.音视频链路创建模块;用于根据所述音视频通道参数建立音视频链路;
117.音视频流数据返回模块,用于根据所述浏览器的音视频请求,通过所述音视频链路向所述浏览器的指定窗口返回所述音视频请求对应的音视频流数据。
118.在本技术实施例中,音视频通道参数获取模块包括:
119.第一音视频线程生成模块:用于根据所述第一音视频请求,建立第一音视频链路并生成第一音视频线程;所述第一音视频请求包括播放指定音视频的请求。
120.在本技术实施例中,音视频通道参数获取模块还包括:
121.第二音视频线程生成模块:用于根据所述第二音视频请求,建立第二音视频链路并生成第二音视频线程;所述第二音视频请求包括自指定时间起播放指定音视频的请求。
122.在本技术实施例中,音视频流数据返回模块,包括:
123.音视频流获取模块:用于根据所述第二音视频请求的指定时间,通过所述第二音视频线程获取所述第二音视频请求对应的音视频流数据;
124.音视频流返回模块:用于将所述第二音视频请求对应的音视频流数据返回给所述浏览器的指定窗口。
125.在本技术实施例中,音视频流获取模块,包括:
126.音视频数据包获取模块:用于根据所述第二音视频请求的指定时间,通过所述第二音视频线程获取一个或多个所述第二音视频请求对应的音视频数据包,所述音视频数据包包括所述第二音视频请求对应的音视频流数据和所述音视频流数据对应的时间戳;
127.音视频数据包返回模块,用于将所述音视频数据包中的音视频流数据根据所述时间戳的先后顺序返回给所述浏览器的指定窗口。
128.本技术实施例还提供了一种计算机可读存储介质,用于存储计算机程序。
129.可选的,该计算机可读存储介质可应用于本技术实施例中的无插件音视频播放装置,并且该计算机程序使得计算机执行本技术实施例的各个方法中由边缘设备实现的相应流程,为了简洁,在此不再赘述。
130.本技术实施例还提供了一种计算机程序产品,包括计算机程序指令。
131.可选的,该计算机程序产品可应用于本技术实施例中的无插件音视频播放装置,
并且该计算机程序指令使得计算机执行本技术实施例的各个方法中由边缘设备实现的相应流程,为了简洁,在此不再赘述。
132.本技术实施例还提供了一种计算机程序。
133.可选的,该计算机程序可应用于本技术实施例中的无插件音视频播放装置,当该计算机程序在计算机上运行时,使得计算机执行本技术实施例的各个方法中由边缘设备实现的相应流程,为了简洁,在此不再赘述。
134.图9是本技术另一实施例提供的无插件音视频播放装置的示意性结构图。图9所示的装置900包括处理器910,处理器910可以从存储器中调用并运行计算机程序,以实现本技术实施例中所述的方法。
135.可选地,如图9所示,无插件音视频播放装置900还可以包括存储器920。其中,处理器910可以从存储器920中调用并运行计算机程序,以实现本技术实施例中的方法。
136.其中,存储器920可以是独立于处理器910的一个单独的器件,也可以集成在处理器910中。
137.可选地,如图9所示,无插件音视频播放装置900还可以包括收发器930,处理器910可以控制该收发器930与其他装置进行通信,具体地,可以向其他装置发送信息或数据,或接收其他装置发送的信息或数据。
138.应理解,本技术实施例提到的芯片还可以称为系统级芯片,系统芯片,芯片系统或片上系统芯片等。
139.应理解,本技术实施例的处理器可能是一种集成电路图像处理系统,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
140.可以理解,本技术实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接
动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
141.应理解,上述存储器为示例性但不是限制性说明,例如,本技术实施例中的存储器还可以是静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synch link dram,sldram)以及直接内存总线随机存取存储器(direct rambus ram,dr ram)等等。也就是说,本技术实施例中的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
142.本技术实施例中的存储器可以向处理器提供指令和数据。存储器的一部分还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。该处理器可以用于执行存储器中存储的指令,并且该处理器执行该指令时,该处理器可以执行上述方法实施例中与终端设备对应的各个步骤。
143.在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本技术实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器执行存储器中的指令,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
144.还应理解,上文对本技术实施例的描述着重于强调各个实施例之间的不同之处,未提到的相同或相似之处可以互相参考,为了简洁,这里不再赘述。
145.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
146.在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
147.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本技术实施例方案的目的。
148.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的
单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
149.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
150.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。
技术特征:
1.一种无插件音视频播放方法,包括后端服务器,其特征在于,所述方法包括以下步骤:获取浏览器的音视频请求;根据所述浏览器确定所述浏览器对应的音视频通道参数;根据所述音视频通道参数建立音视频链路;根据所述音视频请求,通过所述音视频链路向所述浏览器的指定窗口返回所述音视频请求对应的音视频流数据。2.如权利要求1所述的方法,其特征在于,确定所述浏览器的音视频请求为第一音视频请求,则所述根据所述音视频通道参数建立音视频链路,包括:根据所述第一音视频请求,建立第一音视频链路并生成第一音视频线程,所述第一音视频请求包括播放指定音视频的请求。3.如权利要求1所述的方法,其特征在于,确定所述浏览器的音视频请求为第二音视频请求,则根据所述音视频通道参数建立音视频链路,包括:根据所述第二音视频请求,建立第二音视频链路并生成第二音视频线程;所述第二音视频请求包括自指定时间起播放指定音视频的请求。4.如权利要求3所述的方法,其特征在于,所述根据所述浏览器的音视频请求,通过所述音视频链路向所述浏览器的指定窗口返回所述音视频请求相应的音视频流数据,包括:根据所述第二音视频请求的指定时间,通过所述第二音视频线程获取所述第二音视频请求对应的音视频流数据;将所述第二音视频请求对应的音视频流数据返回给所述浏览器的指定窗口。5.如权利要求4所述的方法,其特征在于,所述根据所述第二音视频请求的指定时间,通过所述第二音视频线程获取所述第二音视频请求对应的音视频流数据,包括:根据所述第二音视频请求的指定时间,通过所述第二音视频线程获取一个或多个所述第二音视频请求对应的音视频数据包,所述音视频数据包包括所述第二音视频请求对应的音视频流数据和所述音视频流数据对应的时间戳;将所述音视频数据包中的音视频流数据根据所述时间戳的先后顺序返回给所述浏览器的指定窗口。6.如权利要求5所述的方法,其特征在于,所述将所述音视频数据包中的音视频流数据根据所述时间戳的先后顺序返回给所述浏览器的指定窗口,包括:将所述第二音视频请求的音视频数据包的音视频流数据分别写入缓存;获取所述写入缓存的音视频流数据包的所述时间戳;根据所述音视频流数据包的时间戳计算所述音视频流数据的时间同步计算结果。7.如权利要求1~6任一所述的方法,其特征在于,所述音视频流数据用于浏览器前端的帧头解析和音视频渲染,在获取浏览器的音视频请求之后,所述方法还包括:通过预设协议对所述音视频请求进行验证。8.一种无插件音视频播放系统,包括后端服务器,其特征在于,所述后端服务器包括:请求获取模块,用于获取浏览器的音视频请求;音视频通道参数获取模块,用于根据所述浏览器确定所述浏览器对应的音视频通道参数;
音视频链路创建模块;用于根据所述音视频通道参数建立音视频链路;音视频流数据返回模块,用于根据所述浏览器的音视频请求,通过所述音视频链路向所述浏览器的指定窗口返回所述音视频请求对应的音视频流数据。9.一种无插件音视频播放装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述方法的步骤。10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述方法的步骤。
技术总结
一种无插件音视频播放方法、系统、装置及可读介质,包括后端服务器,所述方法包括获取浏览器的音视频请求;根据浏览器确定浏览器对应的音视频通道参数;根据音视频通道参数建立音视频链路;根据音视频请求,通过音视频链路向浏览器的指定窗口返回音视频请求对应的音视频流数据。通过浏览器确定音视频通道参数,能够适应浏览器特征构建合适的音视频链路,使得通过该音视频链路传输的音视频流数据能够匹配于该浏览器的功能,更好地实现音视频播放的功能,用户体验更佳。用户体验更佳。用户体验更佳。
技术研发人员:秦杰 杨清 陈庚
受保护的技术使用者:深圳市锐明技术股份有限公司
技术研发日:2023.05.12
技术公布日:2023/9/5
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/