基于文档类直播交互数据和音视频数据同步方法和系统与流程

文档序号:17430839发布日期:2019-04-17 03:28阅读:179来源:国知局
基于文档类直播交互数据和音视频数据同步方法和系统与流程

本发明涉及直播领域,特别涉及一种基于文档类直播交互数据流和音视频流同步方法和系统。



背景技术:

现在的直播中,有一种类型是基于ppt、pdf等文档类型的直播。这种直播需要采集音视频流,还需要支持对文档操作交互的行为,例如在文档上绘制直线、自由线、矩形、椭圆、文字;以及文档翻页、绘制数据删除、清空等交互行为,这些文档操作的交互行为统一按数据流进行传输。

当前广泛使用的直播是基于rtmp+cdn架构的直播,这种直播的延迟一般是3-5秒,加上cdn网络的抖动,播放端累计延迟可达7-8秒。但是传输的文档操作的交互行为数据流由于采用的是websockets协议,数据量低并且播放端接收的延迟大概在1秒以内。

这样播放端就存在一个如何在直播过程中实现基于文档类直播交互数据和音视频数据同步的问题。



技术实现要素:

本发明的实施方式旨在至少解决现有技术中存在的技术问题之一。为此,本发明的实施方式需要提供一种基于文档类直播交互数据和音视频数据同步方法和系统。

本发明实施方式的一种基于文档类直播交互数据和音视频数据同步方法,其特征在于,包括:

步骤1,接收上传的文档并将文档转换成图片;

步骤2,加载文档对应的图片到应用程序开发框架的窗口显示;

步骤3,通过应用程序开发框架记录直播开始的鼠标点击事件,记录当前时间作为起始时间戳;

步骤4,在直播开始同时将音视频数据发送至cdn网络;

步骤5,通过应用程序开发框架采集用户的文档交互数据,将文档交互数据发送至websockets服务器;其中,所述文档交互数据包括对齐时间戳,该对齐时间戳以起始时间戳为基准的相对时间戳;

步骤6,播放端从cdn网络接收到音视频数据,从websockets服务器接收文档交互数据;播放端根据当前播放音视频的时长和文档交互数据中的对齐时间戳进行对比,确定播放时长大于对齐时间戳时,将文档交互数据绘制到文档播放窗口。

一种实施方式中,步骤3包括:通过应用程序开发框架响应鼠标事件机制记录用户对表示直播开始的界面元素进行点击的鼠标点击事件,记录当前时间作为起始时间戳。

一种实施方式中,文档交互数据包括画笔绘制数据,则步骤5包括:通过应用程序开发框架响应鼠标事件机制和绘制机制记录鼠标动作,调用应用程序开发框架的对应函数完成画笔绘制。

一种实施方式中,文档交互数据包括用户操作数据,则步骤5包括:通过应用程序开发框架响应鼠标事件机制和绘制机制记录包括文档翻页、删除绘制数据和清空绘制数据在内任意一种用户操作。

一种实施方式中,步骤5中包括:

步骤51,通过应用程序开发框架采集用户的文档交互数据;

步骤52,通过http请求将文档交互数据发送发送到websockets服务器,若发送超过预设时间则重发文档交互数据。

本发明还提出一种基于文档类直播交互数据和音视频数据同步系统,其特征在于,包括:采集端和播放端,其中采集端包括接收转换模块、加载模块、记录模块、音视频发送模块和交互发送模块;

接收转换模块,用于接收上传的文档并将文档转换成图片;

加载模块,用于加载文档对应的图片到应用程序开发框架的窗口显示;

记录模块,用于通过应用程序开发框架记录直播开始的鼠标点击事件,记录当前时间作为起始时间戳;

音视频发送模块,用于在直播开始同时将音视频数据发送至cdn网络;

交互发送模块,用于通过应用程序开发框架采集用户的文档交互数据,将文档交互数据发送至websockets服务器;其中,所述文档交互数据包括对齐时间戳,该对齐时间戳以起始时间戳为基准的相对时间戳;

播放端,用于从cdn网络接收到音视频数据,从websockets服务器接收文档交互数据;播放端根据当前播放音视频的时长和文档交互数据中的对齐时间戳进行对比,确定播放时长大于对齐时间戳时,将文档交互数据绘制到文档播放窗口。

一种实施方式中,记录模块具体用于通过应用程序开发框架响应鼠标事件机制记录用户对表示直播开始的界面元素进行点击的鼠标点击事件,记录当前时间作为起始时间戳。

一种实施方式中,文档交互数据包括画笔绘制数据,则交互发送模块具体用于通过应用程序开发框架响应鼠标事件机制和绘制机制记录鼠标动作,调用应用程序开发框架的对应函数完成画笔绘制。

