首页> 中国专利> 视频直播回播系统以及视频直播回播方法

视频直播回播系统以及视频直播回播方法

摘要

本发明公开了一种视频直播回播系统,使用HLS(HTTP Live Streaming)协议作为底层视频播放协议,提出了一种创新的视频发布方式,把一些传统上由服务器端完成的计算密集型任务(视频编码、封装、转换等)转移到发布端,从根本上减少了对服务器计算资源的使用,从而避免系统性能瓶颈,服务器功能简化为文件存储和分发,通过CDN(内容分发网络)加速文件分发,系统具备高扩展性。同时提出了一种新的方案,通过共用同一HLS视频索引文件,解决了直播/回播统一访问URL的问题。

著录项

  • 公开/公告号CN106685942A

    专利类型发明专利

  • 公开/公告日2017-05-17

    原文格式PDF

  • 申请/专利权人 徐亮;

    申请/专利号CN201611182870.0

  • 发明设计人 徐亮;

    申请日2016-12-20

  • 分类号H04L29/06(20060101);H04L29/08(20060101);H04N21/845(20110101);

  • 代理机构上海三和万国知识产权代理事务所(普通合伙);

  • 代理人陈伟勇

  • 地址 330008 江西省南昌市东湖区包家巷119号2单元501

  • 入库时间 2023-06-19 02:09:24

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-07-24

    授权

    授权

  • 2018-05-11

    实质审查的生效 IPC(主分类):H04L29/06 申请日:20161220

    实质审查的生效

  • 2017-05-17

    公开

    公开

说明书

技术领域:

本发明涉及网络视频播放,特别涉及一种视频直播回播系统以及视频直播回播方法。

背景技术:

传统视频播放系统架构如图2所示,发布端只完成视频帧采集上传的工作,其他的转码、录制、分发的工作都由后端集群来完成,这样的设计导致了后端的工作压力相当大。从发布端角度来看,它的网络上行带宽有限制,但充足的计算资源没有得到有效利用。传统HLS视频直播回播系统把编码切片等CPU密集型任务放在服务器端做,这样随着视频发布端和/或播放端的增多,服务器成为系统的瓶颈,受限于服务器的计算资源(CPU/GPU),整个系统难以扩展,无法高效的支持高并发视频直播服务。

另一方面,已有的视频系统把直播和回播作为两个不同的媒体内容区别对待,导致直播时的播放URL和直播结束后回看的播放URL不相同,这样给发布端和播放端带来了很大不便。

发明内容:

本发明的目的是克服现有视频直播回播技术的以上缺点,提出一种视频直播回播系统,以及使用所述视频直播回播系统的视频直播回播方法。

本发明的视频直播回播系统包括发布端、播放端、云存储CDN和视频访问网页服务器;发布端包括录制模块、转换模块、上传模块、发布模块;录制模块用于视频采集、编码、切片,并生成多个连续视频文件;转换模块用于接收录制模块的连续视频文件,并封装,生成符合HLS规范要求的格式切片文件,即ts文件;上传模块用于接收转换模块的ts文件并上传到云存储CDN上,根据ts文件在云存储CDN上的URL,修改m3u8文件,把最新的ts文件URL包含其中,最后把修改后的m3u8文件上传到云存储CDN上,m3u8文件和ts文件一起构成完整的直播视频;云存储CDN除用于接收上传模块上传的各个ts文件和m3u8文件,并接受播放端对直播视频的请求;上传模块还用于把m3u8文件在云存储CDN上的URL转发给发布模块;发布端用于对每个用户或者设备分配一个唯一全局标识符,对每个用户或者设备的每个直播视频安排一个视频标识符,所述视频标识符为直播视频的开始时间戳或者是序列号;m3u8文件在云存储CDN上的URL一一对应于全局标识符和视频标识符;发布端的发布模块还用于把视频访问网页服务器的容器网页、全局标识符、视频标识符、和m3u8文件组装成视频访问URL,通过第三方消息服务向播放端发布所述视频访问URL;播放端通过视频访问URL,下载直播视频对应的各个视频文件进行播放。。

进一步,使用本发明的视频直播回播系统,本发明提供了一种视频直播方法,其包括以下步骤:

步骤一、录制模块执行视频采集、编码、切片,生成多个连续视频文件;

