视频直播回播系统以及视频直播回播方法与流程

文档序号:11930423阅读:290来源:国知局
视频直播回播系统以及视频直播回播方法与流程

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



背景技术:

传统视频播放系统架构如图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属性指向m3u8 URL,这里需要一个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形如 http://mybackend.com/playback/UDID01/VID001。

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

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