一种实施方式中,文档交互数据包括用户操作数据,则交互发送模块具体用于通过应用程序开发框架响应鼠标事件机制和绘制机制记录包括文档翻页、删除绘制数据和清空绘制数据在内任意一种用户操作。

一种实施方式中,交互发送模块包括:

交互采集单元,用于通过应用程序开发框架采集用户的文档交互数据;

交互发送单元,用于通过http请求将文档交互数据发送发送到websockets服务器,若发送超过预设时间则重发文档交互数据。

本发明实施方式的基于文档类直播交互数据和音视频数据同步方法和系统,通过在文档类直播交互数据中加入对齐时间戳,然后在播放端依据当前播放音视频的时长和交互数据中的对齐时间戳进行对比来达到交互数据和音视频数据同步的效果。

本发明的附加方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明的实施方式的上述和/或附加的方面和优点从结合下面附图对实施方式的描述中将变得明显和容易理解,其中:

图1是本发明实施方式的基于文档类直播交互数据和音视频数据同步方法的流程示意图;

图2是本发明实施方式的基于文档类直播交互数据和音视频数据同步系统的组成示意图;

图3是本发明实施方式的文档交互数据的示意图。

具体实施方式

下面详细描述本发明的实施方式,实施方式的示例在附图中示出,其中相同或类似的标号自始至终表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅可用于解释本发明的实施方式,而不能理解为对本发明的实施方式的限制。

本发明中,分为采集端和播放端。

请参阅图1,本发明实施方式的基于文档类直播交互数据和音视频数据同步方法,包括:

步骤1,接收上传的文档并将文档转换成图片。

步骤2,加载文档对应的图片到qt应用程序开发框架的窗口显示。

步骤3,通过qt应用程序开发框架记录直播开始的鼠标点击事件,记录当前时间作为起始时间戳。

步骤4,在直播开始同时将音视频数据发送至cdn网络。

步骤5,通过qt应用程序开发框架采集用户的文档交互数据,将文档交互数据发送至websockets服务器;其中,所述文档交互数据包括对齐时间戳,该对齐时间戳以起始时间戳为基准的相对时间戳。

步骤6,播放端从cdn网络接收到音视频数据,从websockets服务器接收文档交互数据;播放端根据当前播放音视频的时长和文档交互数据中的对齐时间戳进行对比,确定播放时长大于对齐时间戳时,将文档交互数据绘制到文档播放窗口。

本发明还同时提出一种基于文档类直播交互数据和音视频数据同步系统,包括:采集端和播放端,其中采集端包括接收转换模块、加载模块、记录模块、音视频发送模块和交互发送模块;各个模块介绍如下:

接收转换模块,用于接收上传的文档并将文档转换成图片。

加载模块,用于加载文档对应的图片到qt应用程序开发框架的窗口显示。

记录模块,用于通过qt应用程序开发框架记录直播开始的鼠标点击事件,记录当前时间作为起始时间戳。

音视频发送模块,用于在直播开始同时将音视频数据发送至cdn网络。

交互发送模块,用于通过qt应用程序开发框架采集用户的文档交互数据,将文档交互数据发送至websockets服务器;其中,所述文档交互数据包括对齐时间戳,该对齐时间戳以起始时间戳为基准的相对时间戳。

播放端,用于从cdn网络接收到音视频数据,从websockets服务器接收文档交互数据;播放端根据当前播放音视频的时长和文档交互数据中的对齐时间戳进行对比,确定播放时长大于对齐时间戳时,将文档交互数据绘制到文档播放窗口。

在该实施方式中,基于文档类直播交互数据和音视频数据同步方法以基于文档类直播交互数据和音视频数据同步系统作为步骤的执行对象,或者以系统内的各个模块作为步骤的执行对象。具体地,步骤1以接收转换模块作为步骤的执行对象,步骤2以加载模块作为步骤的执行对象,步骤3以记录模块作为步骤的执行对象,步骤4以音视频发送模块作为步骤的执行对象,步骤5以交互发送模块作为步骤的执行对象,步骤6以播放端作为步骤的执行对象。

在步骤1,接收转换模块的实现方式之一可以是一台文档解析服务器,即文档解析服务器接收上传的文档,然后将文档文件的每一页转换成对应jpeg图片格式数据,解析后图片格式数据加载到本地,数据格式如下:

fileid:文档文件md5唯一性标示

title:文件名

stutus:文档解析状态码;其中0表示成功,非0表示失败

msg:文档解析返回信息

channelid:当前频道号

