一种能够跨平台浏览器的视频直播方法与流程

文档序号:11518219阅读:1114来源:国知局

本发明涉及视频直播领域,具体地,涉及一种可以跨平台浏览器上经动态转码的视频直播方法。



背景技术:

随着科技的进步和发展,视频直播逐渐成为热门对象,视频直播产品、平台等不断涌现,而现有的视频直播存在如下技术问题:

1、传统的移动监控需要特殊的手机应用才能支持,无法满足现代社交网络的要求(如微信、微博分享等);

2、传统的直播路径是固定的,网络资源浪费;

3、传统的摄像头直播将摄像头访问地址直接暴露在外网,无法保证隐私安全性;

4、传统的摄像头直播系统与具体的厂家相关,兼容性差。



技术实现要素:

本发明提供了一种能够跨平台浏览器的视频直播方法,解决了现有视频直播存在资源利用率的问题和摄像头视频流多种协议兼容性问题,实现了能使单台服务器能管理成千上百摄像头的直播,极大的降低了用户硬件成本和服务器能耗的技术效果。

为解决上述技术问题,本申请提供了一种能够跨平台浏览器的视频直播方法,所述方法包括:

步骤1:用户通过终端请求需要访问的直播路径,并传递参数摄像头id;

步骤2:服务器将用户id和初始时间组成的一个键值对并放入一个用户信息字典内;

步骤3:服务器根据用户请求的摄像头id所对应的摄像头源地址采集视频信息;对采集到的视频流进行hls协议转码,并将该转码进程信息和步骤2的字典一起封装为一个转码对象,再将摄像头id和该转码对象组成的键值对放入一个全局字典里;

步骤4:服务器将转码后的地址返回给用户,用户根据返回地址访问直播;

步骤5:用户在观看直播时,定期发送请求到服务器,服务器根据请求参数中的摄像头id从全局字段中找到对应的转码对象,再通过请求参数中的用户id从转码对象中的用户信息字典中找到该用户对应的时间剩余值,并将时间剩余值加上一个时间常量,以此来确保该视频继续转码;

步骤6:服务器创建一个定时任务,定期访问全局字典里的键值对,从键值对中取出转码对象,再从转码对象中取出用户信息字典,若发现该用户信息字典为空,则将该键值对从全局字典里移除;否则继续轮询用户信息字典里的所有时间剩余值,将时间剩余值减去一个时间常量,若减去之后的值大于0,则保留,若小于0,则将该键值对从用户信息字典里移除。

本方案采用ffmpeg以及j2ee技术手段通过对摄像头采集的视频进行实时动态转码,最终使用户在前端能流畅地看到摄像头的直播。解决了资源利用率的问题和摄像头视频流多种协议兼容性问题,能使单台服务器能管理成千上百摄像头的直播,极大的降低了用户硬件成本和服务器能耗。

进一步的,所述步骤2具体为:当用户1访问摄像头时,用户1id为user1,摄像头id为camera1,设定用户初始时间剩余值为c0,将<user1,c0>键值对存入一个用户信息字典users1。该步骤主要用于存放某一摄像头的所有用户信息。

进一步的,所述步骤3具体包括:

声明一个java类hls,该类包含以下属性:{cameraid:摄像头id;users:映射键值对集合;process:转码进程;start:开始时间;uuid:唯一码};

使用java运行ffmpeg将转码摄像头rstp协议视频流为hls协议得到转码进程process1,转码后的访问路径为path1;

创建并初始化一个hls对象hls1{process=process1;start=当前时间;path=path1;camerid=camera1;users=users1};并将<camera1,hls1>键值对存入全局字典hlsmap;

再将访问路径path1返回给用户,用户即可通过该路径观看直播。该步骤主要用于存放所有摄像头的转码信息及其用户信息集合。

进一步的,所述步骤5具体包括:

用户user1在观看直播的同时每隔c1时间向服务器发出请求,并传递用户id和摄像头id,分别为user1和camera1;

服务器根据键camera1从全局字典hlsmap找到对应的值hls1,再根据user1从hls1的用户信息字典users1中找到键值对<user1,cx>;

最终以<user1,cx+c1>覆盖掉<user1,cx>。以此方式增加了用户的时间剩余值,用户即可继续观看该直播。该步骤主要用于更新用户在某一摄像头用户信息集合中的剩余时间值,以表示该用户仍在观看直播。

进一步的,所述步骤6具体包括:

创建一个定时任务每隔c1时间轮询全局字典hlsmap中的值hlsx,其中c1<c0;

若hlsx的users的键值对数量为0,则将该hlsx的转码进程processx终结释放资源并将该hlsx从全局字典hlsmap中移除;否则将hlsx的用户信息字典usersx里的值减去c1,若减去后的值小于0,则将该键值对从usersx中移除。该步骤主要用于定时轮询某一摄像头的用户信息,及时释放没有任何用户观看的转码进程,最大化利用服务器资源。

本申请提供的一个或多个技术方案,至少具有如下技术效果或优点:

