本发明涉及云导播的技术领域,尤其涉及云导播中视频同步的技术领域,具体涉及一种在云导播台视频同步的方法及系统。以转码引擎为核心,旨在cdn云服务器订阅的同一个流预览、预监、主监视频画面同步播放,提升用户操作和观看体验。
背景技术:
传统云导播台预览、预监、主监画面分别从cdn云服务器订阅rtmp输入源,经过转码,封装输出,再分别以rtmp协议发布到cdn云服务器供用户观看。这个过程中,订阅流、发布流会造成同一个流预览、预监、主监视频播放的不同步。严重影响用户的操作及观看体验。具体原因如下:
(1)cdn云服务器集群造成预览、预监、主监订阅同一个流时,设备接入点不同造成时差,进而视频不同步。
众所周知,cdn云服务器采用集群实现。集群负载均衡的一个实现方案就是通过域名实现。即一个远程请求数据时,根据集群内节点的空闲状态,决定使用哪台工作主机对外提供服务。实验证明:同一台服务器、多次从cdn云服务器订阅流,得到的主机ip地址不同。由于设备接入点不同,进而造成时差。即预览、预监、主监同一路流,视频从接收的那一刻,就已经不同步。
(2)cdn云服务器缓存一个gop视频数据,造成预览、预监、主监订阅同一个流时有时差,进而视频不同步。
一些主流的流媒体服务器,像srs,内部会缓存一个gop的视频数据,目的是为了接收端订阅流时,发送的第一帧视频是关键帧,可以秒出图。这也意味着从同一个服务器订阅流,得到的视频数据并不是当前最新的。最长是一个gop时间。实验证明:预览、预监、主监同一路流,同一时刻发送订阅请求,接收到的第一帧视频时间戳有时会差距很大。
技术实现要素:
针对上述问题,本发明的目的在于提供一种在云导播台视频同步的方法及系统,能够解决云导播台从cdn云服务器订阅的同一路流预览、预监、主监视频画面播放不同步的缺陷,实现云导播台从cdn云服务器订阅的同一个流,预览、预监、主监画面视频同步播放,提升了用户操作和观看体验。
本发明的上述发明目的是通过以下技术方案得以实现的:
一种在云导播台视频同步的方法,包括以下步骤:
s1:建立用于实现音视频文件的汇聚-分发的本地服务器,在cdn云服务器上通过rtmp协议订阅所述音视频文件的输入流到所述本地服务器;
s2:在所述本地服务器上建立汇聚模块,通过所述汇聚模块对所述音视频文件进行解码,并同时记录utc时间戳,以作为后续时间同步统一基准;
s3:将解码后的所述音视频文件中的音视频数据通过数据分发器分发至预览、预监、主监任务;
s4:包括预览、预监、主监在内的任务,在对所述音视频数据重新编码时,将所述utc时间戳写入所述音视频数据对应的信息中,将所述音视频数据发送到前端播放器;
s5:所述前端播放器,在播放时取出所述音视频数据中的所述utc时间戳,将所述utc时间戳作为时间同步统一基准,实现包括预览、预监、主监在内的任务的视频同步。
进一步地,在步骤s2中,还包括:建立汇聚-分发模型,具体为:
建立用于实现切流功能的任务管理-切流模块,当需要切换所述音视频文件的输入源时,将之前的输入源关闭并释放,并切换至新的输入源,同时将输入的所述音视频文件的数据包向后续模块进行投递;
对所述音视频文件的输入流进行解封装,提取原始的所述音视频数据的压缩包;
分别对音频数据压缩包和视频数据压缩包进行解码,生成视频数据yuv和音频数据pcm,将所述视频数据yuv和所述音频数据pcm,投入所述数据分发器中;
所述数据分发器采用生产者消费者模式,数据的生产来自于解码后生成的所述视频数据yuv和所述音频数据pcm,数据的消费者来自于预览、预监和主监任务的注册。
进一步地,所述数据分发器采用私有的tcp协议作为数据分发协议,保持与预览、预监和主监任务的长连接。
进一步地,在步骤s3中,还包括:
对于分发至主监任务的所述音视频数据,输出包括低分辨率视频数据和高分辨率视频数据在内的两路数据;
其中,所述低分辨率视频数据,提供给浏览器进行播放,所述高分辨率视频数据提供给直播延时使用。
进一步地,步骤s4,具体为:
对所述视频数据yuv的分辨率进行缩放,以供不同的所述前端播放器使用;
对所述音频数据pcm进行重采样,设置需要的音频输出采样率和声道数;
将所述视频数据yuv编码成视频h.264,将所述音频数据pcm编码成音频aac;
将所述utc时间戳写入到所述视频h.264编码的sei信息中;
将所述视频h.264和所述音频aac的压缩包进行封装,发送到所述前端播放器。
进一步地,步骤s5,具体为:
所述前端服务器订阅包括预览、预监和主监在内的任务的输出流;
对输出流进行解码,解码出所述视频h.264和所述音频aac;
取出所述视频h.264编码sei信息中的所述utc时间戳;
将所述utc时间戳作为时间同步统一基准,实现包括预览、预监、主监在内的任务的视频同步。
进一步地,包括预览、预监、主监在内的任务采用包括srt协议、rtmp协议在内的任意一种输出方式输出到所述前端播放器。
一种用于执行上述的在云导播台视频同步的方法的系统,包括:
服务器建立模块,用于建立用于实现音视频文件的汇聚-分发的本地服务器,在cdn云服务器上通过rtmp协议订阅所述音视频文件的输入流到所述本地服务器;
汇聚模块,用于在所述本地服务器上建立汇聚模块,通过所述汇聚模块对所述音视频文件进行解码,并同时记录utc时间戳,以作为后续时间同步统一基准;
分发模块,用于将解码后的所述音视频文件中的音视频数据通过数据分发器分发至预览、预监、主监任务;
任务重编码模块,用于提供给包括预览、预监、主监在内的任务,在对所述音视频数据重新编码时,将所述utc时间戳写入所述音视频数据对应的信息中,将所述音视频数据发送到前端播放器;
播放模块,用于提供给所述前端播放器,在播放时取出所述音视频数据中的所述utc时间戳,将所述utc时间戳作为时间同步统一基准,实现包括预览、预监、主监在内的任务的视频同步。
一种电子设备,其特征在于,包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由所述处理器加载并执行以实现上述的方法。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述的方法。
与现有技术相比,本发明的有益效果是:
(1)通过提供一种在云导播台视频同步的方法,包括以下步骤:s1:建立用于实现音视频文件的汇聚-分发的本地服务器,在cdn云服务器上通过rtmp协议订阅所述音视频文件的输入流到所述本地服务器;s2:在所述本地服务器上建立汇聚模块,通过所述汇聚模块对所述音视频文件进行解码,并同时记录utc时间戳,以作为后续时间同步统一基准;s3:将解码后的所述音视频文件中的音视频数据通过数据分发器分发至预览、预监、主监任务;s4:包括预览、预监、主监在内的任务,在对所述音视频数据重新编码时,将所述utc时间戳写入所述音视频数据对应的信息中,将所述音视频数据发送到前端播放器;s5:所述前端播放器,在播放时取出所述音视频数据中的所述utc时间戳,将所述utc时间戳作为时间同步统一基准,实现包括预览、预监、主监在内的任务的视频同步。上述技术方案,能够解决云导播台从cdn云服务器订阅的同一路流预览、预监、主监视频画面播放不同步的缺陷,实现云导播台从cdn云服务器订阅的同一个流,预览、预监、主监画面视频同步播放,提升了用户操作和观看体验。
(2)采用汇聚-分发模型。将同一路输入流的多次订阅,多次解码转变为一次订阅,一次解码,多次分发。
附图说明
图1为本发明一种在云导播台视频同步的方法的整体流程图;
图2为本发明云导播转码服务的整体架构示意图;
图3为本发明汇聚-分发模型示意图;
图4为本发明数据分发器中生产消费者模式示意图;
图5为本发明预览功能实现流程图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
本发明以转码引擎为核心。同时支持服务器和客户端两种视频同步方案,如下:
1.转码服务视频同步方案。
转码服务采用汇聚-分发模型。即从cdn云服务器订阅流到本地,此过程称为汇聚。预览、预监、主监视频从本地汇聚服务读取,而不是直接从cdn云服务器。即数据来自于汇聚服务的分发。将输入流的多次订阅,多次解码转变为一次订阅,一次解码,多次分发,降低了系统资源消耗。
2.客户端视频同步方案。
转码服务从cdn云服务器订阅流到本地,并记录接收到每一个视频包的utc时间戳,视频编码时,将记录的utc时间戳写入到h.264编码sei信息中。前端播放器解码h.164,读取sei信息中utc时间戳,以此utc时间戳作为统一时间基准,做播放控制。
以下通过具体实施例进行说明:
第一实施例
如图1和图2所示,本实施例提供一种在云导播台视频同步的方法,包括以下步骤:
s1:建立用于实现音视频文件的汇聚-分发的本地服务器,在cdn云服务器上通过rtmp协议订阅所述音视频文件的输入流到所述本地服务器。
具体地,本实施例为了实现对音视频流的汇聚,以利于后续的统一分发,首先,需要建立一个本地的服务器,用于存储从cnd云服务器上输入的视频。
s2:在所述本地服务器上建立汇聚模块,通过所述汇聚模块对所述音视频文件进行解码,并同时记录utc时间戳,以作为后续时间同步统一基准。
具体地,在本步骤中,需要建立建立汇聚-分发模型,如图3所示,具体包括以下步骤:
s21:建立用于实现切流功能的任务管理-切流模块,当需要切换所述音视频文件的输入源时,将之前的输入源关闭并释放,并切换至新的输入源,同时将输入的所述音视频文件的数据包向后续模块进行投递;
s22:对所述音视频文件的输入流进行解封装,提取原始的所述音视频数据的压缩包;
s23:分别对音频数据压缩包和视频数据压缩包进行解码,生成视频数据yuv和音频数据pcm,将所述视频数据yuv和所述音频数据pcm,投入所述数据分发器中;
s24:所述数据分发器采用生产者消费者模式(如图4),数据的生产来自于解码后生成的所述视频数据yuv和所述音频数据pcm,数据的消费者来自于预览、预监和主监任务的注册。
进一步地,所述数据分发器采用私有的tcp协议作为数据分发协议,保持与预览、预监和主监任务的长连接,以提高通信效率。
s3:将解码后的所述音视频文件中的音视频数据通过数据分发器分发至预览、预监、主监任务。
其中,对于分发至主监任务的所述音视频数据,输出包括低分辨率视频数据和高分辨率视频数据在内的两路数据;其中,所述低分辨率视频数据,提供给浏览器进行播放,所述高分辨率视频数据提供给直播延时使用。
s4:包括预览、预监、主监在内的任务,在对所述音视频数据重新编码时,将所述utc时间戳写入所述音视频数据对应的信息中,将所述音视频数据发送到前端播放器,如图5所示,具体为:
s41:对所述视频数据yuv的分辨率进行缩放,以供不同的所述前端播放器使用,如在预览中,需要缩放至低分辨率,以供web页面播放时使用;
s42:对所述音频数据pcm进行重采样,设置需要的音频输出采样率和声道数;
s43:将所述视频数据yuv编码成视频h.264,将所述音频数据pcm编码成音频aac;
s44:将所述utc时间戳写入到所述视频h.264编码的sei信息中;
s45:将所述视频h.264和所述音频aac的压缩包进行封装,发送到所述前端播放器。
s5:所述前端播放器,在播放时取出所述音视频数据中的所述utc时间戳,将所述utc时间戳作为时间同步统一基准,实现包括预览、预监、主监在内的任务的视频同步,具体为:
所述前端服务器订阅包括预览、预监和主监在内的任务的输出流;
对输出流进行解码,解码出所述视频h.264和所述音频aac;
取出所述视频h.264编码sei信息中的所述utc时间戳;
将所述utc时间戳作为时间同步统一基准,实现包括预览、预监、主监在内的任务的视频同步。
进一步地,包括预览、预监、主监在内的任务采用包括srt协议、rtmp协议在内的任意一种输出方式输出到所述前端播放器。
第二实施例
本实施例提供了一种用于执行第一实施例中的在云导播台视频同步的方法的系统,包括:
服务器建立模块1,用于建立用于实现音视频文件的汇聚-分发的本地服务器,在cdn云服务器上通过rtmp协议订阅所述音视频文件的输入流到所述本地服务器;
汇聚模块2,用于在所述本地服务器上建立汇聚模块,通过所述汇聚模块对所述音视频文件进行解码,并同时记录utc时间戳,以作为后续时间同步统一基准;
分发模块3,用于将解码后的所述音视频文件中的音视频数据通过数据分发器分发至预览、预监、主监任务;
任务重编码模块4,用于提供给包括预览、预监、主监在内的任务,在对所述音视频数据重新编码时,将所述utc时间戳写入所述音视频数据对应的信息中,将所述音视频数据发送到前端播放器;
播放模块5,用于提供给所述前端播放器,在播放时取出所述音视频数据中的所述utc时间戳,将所述utc时间戳作为时间同步统一基准,实现包括预览、预监、主监在内的任务的视频同步。
需要说明的是,其他步骤与第一实施例中相同,本实施例不再赘述。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。