音视频和课件同步播放的方法及系统与流程

文档序号:28427430发布日期:2022-01-12 00:31阅读:208来源:国知局
音视频和课件同步播放的方法及系统与流程

1.本发明属于计算机多媒体技术领域,具体涉及一种音视频和课件同步播放的方法及系统。


背景技术:

2.hls(http live streaming)协议是一种基于http协议的流媒体播放协议。由于主流的手机操作系统(安卓、ios)都兼容http协议,因此hls能适配各种型号的移动端设备。
3.在教学直播场景中,流媒体和在线课件的同步播放是一种最基本的体验,应用场景如:老师在10点10分30秒的时候讲了一句话,同时做了一次在线课件的翻页,在学生端收听到老师讲话的时候,看到的课件也应自动翻页。但是,hls协议本身只是音视频播放协议,无法完成课件和音视频的同步操作。


技术实现要素:

4.本发明要解决的技术问题是提供一种音视频和课件同步播放的方法及系统,用于使得课件和音视频能保持在秒级以内的同步。
5.为解决上述技术问题,本发明采用如下的技术方案:
6.本发明实施例一方面提供了一种音视频和课件同步播放的方法,应用于包括主播终端、服务器和观众终端的音视频和课件同步播放的系统,包括以下步骤:
7.s1,主播终端把从摄像头、麦克风中采集到的音视频信号通过webrtc协议推流到服务器的音视频处理服务;
8.s2,音视频处理服务把接收到的webrtc协议的流数据转成rtmp流,并输出到服务器的视频直播服务;
9.s3,视频直播服务接收到rtmp流,把音视频流数据转码成基于hls协议的ts文件,并从rtmp流的sei信息中读取时间戳,ts文件用时间戳命名发布在内容分发网络cdn中;
10.s4,观众终端的hls播放器根据m3u8文件中的ts文件列表播放视频,并通过事件的方式往外部抛出播放的时间戳;
11.s5,主播操作课件时,主播终端的课件操作端收集操作指令,发送给服务器的操作指令队列;
12.s6,操作指令队列收到指令后,往指令中写入当前时间戳,保存进指令队列;
13.s7,观众终端的课件播放器收到hls播放器抛出的时间戳通知后,从操作指令队列中获取这个时间戳之前的操作指令,根据操作指令顺序模拟操作课件。
14.优选地,s2具体包括:
15.s201,音视频处理服务接收主播终端推送的音视频流;
16.s202,音视频流通过ffmpeg转码成每秒一个gop;
17.s203,对于每个gop,把当前的间时间戳写入sei中;
18.s204,转码完成后的gop通过rtmp协议输出到视频直播服务。
19.优选地,s4具体包括:
20.s401,从cdn中加载ts文件;
21.s402,解析ts文件名中的时间戳,以此为基准;
22.s403,每播放一段时间把时间戳累加相应的时间;
23.s404,把累加后的时间戳,通过事件抛出。
24.本发明实施例又一方面提供一种音视频和课件同步播放的系统,包括主播终端、服务器和观众终端,主播终端进一步包括音视频采集模块和课件操作端,服务器进一步包括音视频处理服务、视频直播服务和操作指令队列,观众终端进一步包括hls播放器和课件播放器,
25.所述音视频采集模块用于将从摄像头、麦克风中采集到的音视频信号通过webrtc协议推流到音视频处理服务;
26.所述音视频处理服务用于把接收到的webrtc协议的流数据转成rtmp流,并输出到视频直播服务;
27.视频直播服务用于接收rtmp流,把音视频流数据转码成基于hls协议的ts文件,并从rtmp流的sei信息中读取时间戳,ts文件用时间戳命名发布在内容分发网络cdn中;
28.hls播放器用于根据m3u8文件中的ts文件列表播放视频,并通过事件的方式往外部抛出播放的时间戳;
29.课件操作端用于在主播操作课件时收集操作指令,发送给操作指令队列;
30.操作指令队列用于收到指令后,往指令中写入当前时间戳,保存进指令队列;
31.课件播放器用于收到hls播放器抛出的时间戳通知后,从操作指令队列中获取这个时间戳之前的操作指令,根据操作指令顺序模拟操作课件。
32.优选地,所述音视频处理服务用于把接收到的webrtc协议的流数据转成rtmp流,并输出到视频直播服务具体包括:
33.音视频处理服务接收主播终端推送的音视频流;
34.音视频流通过ffmpeg转码成每秒一个gop;
35.对于每个gop,把当前的间时间戳写入sei中;
36.转码完成后的gop通过rtmp协议输出到视频直播服务。
37.优选地,hls播放器用于根据m3u8文件中的ts文件列表播放视频,并通过事件的方式往外部抛出播放的时间戳具体包括:
38.从cdn中加载ts文件;
39.解析ts文件名中的时间戳,以此为基准;
40.每播放一段时间把时间戳累加相应的时间;
41.把累加后的时间戳,通过事件抛出。
42.采用本发明具有如下的有益效果:
43.(1)本方法中观众端是使用cdn来获取基于hls的ts文件的,这个过程中,主要产生的费用是来自cdn的流量,cdn流量性价比是最高的。
44.(2)从终端兼容性来说,hls本身是基于http协议的,http协议在pc\手机等各种终端设备中都兼容。
附图说明
45.图1为本发明实施例的音视频和课件同步播放的方法的示意图。
具体实施方式
46.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
47.参照图1,所示为本发明实施例的音视频和课件同步播放的方法的步骤流程图,
48.s1,主播终端10的音视频采集模块101把从摄像头、麦克风中采集到的音视频信号通过webrtc协议推流到服务器20的音视频处理服务模块201。webrtc即网页即时通信(web real-time communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的api。
49.s2,音视频处理服务模块201把接收到的webrtc协议的流数据转成实时消息传输协议(real time messaging protocol,rtmp)流,并输出到服务器20的视频直播服务模块202;
50.s3,视频直播服务模块202接收到rtmp流,把音视频流数据转码成基于hls协议的ts文件,音视频流数据以rtmp协议传输,从rtmp流的sei信息中读取时间戳,ts文件用时间戳命名发布在内容分发网络(content delivery network,cdn)中;
51.s4,观众终端30的hls播放器301根据m3u8文件中的ts文件列表播放视频,并通过事件的方式往外部抛出播放的时间戳;
52.s5,主播操作课件时,主播终端10的课件操作端102收集操作指令,发送给服务器30的操作指令队列模块303;
53.s6,操作指令队列模块303收到指令后,往指令中写入当前时间戳,保存进指令队列;
54.s7,观众终端的课件播放器收到hls播放器抛出的时间戳通知后,从操作指令队列中获取这个时间戳之前的操作指令,根据操作指令顺序模拟操作课件。
55.在本发明实施例中,s2具体包括:
56.s201,音视频处理服务模块201接收主播终端10推送的音视频流;
57.s202,将音视频流通过ffmpeg转码成每秒一个画面组(group of picturess,gop);
58.s203,对于每个gop,把当前的间时间戳写入sei中;
59.s204,转码完成后的gop通过rtmp协议输出到视频直播服务模块202。
60.在本发明实施例中,优选地,s4具体包括:
61.s401,从cdn中加载ts文件;
62.s402,解析ts文件名中的时间戳,以此为基准;
63.s403,每播放一段时间把时间戳累加相应的时间;
64.s404,把累加后的时间戳,通过事件抛出。
65.具体应用实例中,音视频hls播放器抛出时间戳通知的频率可以控制在每100毫秒
抛出1次,这样就可以把音视频和课件同步播放的误差时间,缩小在100毫秒内。当然,本领域技术人员可以理解的是,抛出时间戳通知的频率可以根据需要进行控制。
66.应当理解,本文所述的示例性实施例是说明性的而非限制性的。尽管结合附图描述了本发明的一个或多个实施例,本领域普通技术人员应当理解,在不脱离通过所附权利要求所限定的本发明的精神和范围的情况下,可以做出各种形式和细节的改变。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1