步骤二、转换模块接收录制模块的连续视频文件,并封装,生成符合HLS规范要求的视频切片文件,即ts文件;上传模块接收转换模块的ts文件并上传到云存储CDN上;上传模块根据云存储CDN上ts文件的URL,修改m3u8文件,把最新的ts文件URL包含其中,最后把修改后的m3u8文件上传到云存储CDN上;

步骤三、发布端对每个用户分配一个唯一全局标识符,对每个用户或者设备的每个直播视频安排一个视频标识符,所述视频标识符为视频的开始时间戳或者是序列号;

步骤四、发布端的发布模块把视频访问网页服务器的容器网页、全局标识符、视频标识符、和m3u8文件组装成视频访问URL,通过第三方消息服务向播放端发布所述视频访问URL;

步骤五、播放端支持HLS视频流,通过视频访问URL,下载直播视频对应的各个视频切片文件进行直播。

再进一步,使用本发明的视频直播回播系统,本发明提供了一种视频直播回播方法,其包括以下步骤:

步骤一、录制模块执行视频采集、编码、切片,生成多个连续视频文件;

步骤二、转换模块接收录制模块的连续视频文件,并封装,生成符合HLS规范要求的格式视频切片文件,即ts文件;上传模块接收转换模块的ts文件并上传到云存储CDN上;上传模块根据云存储CDN上各个ts文件的URL,修改m3u8文件,把最新的ts文件URL包含其中,最后把修改后的m3u8文件上传到云存储CDN上;

步骤三、发布端对每个用户或者设备分配一个唯一全局标识符,对每个用户或者设备的每个直播视频安排一个视频标识符,所述视频标识符为直播视频的开始时间戳或者是序列号;

步骤四、发布端的发布模块把视频访问网页服务器的容器网页、全局标识符、视频标识符、和m3u8文件组装成视频访问URL,通过第三方消息服务向播放端发布视频访问URL;

步骤五、播放端支持HLS视频流,通过视频访问URL,下载直播视频对应的各个视频切片文件进行直播;

步骤六、直播结束后,发布端的上传模块最后一次更新云存储CDN上的m3u8文件,以包含整个视频流的所有ts文件的URL

步骤七、播放端访问步骤六的URL,收看完整直播视频的回播。

本发明具有以下效果和优点:

首先,本发明提出的视频直播回播系统,在源头(即发布端)完成HLS视频流内容的加工(包括视屏采集,编码,视频切片ts文件和生成m3u8索引文件),然后把视频切片和索引文件上传到后端服务器,通过 CDN(Content Delivery Network)内容分发网络把视频流分发出去,这样的好处是发布端和后端各司其职,发布端的高性能CPU/GPU得到了充分利用,不仅仅做了视频采集还完成了编码和切片,把CPU/GPU计算密集型的工作处理掉。于是后端服务器的工作得以简化,去除了视频编码切片功能,只保留单纯的文件分发功能,后端收取发布端上传的ts切片文件和m3u8切片索引文件,然后通过CDN把视频切片文件(静态文件)分发出去,这正是CDN所擅长的。整个系统在终端视频采集设备和服务器之间合理分配工作(CPU密集型工作和IO密集型工作),避免了系统性能瓶颈,具有高度的可扩展性。

其次,传统系统对直播和回播采用不同的技术方案,导致直播和回播的访问URL无法统一。如果发布者分享了一个直播,观众只能在直播时访问,否则会被告知直播已结束。本发明提出的视频直播回播方法,统一了直播和回播的访问URL,即使直播结束,观众一样可以通过同一个访问URL看到整个视频的回播。

附图说明:

以下结合附图和具体实施方式来进一步说明本发明。

图1是本发明视频直播回播方法的系统架构图;

图2是传统视频播放系统的架构图。

具体实施方式:

为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明的实施方式。