本申请中的技术方案转码为hls(hls(httplivestreaming),apple的动态码率自适应技术,主要用于pc和apple终端的音视频服务,包括一个m3u(8)的索引文件,ts媒体分片文件和key加密串文件)协议的视频流,在跨平台浏览器直播浏览,无需特殊控件。

本申请中的技术方案提高服务器资源利用率,服务器会根据前端用户对某一个摄像头的访问来动态对该摄像头视频流进行转码,而不是一开始就进行转码静待用户来访问,因此可以合理的利用服务器资源,仅对用户访问的摄像头视频流进行转码,当用户离开访问某一摄像头时,也可以快速释放掉该资源。

附图说明

此处所说明的附图用来提供对本发明实施例的进一步理解,构成本申请的一部分,并不构成对本发明实施例的限定;

图1是本申请中能够跨平台浏览器的视频直播方法的流程示意图。

具体实施方式

本发明提供了一种能够跨平台浏览器的视频直播方法,解决了现有视频直播存在资源利用率的问题和摄像头视频流多种协议兼容性问题,实现了能使单台服务器能管理成千上百摄像头的直播,极大的降低了用户硬件成本和服务器能耗的技术效果。

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在相互不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述范围内的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。

请参考图1,本申请提供了一种能够跨平台浏览器的视频直播方法,所述方法包括:

步骤1:用户通过终端请求需要访问的直播路径,并传递参数摄像头id。

步骤2:服务器将用户id和初始时间组成的一个键值对并放入一个用户信息字典内。

步骤3:服务器根据用户请求的摄像头id所对应的摄像头源地址采集视频信息;对采集到的视频流进行hls协议转码,并将该转码进程信息和步骤2的字典一起封装为一个转码对象。再将摄像头id和该转码对象组成的键值对放入一个全局字典里。

步骤4:服务器将转码后的地址返回给用户,用户根据返回地址访问直播。

步骤5:用户在观看直播时,会定期发送请求到服务器,服务器根据请求参数中的摄像头id从全局字段中找到对应的转码对象,再通过请求参数中的用户id从转码对象中的用户信息字典中找到该用户对应的时间剩余值,并将时间剩余值加上一个时间常量。以此来保证该视频继续转码。

步骤6:服务器创建一个定时任务,定期访问全局字典里的键值对,从键值对中取出转码对象,再从转码对象中取出用户信息字典,若发现该用户信息字典为空,则将该键值对从全局字典里移除;否则继续轮询用户信息字典里的所有时间剩余值,将时间剩余值减去一个时间常量,若减去之后的值大于0,则保留,若小于0,则将该键值对从用户信息字典里移除。

●步骤详解:

针对步骤2:

当用户1(id为user1)访问摄像头(id为camera1)时,设定用户初始时间剩余值为c0,将<user1,c0>键值对存入一个用户信息字典users1。

针对步骤3:

声明一个java类hls(转码对象),该类包含以下属性:

{cameraid:摄像头id;users:映射键值对集合;process:转码进程;start:开始时间;uuid:唯一码};

使用java运行ffmpeg将转码摄像头rstp协议视频流为hls协议得到转码进程process1,转码后的访问路径为path1;

创建并初始化一个hls对象hls1{process=process1;start=当前时间;path=path1;camerid=camera1;users=users1};并将<camera1,hls1>键值对存入全局字典hlsmap。

再将访问路径path1返回给用户,用户即可通过该路径观看直播。

针对步骤5:

用户user1在观看直播的同时每隔c1时间就向服务器发出请求,并传递用户id和摄像头id其值分别为user1和camera1;

服务器根据键camera1从全局字典hlsmap找到对应的值hls1,再根据user1从hls1的用户信息字典users1中找到键值对<user1,cx>;

最终以<user1,cx+c1>覆盖掉<user1,cx>,以此方式增加了用户的时间剩余值,用户即可继续观看该直播。

针对步骤6:

创建一个定时任务每隔c1(其中c1<c0)时间轮询全局字典hlsmap中的值hlsx;

若hlsx的users的键值对数量为0,则将该hlsx的转码进程processx终结释放资源并将该hlsx从全局字典hlsmap中移除;否则将hlsx的用户信息字典usersx里的值减去c1,若减去后的值小于0.则将该键值对从usersx中移除。

上述本申请实施例中的技术方案,至少具有如下的技术效果或优点:

本申请中的技术方案转码为hls(hls(httplivestreaming),apple的动态码率自适应技术,主要用于pc和apple终端的音视频服务,包括一个m3u(8)的索引文件,ts媒体分片文件和key加密串文件)协议的视频流,在跨平台浏览器直播浏览,无需特殊控件。

本申请中的技术方案提高服务器资源利用率,服务器会根据前端用户对某一个摄像头的访问来动态对该摄像头视频流进行转码,而不是一开始就进行转码静待用户来访问,因此可以合理的利用服务器资源,仅对用户访问的摄像头视频流进行转码,当用户离开访问某一摄像头时,也可以快速释放掉该资源。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1