smallimage:预览图片下载地址数组

autoid:文档文件服务器存储序号索引

images:渲染图下载地址数组

filename:当前文件名

totalpage:文档总页数

fileurl:文档服务器存储地址

在步骤2中,点击加载当前文档页面图像对应jpeg图像数据到qt界面窗口显示。

常见的应用程序开发框架主要有mfc,.netframework,qt,cocoa等,各种开发框架的介绍如下:

mfc:(microsoftfoundationclasses)是微软基础类库的简称,是微软公司实现的一个c++类库,主要封装了大部分的windowsapi函数.用于windws系统应用程序开发框架。

qt:是一个1991年由qtcompany开发的跨平台c++图形用户界面应用程序开发框架。针对桌面、嵌入式、移动设备的一个跨平台的应用程序开发框架,支持的平台包括linux、osx、windows、vxworks、qnx、android、ios、blackberry(黑莓)、sailfishos(旗鱼操作系统)等。qt既可以开发gui程序,也可用于开发非gui程序,因此框架本身和应用程序/库使用它能被任何符合标准c++的编译器(像clang、gcc、icc、mingw和msvc)所编译。其具有良好的跨平台特性,良好封装机制使得qt的模块化程度非常高,可重用性较好,具有丰富的api,支持2d/3d图形渲染,支持opengl。

.net:.netframework由名为commonlanguageruntime(clr)的运行时环境和大量程序库组成的,这些程序库由核心库和应用库组成,应用库依赖于核心库,主要应用windows系统开发。

cocoa:是苹果公司为macosx所创建的原生面向对象的api,苹果的面向对象开发框架,用来生成macosx的应用程序。

本发明实施方式中,使用的是基于qt的应用程序开发框架,当然也可以采用其他的应用程序开发框架,在此不做限制。

在步骤3中,具体包括:记录模块通过qt应用程序开发框架响应鼠标事件机制记录用户对表示直播开始的界面元素进行点击的鼠标点击事件,记录当前时间作为起始时间戳。其中表示直播开始的界面元素可以是“上课”按钮,当该按钮被鼠标点击后则发出一个start消息,视为直播开始。时间戳的单位为毫秒ms。

start消息的数据格式的一个参考示例如下:

字段event:表示事件名(onclassstart)

字段roomid:表示频道号

字段sessionid:表示36进制场次id唯一性标识

字段data中autoid:表示文档文件服务器存储序号索引

字段data中pageid:表示当前文档页索引号

在步骤4中,音视频发送模块实现音频采集是通过音频设备接口将各个设备采集的音频打入起始时间戳,然后通过音频编码器(例如aac音频编码器)编码;类似地,音视频发送模块实现视频采集是通过视频设备接口采集视频设备的数据,然后打入起始时间戳,再将采集的数据输入视频编码器(例如h264视频编码器)编码。然后音视频发送模块将编码后的音视频数据封装成rtmp协议发送到cdn网络进行数据分发。

在步骤5中,文档交互数据带的对齐时间戳是一个以起始时间戳为基准的相对时间戳,而起始时间戳是一个绝对时间戳。交互发送模块采集的文档交互数据包括画笔绘制数据和用户操作数据。

如图3所示,图3是本发明实施方式的文档交互数据的示意图。通常文档包括第1至n页,文档交互数据的类型包括但不限于:直线数据、自由线数据、矩形数据、椭圆数据、文字数据、删除操作数据、清空操作数据等。

在文档交互数据包括画笔绘制数据的情况下,则步骤5包括:交互发送模块通过qt应用程序开发框架响应鼠标事件机制和绘制机制记录鼠标动作,调用qt应用程序开发框架的对应函数完成画笔绘制。

在画笔绘制完成时,打入一个对齐时间戳,数据格式的一个参加示例如下:

字段event:表示事件名(onslicedraw)

字段data中id:表示绘制数据序号

字段data中autoid:表示文档文件服务器存储序号索引

字段data中clientheight:表示绘制画板高度

字段data中clientwidth:表示绘制画板宽度

字段data中color:表示颜色

字段data中content:表示文字内容

字段data中font:表示字体类型

字段data中points:表示绘制数据坐标数组

字段data中pointscount:表示绘制数据坐标数目

字段data中size:表示绘制数据像素宽度

字段data中timestamp:表示对齐时间戳(以start消息为基准的相对时间戳)

字段data中type:表示绘制数据类型,例如line(直线/画笔)、circ(圆)、rect(矩形)、text(文本)

其中,调用qt应用程序开发框架的对应函数完成画笔绘制的示例分别如下:

a)直线:用户点击选择直线绘制,记录鼠标按下到松开起始和结束坐标点,调用qt应用程序开发框架中的直线轨迹方程函数绘制出直线。

b)矩形:用户点击选择直线绘制,记录鼠标按下到松开起始和结束坐标点,调用qt应用程序开发框架中的矩形轨迹方程函数绘制出矩形。

c)椭圆:用户点击选择直线绘制,记录鼠标按下到松开起始和结束坐标点,调用qt应用程序开发框架中的椭圆轨迹方程函数绘制出椭圆。

d)自由线:用户点击选择自由线绘制,记录鼠标从按下到松开所有的坐标点.调用qt应用程序开发框架中的绘制函数绘制出自由线轨迹。

e)文字绘制:用户点击选择文字绘制,记录鼠标点击坐标点。调用qt应用程序开发框架中的文字函数绘制出文字。

在文档交互数据包括用户操作数据的情况下,则步骤5包括:交互发送模块通过qt应用程序开发框架响应鼠标事件机制和绘制机制记录包括文档翻页、删除绘制数据和清空绘制数据在内任意一种用户操作。在用户操作数据生成时,打入一个对齐时间戳,数据格式的一个参加示例如下:

字段event:表示事件名(onslicecontrol)

字段sessionid:表示36进制场次id唯一性标识

字段data中autoid:表示文档文件服务器存储序号索引

字段data中pageid:表示当前文档页索引号

字段data中timestamp:表示对齐时间戳(以start消息为基准的相对时间戳)

字段data中id:表示绘制数据序号

字段data中iscamclosed:表示摄像头是否开启

字段data中isshareopen:表示共享屏幕是否开启

字段data中type:表示控制类型

用户操作包括:

a)文档翻页:点击按钮切换下一张文档图片

b)删除绘制数据:点击选中某个绘制数据删除

c)清空绘制数据:点击清空按钮,删除所有绘制数据

上述文档交互数据采集完后进入缓冲对列等待发送线程等待发送,如果直接采用websockets发送交互数据,在网络不稳定时会出现丢包比较严重的情况。

进一步地,基于文档类直播交互数据和音视频数据同步方法的步骤5中包括:

步骤51,通过qt应用程序开发框架采集用户的文档交互数据。

步骤52,通过http请求将文档交互数据发送发送到websockets服务器,若发送超过预设时间则重发文档交互数据。

相应地,基于文档类直播交互数据和音视频数据同步系统的交互发送模块包括:

交互采集单元,用于通过qt应用程序开发框架采集用户的文档交互数据。

交互发送单元,用于通过http请求将文档交互数据发送发送到websockets服务器,若发送超过预设时间则重发文档交互数据。

即步骤51和步骤52可以由交互发送模块作为步骤的执行者,也可以由模块内的单元作为步骤的执行者。具体地,步骤51可以由交互采集单元作为步骤的执行者,步骤52可以由交互发送单元作为步骤的执行者。

即在交互采集单元通过qt应用程序开发框架采集用户的文档交互数据完后,由交互发送单元通过http请求将数据发送发送到websockets服务器,如果请求超时,再次重发文档交互数据,然后服务器广播消息到播放端,以此保证改善数据发送效果。

在步骤6中,播放端从cdn网络接收到音视频数据,从websockets服务器接收文档交互数据;播放端的flash播放器会根据当前播放音视频的时长和文档交互数据中的对齐时间戳进行对比,播放音视频的时长以秒为单位,而时间戳是以毫秒为单位,由于播放音视频时采用的起始时间戳是一个绝对时间戳,在确定播放时长大于对齐时间戳时,将文档交互数据绘制到文档播放窗口,从而达到数据流与音视频流同步的效果。

综上所述,本发明通过在文档类直播交互数据中加入时间戳,然后在播放端依据当前播放音视频的时长和交互数据中的时间戳进行对比来达到交互数据和音视频数据同步的效果。

下文的公开提供了许多不同的实施方式或例子用来实现本发明的实施方式的不同结构。为了简化本发明的实施方式的公开,下文中对特定例子的部件和设置进行描述。当然,它们仅仅为示例,并且目的不在于限制本发明。此外,本发明的实施方式可以在不同例子中重复参考数字和/或参考字母,这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施方式和/或设置之间的关系。此外,本发明的实施方式提供了的各种特定的工艺和材料的例子,但是本领域普通技术人员可以意识到其他工艺的应用和/或其他材料的使用。

在本说明书的描述中,参考术语“一个实施方式”、“一些实施方式”、“示意性实施方式”、“示例”、“具体示例”或“一些示例”等的描述意指结合所述实施方式或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理模块的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的实施方式的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明的各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

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