如图1所示,本发明的视频直播回播系统的实施例包括发布端、播放端、云存储CDN和视频访问网页服务器。发布端包括录制模块、转换模块、上传模块;发布端的上传模块与云存储CDN之间通过HTTP/HTTPS通信,云存储CDN与播放端之间通过HTTP/HTTPS通信;录制模块用于视频采集、编码、切片,并生成连续视频文件;转换模块用于接收录制模块的连续视频文件,并封装,生成符合HLS规范要求的格式视频切片文件,即ts文件;上传模块用于接收转换模块的ts文件并上传到云存储CDN上;上传模块根据云存储CDN上各个ts文件的URL,修改m3u8文件,把最新的ts文件URL包含其中,最后把修改后的m3u8文件上传到云存储CDN上,m3u8文件和多个ts文件一起构成一个完整的直播视频;云存储CDN把直播视频的HLS视频流分发到播放端;播放端通过HTTP下载m3u8文件,然后根据m3u8文件下载视频对应的各个视频文件进行播放。

使用本发明的视频直播回播系统,本发明提供了一种视频直播方法,其包括以下步骤:

步骤一、录制模块执行视频采集、编码、切片,生成多个连续视频文件;

步骤二、转换模块接收录制模块的连续视频文件,并封装,生成符合HLS规范要求的视频切片文件,即ts文件;上传模块接收转换模块的ts文件并上传到云存储CDN上;上传模块根据云存储CDN上ts文件的URL,修改m3u8文件,把最新的ts文件URL包含其中,最后把修改后的m3u8文件上传到云存储CDN上;

步骤三、发布端对每个用户分配一个唯一全局标识符,对每个用户或者设备的每个视频安排一个视频标识符,所述视频标识符为直播视频的开始时间戳或者是序列号;

步骤四、发布端的发布模块把视频访问网页服务器的容器网页、全局标识符、视频标识符、和m3u8文件组装成视频访问URL,通过第三方消息服务向播放端发布所述视频访问URL;

步骤五、播放端支持HLS视频流,通过视频访问URL,下载直播视频对应的各个视频切片文件进行直播。

使用本发明视频直播回播系统实施例,本发明提供了一种视频直播回播方法,其包括以下步骤:

步骤一、录制模块执行视频采集、编码、切片,生成多个连续视频文件;

步骤二、转换模块接收录制模块的连续视频文件,并封装,生成符合HLS规范要求的格式视频切片文件,即ts文件;上传模块接收转换模块的ts文件并上传到云存储CDN上;上传模块根据云存储CDN上各个ts文件的URL,修改m3u8文件,把最新的ts文件URL包含其中,最后把修改后的m3u8文件上传到云存储CDN上;

步骤三、发布端对每个用户或者设备分配一个唯一全局标识符,对每个用户或者设备的每个视频安排一个视频标识符,所述视频标识符为直播视频的开始时间戳或者是序列号;

步骤四、发布端的发布模块把视频访问网页服务器的容器网页、全局标识符、视频标识符、和m3u8文件组装成视频访问URL,通过第三方消息服务向播放端发布视频访问URL;

步骤五、播放端支持HLS视频流,通过视频访问URL,下载视频对应的各个视频切片文件进行直播;

步骤六、直播结束后,发布端的上传模块最后一次更新云存储CDN上的m3u8文件,以包含整个视频流的所有ts文件的URL

步骤七、播放端访问步骤六的URL,收看完整直播视频的回播。

这样直播和回播使用同一个视频访问URL。

本发明提及的m3u8文件既支持直播也回播。现举两个例子,例1为直播时m3u8文件的内容,例2为回播时m3u8文件的内容。直播时,m3u8文件只记录最近的几个视频切片文件。当直播结束,用作回播的m3u8文件包括了所有的视频切片文件元信息,并以#EXT-X-ENDLIST结尾。这里的关键问题是如何把对两者的支持统一起来。

本发明提出的方案使得直播和回播统一了m3u8 URL。首先在发布端记录一个全局唯一标识符UDID,这个UDID可以是用户标识符,也可以是设备标识符,只需要系统内全局唯一即可。然后记录直播视频的视频标识符VID,该标识符可以是视频开始时间戳,也可以是序列号,只需要保证在UDID的上下文限定下唯一即可。这两个标识符共同保证了视频标识在系统内的唯一性。可以使用简单的字符串拼接或安全散列函数(SHA-1,MD5等),由输入UDID和VID生成m3u8 在CDN上的URL,例如:http://CDN/UDID/VID.m3u8。

到这一步,直播和回播使用同一个URL访问m3u8文件。直播时,发布端定期更新云存储CDN上的m3u8文件,包含了直播中不断生成的视频切片文件在云存储CDN上的URL。直播结束后,发布端最后一次更新CDN上的m3u8文件,以包含整个视频流的所有切片文件URL。

例1:

#EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:8 #EXT-X-MEDIA-SEQUENCE:2680 #EXTINF:8, https://priv.example.com/fileSequence2680.ts #EXTINF:8,https://priv.example.com/fileSequence2681.ts #EXTINF:8, https://priv.example.com/fileSequence2682.ts

例2:

#EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:8 #EXTINF:8, https://priv.example.com/fileSequence2679.ts #EXTINF:8, https://priv.example.com/fileSequence2680.ts #EXTINF:8, https://priv.example.com/fileSequence2681.ts #EXTINF:8, https://priv.example.com/fileSequence2682.ts #EXTINF:8, https://priv.example.com/fileSequence2683.ts #EXT-X-ENDLIST

Web浏览器通过HTML的<video>标签支持播放HLS视频流,标签有一个src属性指向m3u8URL,这里需要一个Web 网页作为内嵌HLS视频的容器。

<html> <head> </head> <body> <video id="player" controls="controls"src="placeholder"></video> </body> </html>

HLS视频容器网页代码示例

这个容器网页(playback.html)可以作为静态网页放在任何网络服务器上,例如http://mybackend.com/playback.html,通过URL的查询字符串,带上m3u8 的URL信息,最后播放URL形如(完全版URL),容器网页中的脚本从URL查询字符串中提取m3u8文件的URL,然后用m3u8 URL替换掉video 的src属性中占位符(placeholder)。

这条URL包含三个主要信息:1.这是播放页面。2.发布者的用户标识符是UDID。3.该发布者发布的视频标识符为VID。基于此,播放URL可以简化为 http://mybackend.com/playback/UDID/VID(简版URL)。通过服务器端URL重写(URL Rewrite)机制,把简版URL转换成完全版URL

此外还有一种方案,把容器网页作为动态页面,由服务器在收到HTTP GET请求时动态生成。例如上述的简版URL,服务器收到对应这个URL的HTTP GET请求时,不是采用URL重写机制,而是直接在HTML播放页模版基础上,把video标签的src属性替换为m3u8文件URL,然后返回给客户端。

用户通过发布模块可以在直播时或直播结束后把以上的视频访问URL 通过消息服务发送给播放端,消息服务可以是传统的手机短信,也可以是微信消息或者微博等互联网服务。播放端接收到这个URL后,点开链接,调起浏览器打开容器网页,用户就可以即刻播放该视频流。

发布端以手机移动设备为例,手机在开始录制视频时,记录下时间戳作为视频标识符VID。手机端采集视频帧,每隔一个时间片(例如5秒钟)编码生成一个临时视频文件,不同的手机操作系统支持支持不同的编码方式,可能是mpeg4编码,也可能是h.264编码等其他编码。这个临时视频文件在iPhone上一般以mov格式封装,在安卓手机上一般以mp4格式封装。然后做进一步处理,把临时视频文件重新转码封装成HLS协议要求的mpeg2-ts的视频切片文件(文件扩展名.ts)。再后,把ts文件上传到CDN。最后为了包含最新的视频切片(.ts文件)在CDN上的URL等元信息,更新索引文件(.m3u8文件),并上传到CDN。CDN上的切片索引文件URL就是这个HLS视频流的访问入口。直播过程中,新的切片文件不停的产生并被不停的上传至云存储CDN,相应的索引文件也不断的更新,直到直播结束,这时手机会对索引文件发起一个完整更新,包含了之前所有的视频切片URL,视频流从直播状态变成回播状态。

以图1举例来说,某一次直播产生了一组.ts文件,对应的URL是 http://CDN/UDID01/VID001/s001.ts http://CDN/UDID01/VID001/s002.ts ... 同时产生了一个.m3u8文件,对应的URL是http://CDN/UDID01/VID001.m3u8。

完全版播放URL形如

,简版播放URL形如>

发布端手机把以上的播放URL 通过手机短信或互联网服务分享给播放端手机。iPhone和安卓手机网页浏览器均支持HLS视频流播放,播放端手机接收到这个URL后,点开链接,调起手机网页浏览器打开容器网页,用户就可以即刻播放该HLS视频流。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号