CN112995698A - 一种视频播放方法、客户端、服务平台及智能会议系统 - Google Patents

一种视频播放方法、客户端、服务平台及智能会议系统 Download PDF

Info

Publication number
CN112995698A
CN112995698A CN202110542772.8A CN202110542772A CN112995698A CN 112995698 A CN112995698 A CN 112995698A CN 202110542772 A CN202110542772 A CN 202110542772A CN 112995698 A CN112995698 A CN 112995698A
Authority
CN
China
Prior art keywords
media data
playing
module
recorded
live
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110542772.8A
Other languages
English (en)
Inventor
孟赟
杨涛
俞鸣园
曹亚曦
王克彦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Huachuang Video Signal Technology Co Ltd
Original Assignee
Zhejiang Huachuang Video Signal Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang Huachuang Video Signal Technology Co Ltd filed Critical Zhejiang Huachuang Video Signal Technology Co Ltd
Priority to CN202110542772.8A priority Critical patent/CN112995698A/zh
Publication of CN112995698A publication Critical patent/CN112995698A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2187Live feed
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/858Linking data to content, e.g. by linking an URL to a video object, by creating a hotspot

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本公开披露一种视频播放方法、客户端、服务平台及智能会议系统,该方法包括:获取播放请求,根据播放请求获取直播/录播媒体数据,根据私有格式的帧头信息解析媒体数据,并判断直播/录播媒体数据的分辨率或帧率是否发生变化,对未发生变化的直播/录播媒体数据进行解封装后,重新封装为支持浏览器无插件播放的第一直播/录播媒体数据;对发生变化的媒体数据进行解封装,重置封装模块后,将其重新封装为支持浏览器无插件播放的第二直播/录播媒体数据;解码播放第一直播/录播媒体数据,重置解码播放模块后解码播放第二直播/录播媒体数据。因此,实施本公开能支持浏览器无插件播放帧率/分辨率动态变化的视频。

Description

一种视频播放方法、客户端、服务平台及智能会议系统
技术领域
本公开涉及浏览器视频播放技术,尤其涉及一种视频播放方法、客户端、服务平台及智能会议系统。
背景技术
目前,Web视频播放技术主要基于浏览器插件播放视频和基于HTML5播放视频。采用浏览器插件播放视频时,不同操作系统的存在兼容性问题,同时浏览器插件拥有对设备本地数据操作的权限,这将给用户设备带来安全性问题。基于这一现状,越来越多的浏览器已不支持或者严格限制插件。与此同时Adobe Flash插件也在2020年底停止了更新。这意味着,无插件Web播放视频的需求越来越迫切。
实际上,Web上的视频直到现在,仍然不存在一项旨在网页上显示视频的标准,大多数网页显示视频是通过插件如Flash来显示的。然而,并非所有浏览器都拥有同样的插件。例如,HTML5规定了一种通过video元素来包含视频的标准方法,该元素目前支持三种视频格式Ogg、MPEG4、WebM。随着视频点播、直播等视频业务的发展,视频通过流媒体传输协议(目前常用的有两种,即MPEG-DASH和Apple公司的HLS)从服务器端分发给客户端,媒体内容进一步包含在一层传输协议中,这样video元素就无法识别了。一种方法是,引入了媒体源扩展(MSE,Media Source Extensions)技术,来帮助浏览器识别并处理其他视频格式。MSE是Chrome、Safari、Edge等主流浏览器支持的一个新的Web API。MSE是一个万维网联盟(W3C)标准,允许JavaScript动态构建<video>和<audio>的媒体流。它定义了对象,允许JavaScript传输媒体流片段到一个HTMLMediaElement。通过使用MSE,可以动态地修改媒体流而不需要任何插件。这让前端JavaScript可以做更多的事情,在JavaScript进行转封装、处理,甚至转码。另外一种方法是,HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像。其中,画布是一个矩形区域,可以控制其每一像素。canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。
然而,在视频会议场景中,由于不同的会场终端的硬件和软件条件各有不同,不同的硬件性能和不同的软件网络资源等决定了不同的会场将上传编码参数不同的码流,包括不同的分辨率、帧率、码率等。主席会场在发送演示时,一般演示的码流与主码流的编码参数也会有所不同,通常演示的码流在帧率上要求相对较低。一个完整的会议码流将包括动态变化的编码参数,不同的会场上传的码流一般会通过带宽等资源自适应分辨率、帧率、码率等编码参数。
按照现有的技术,若要直播或录播一个完整的会议,均需在服务端重新编码成某个固定分辨率帧率的码流,需要消耗大量编解码资源,增加延时,以及重编码引入的画质损失问题。部分观看直播或录播用户因其网络带宽是可靠的,更期望看到原汁原味的图像效果,而与此同时,平台方希望尽可能节约编码资源,因此,如何实现支持帧率、分辨率动态变化的直播、录播,是未来发展的方向之一,也是行业亟待解决的难题之一。
发明内容
有鉴于此,本公开实施例提供一种视频播放方法、客户端、服务平台及智能会议系统,能够支持浏览器无插件自适应播放帧率和/或分辨率动态变化的视频源,以至少解决现有技术中存在的以上技术问题。
根据本公开的第一方面,披露一种浏览器无插件播放视频的方法,该方法包括:
获取播放请求;根据所述播放请求,获取媒体数据;
根据私有格式的帧头信息解析所述媒体数据,并判断所述媒体数据的分辨率或帧率是否发生变化,将未发生变化的媒体数据进行解封装后,重新封装为支持浏览器无插件播放的第一媒体数据;对发生变化的媒体数据进行解封装,重置封装模块后,将其重新封装为支持浏览器无插件播放的第二媒体数据;
解码播放第一媒体数据,重置解码播放模块后解码播放第二媒体数据。
作为本公开的一种实施方式,所述播放请求请求播放直播媒体数据时,根据所述播放请求获取并访问所请求的直播媒体数据的直播地址,实时接收流式封装的直播媒体数据,根据私有格式的帧头信息解析所述直播媒体数据,并判断所述直播媒体数据的分辨率或帧率是否发生变化;
对分辨率或帧率未发生变化的直播媒体数据进行解封装后,重新封装为支持浏览器无插件播放的第一直播媒体数据;对分辨率或帧率发生变化的直播媒体数据进行解封装,重置封装模块后,将其重新封装为支持浏览器无插件播放的第二直播媒体数据;
解码播放所述第一直播媒体数据,重置解码播放模块后解码播放所述第二直播媒体数据。
作为本公开的一种实施方式,所述重新封装为支持浏览器无插件播放的第一直播媒体数据进一步包括:
判断缓冲区的直播媒体数据是否达到预设封装时长,若达到则将所述直播媒体数据解封装为原始音频数据和原始视频数据;将所述原始音频数据和所述原始视频数据重新封装为所述第一直播媒体数据;
若未达到预设封装时长,则将所述直播媒体数据暂存至所述缓冲区,并返回接收所述直播媒体数据。
作为本公开的一种实施方式,所述重置封装模块后,将其重新封装为支持浏览器无插件播放的第二直播媒体数据进一步包括:
当识别到所述分辨率或帧率发生变化时,记录所述直播媒体数据的分辨率或帧率发生变化,并将分辨率或帧率发生变化前缓冲区中的直播媒体数据解封装为原始音视频数据,并将其重新封装为所述第一直播媒体数据,通知所述解码播放模块有所述第一直播媒体数据可追加;
判断是否有分辨率或帧率发生变化的记录,若有,则对所述封装模块进行反初始化和再初始化以实现重置,并生成重置消息通知所述解码播放模块下一段追加的直播媒体数据的分辨率或帧率发生了变化;
判断缓冲区的直播媒体数据是否达到预设封装时长,若达到则将所述直播媒体数据解封装为原始音频数据和原始视频数据;将所述原始音频数据和所述原始视频数据重新封装为所述第二直播媒体数据,并通知所述解码播放模块有所述第二直播媒体数据可追加;
若未达到预设封装时长,则将所述直播媒体数据暂存至所述缓冲区,并返回接收所述直播媒体数据。
作为本公开的一种实施方式,所述解码播放所述第一直播媒体数据,重置解码播放模块后解码播放所述第二直播媒体数据,进一步包括:
逐条读取消息队列中的消息,判断所读取的消息是否为重置消息,若不是所述重置消息,判断所述消息中是否有支持浏览器无插件播放格式的第一或第二直播媒体数据可追加到所述解码播放模块的缓冲区,若没有可追加的,则返回判断所述消息队列中是否还有消息;若有可以追加,则追加完成后触发更新完成事件,并启动定时器,监测所述缓冲区的播放进度并在所述播放进度达到预设阈值时,停止所述计时器,并返回判断所述消息队列中是否还有消息;
在读取到所述重置消息时,所述重置消息之后追加的媒体数据的分辨率或帧率发生变化,重置所述解码播放模块,并返回判断所述消息队列中是否还有消息;
若所述消息队列中已没有消息,则返回获取所述直播媒体数据。
作为本公开的一种实施方式,上述方法还可包括:
所述播放请求请求播放录播媒体数据时,根据所述播放请求得到所请求的录播媒体数据下载地址和索引文件,进而获取录播媒体数据并进行解析;
若剩余片段解析过程中录播媒体数据的分辨率或帧率发生变化,则记录所述录播媒体数据的分辨率或帧率发生变化,并将所述分辨率或帧率发生变化前的媒体数据解封装为原始音视频数据,并将其重新封装为所述第一录播媒体数据,通知所述解码播放模块有第一录播媒体数据可追加;
若所述分辨率或帧率未发生变化,则判断是否有所述分辨率或帧率发生变化的记录,若无,则将剩余片段的录播媒体数据解封装为原始音视频数据,重新封装为支持浏览器无插件播放的第一录播媒体数据,并通知所述解码播放模块有所述第一录播媒体数据可追加;若所述分辨率或帧率发生变化的记录,则重置封装模块,并将发送重置消息通知所述解码播放模块下一段追加的录播媒体数据的分辨率或帧率发生变化,然后将剩余片段的录播媒体数据解封装为原始音视频数据,重新封装为支持浏览器无插件播放的第二录播媒体数据,并通知所述解码播放模块有所述第二录播媒体数据可追加;
检查当前分片是否有剩余的媒体数据,并在当前分片还有剩余的媒体数据时,返回继续解析剩余的录播媒体数据;解码播放所述第一录播媒体数据,重置所述解码播放模块后解码播放所述第二录播媒体数据。
作为本公开的一种实施方式,所述获取录播媒体数据并进行解析进一步包括:根据播放下一个分片和/或跳转请求,分析所述索引文件,确定请求播放的媒体数据在所述索引文件中的起始位置,检测录播媒体数据是否下载完成,若未下载完成,则根据所述索引文件,分片下载录播媒体数据;根据封装的私有格式帧头信息,逐帧解析所述录播媒体数据;
作为本公开的一种实施方式,所述解码播放所述第一录播媒体数据,重置所述解码播放模块后解码播放所述第二录播媒体数据进一步包括:逐条读取消息队列中的消息,判断所读取的消息是否为重置消息,若不是所述重置消息,判断所述消息中是否有支持Web无插件播放格式的第一或第二录播媒体数据可追加到所述缓冲区,若没有可追加的,则返回判断所述消息队列中是否还有消息;若有可以追加,则追加完成后触发更新完成事件,并启动定时器,监测所述缓冲区的播放进度并在所述播放进度达到预设阈值时,停止所述计时器,并返回判断所述消息队列中是否还有消息;
在读取到所述重置消息时,所述重置消息之后追加的媒体数据的分辨率或帧率发生变化,重置所述解码播放模块,并返回判断所述消息队列中是否还有消息;
若所述消息队列中已没有消息,则返回获取所述录播媒体数据。
根据本公开的第二方面,相应地还披露一种媒体数据服务平台,该媒体数据服务平台包括媒体服务器,该媒体服务器进一步包括:鉴权模块、封装模块和发送模块,其中:所述鉴权模块用于对客户端及其播放请求进行鉴权;所述封装模块用于将音视频数据封装成私有格式的媒体数据以及生成索引文件,其中,每帧所述媒体数据的私有格式帧头包含帧长度、帧类型、分辨率、帧率;所述索引文件记录有媒体数据中每个关键帧的起始时间和相对文件偏移量,用于实现基于关键帧间隔的全文件精确跳转播放控制操作;所述发送模块用于将封装后的实时媒体数据发送至所述客户端和/或存储服务器。
作为一种可选的实现方式,上述媒体数据服务平台还包括:存储服务器,该存储服务器进一步包括媒体存储模块、媒体发送模块,其中:所述媒体存储模块用于接收并存储来所述索引文件和录播数据通过网络文件系统NFS协议存储媒体数据;所述媒体发送模块用于将媒体数据发送给客户端;所述转码模块用于根据所述客户端的请求参数将所述媒体数据码流的分辨率、帧率进行自适应转换。
作为一种可选的实现方式,所述媒体服务器和/或所述存储服务器还包括:转码模块,所述转码模块用于根据客户端请求参数将媒体数据码流的分辨率、帧率进行自适应转换。
根据本公开的第三方面,相应地还披露一种浏览器无插件播放视频的客户端,该客户端包括:
用户交互模块,用于获取用户信息和播放请求;
播放控制模块,用于获取用户对媒体数据的播放控制指令信息,包括播放、停止、调整音量、调整播放进度;
显示模块,用于渲染视频和显示视频播放控制相关的界面;
数据获取模块,用于获取直播/录播媒体数据;
解析模块,用于根据私有格式的帧头信息解析所述直播/录播媒体数据,并判断所述直播/录播媒体数据的分辨率或帧率是否发生变化;
解封装模块,用于对所述直播/录播媒体数据进行解封装,得到原始音频、视频数据;
封装模块,用于将分辨率或帧率未发生变化的原始音频、视频数据重新封装为支持浏览器无插件播放的第一直播/录播媒体数据;以及所述封装模块重置后,用于将分辨率或帧率发生变化的原始音频、视频数据重新封装为支持浏览器无插件播放的第二直播/录播媒体数据;
解码播放模块,用于解码播放所述第一直播/录播媒体数据;以及,所述解码播放模块重置后,用于解码播放所述第二直播/录播媒体数据。
此外,本公开还披露一种智能会议系统,该系统包括以下组成:
至少一个处理器;以及
与至少一个处理器通信连接的存储器;
其中,存储器存储有可被至少一个处理器执行的计算机程序,计算机程序被至少一个处理器执行,以使至少一个处理器执行前述任一实施方案披露的浏览器无插件播放视频的方法。
与现有技术相比,本公开披露的技术方案具有以下有益的技术效果:
通过实施本公开的技术方案,通过客户端本地动态检测及解析视频中帧率和分辨率的变化,实现正常播放帧率和/或分辨率动态变化的视频源。通过本地动态检测变化,不需要通过信令层面通知,耦合性低,尤其消除了如帧率变化导致的MSE播放停止等异常问题。
另外,本公开实施例中视频源采用私有格式封装及流式存储,对于原始的音视频资源不要求分辨率/帧率一致,从而可节省为了对齐分辨率/帧率重编码的消耗,并可以避免因为重编码引入的画质损失、增加延迟问题。
需要理解的是,本公开的教导并不需要实现上面所述的全部有益效果,而是特定的技术方案可以实现特定的技术效果,并且本公开的其他实施方式还能够实现上面未提到的有益效果。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,其中:
在附图中,相同或对应的标号表示相同或对应的部分。
图1为本公开实施例的视频播放方法流程示意图;
图2a为本公开实施例的无插件播放直播视频的方法流程示意图一;
图2b为本公开实施例的无插件播放直播视频的方法流程示意图二;
图3a为本公开实施例的无插件播放录播视频的方法流程示意图一;
图3b为本公开实施例的无插件播放录播视频的方法流程示意图二;
图4为本公开实施例的媒体数据服务平台组成示意图;以及
图5为本公开实施例的浏览器无插件播放视频的客户端组成示意图。
具体实施方式
下面将参考若干示例性实施方式来描述本公开的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
下面结合附图和具体实施例对本公开的技术方案进一步详细阐述。
方法实施例:
参照图1,其为本实施例披露一种视频播放方法示意图,本实施例中,该视频播放方法可实现浏览器无插件播放。
如图其所示,该方法包括以下步骤:
S01:获取播放请求;
S02:根据所述播放请求,获取媒体数据;
S03:根据私有格式的帧头信息解析所述媒体数据;
S04:判断所述媒体数据的分辨率或帧率是否发生变化,若未发生变化,则执行S051:若发生了变化,则执行S061;
S051:将未发生变化的媒体数据进行解封装;
S052:重新封装为支持浏览器无插件播放的第一媒体数据;
S053:解码播放第一媒体数据;
S061:对发生变化的媒体数据进行解封装;
S062:重置封装模块,将解封装发生变化的媒体数据得到的数据重新封装为支持浏览器无插件播放的第二媒体数据;
S063:重置解码播放模块后解码播放第二媒体数据。
需要说明的是,本实施例中,第一媒体数据为当前帧率、分辨率的媒体数据,进一步包括第一直播媒体数据、第一录播媒体数据。第二媒体数据为与当前媒体数据的帧率或分辨率相比,其帧率或分辨率发生变化的媒体数据,进一步包括第二直播媒体数据、第二录播媒体数据。对此,后续实施例会展开说明。
本实施例通过在自定义的私有格式帧头进行流式封装和存储,通过客户端本地动态检测视频中帧率和分辨率的变化,实现Web自适应分辨率帧率,实现支持Web无插件播放帧率和/或分辨率动态变化的视频源。
作为一种可选的实现方式,本实施例披露一种浏览器无插件播放视频的方法,该方法包括以下步骤:
S101:获取播放请求;
本步骤中,上述播放请求可包括播放直播媒体数据请求、播放录播媒体数据请求。
S102:识别播放请求,并在播放请求请求播放直播媒体数据时,根据播放请求获取并访问所请求的直播媒体数据的直播地址;
S103:实时接收流式封装的直播媒体数据;
S104:根据私有格式的帧头信息,对直播媒体数据进行解析;
S105:根据私有格式帧头,判断直播媒体数据的分辨率或帧率是否发生变化,若未发生变化,则执行S106;若变化,则执行S108;
S106:对分辨率或帧率未发生变化的直播媒体数据进行解封装;
S107:将解封装得到的原始音视频数据重新封装,得到支持浏览器无插件播放的第一直播媒体数据;
S108:对分辨率或帧率发生变化的直播媒体数据进行解封装;
S109:重置封装模块后,将解封装得到的原始音视频数据重新封装为支持浏览器无插件播放的第二直播媒体数据;
S110:解码播放第一直播媒体数据;
S111:重置解码播放模块后,解码播放第二直播媒体数据。
本实施例中,采用Webassembly(简称Wasm)技术和MSE技术,通过在自定义帧头进行流式封装和存储,并在Web中通过Wasm解析帧率和分辨率动态变化的视频源,实现了Web自适应分辨率帧率,实现了支持帧率分辨率动态变化的Web无插件播放视频,因此,本实施例能够通过客户端本地动态检测视频中帧率和分辨率的变化,实现正常播放帧率和/或分辨率动态变化的视频源。通过本地动态检测变化,不需要通过信令层面通知,耦合性低,尤其消除了如帧率变化导致的MSE播放停止等异常问题。
另外,实施上述方法时,视频源可采用流式存储的方式,对于原始的音视频资源不要求分辨率/帧率一致,从而可节省为了对齐分辨率/帧率重编码的消耗,并可以避免因为重编码引入的画质损失、增加延迟问题。
在一可选实施例中,第一直播媒体数据和第二直播媒体数据可采用浏览器支持的fMP4格式。可选的是,原始音频数据可采用aac格式,原始视频数据可采用h.264格式。
作为一种可选的实现方式,上述实施例S107中,将解封装得到的原始音视频数据重新封装,得到支持浏览器无插件播放的第一直播媒体数据,进一步包括以下处理过程:
S1071:判断缓冲区的直播媒体数据是否达到预设封装时长,若达到,则执行S1072;若未达到预设封装时长,则执行S1074;
S1072:将直播媒体数据解封装为原始音频数据和原始视频数据;
S1073:将原始音频数据和原始视频数据重新封装为第一直播媒体数据;
S1074:若未达到预设封装时长,则将直播媒体数据暂存至缓冲区,并返回S103接收直播媒体数据。
作为一种可选的实现方式,上述实施例S109中,重置封装模块后,将解封装得到的原始音视频数据重新封装为支持浏览器无插件播放的第二直播媒体数据,进一步包括以下处理过程:
S1091:当识别到分辨率或帧率发生变化时,记录直播媒体数据的分辨率或帧率发生变化;
S1092:将分辨率或帧率发生变化前缓冲区中的直播媒体数据解封装为原始音视频数据,
S1093:将其重新封装为第一直播媒体数据,通知解码播放模块有第一直播媒体数据可追加;
S1094:判断是否有分辨率或帧率发生变化的记录,若有,则执行S1095;若没有分辨率或帧率发生变化的记录,则执行S1096:
S1095:对封装模块进行反初始化和再初始化以实现重置,并生成重置消息通知解码播放模块下一段追加的直播媒体数据的分辨率或帧率发生了变化,然后执行S1096;
S1096:判断缓冲区的直播媒体数据是否达到预设封装时长,若达到,则执行S1097;若未达到预设封装时长,则执行S1098;
S1097:将直播媒体数据解封装为原始音频数据和原始视频数据;将原始音频数据和原始视频数据重新封装为第二直播媒体数据,并通知解码播放模块有第二直播媒体数据可追加;
S1098:将直播媒体数据暂存至缓冲区,并返回接收直播媒体数据。
作为一种可选的实现方式,上述S110-S111:解码播放第一直播媒体数据,重置解码播放模块后解码播放第二直播媒体数据,进一步包括以下处理过程:
逐条读取消息队列中的消息,判断所读取的消息是否为重置消息,若不是重置消息,判断消息中是否有支持浏览器无插件播放格式的第一或第二直播媒体数据可追加到解码播放模块的缓冲区,若没有可追加的,则返回判断消息队列中是否还有消息;若有可以追加,则追加完成后触发更新完成事件,并启动定时器,监测缓冲区的播放进度并在播放进度达到预设阈值时,停止计时器,并返回判断消息队列中是否还有消息;
在读取到重置消息时,重置消息之后追加的媒体数据的分辨率或帧率发生变化,重置解码播放模块,并返回判断消息队列中是否还有消息;
若消息队列中已没有消息,则返回获取直播媒体数据。
作为一种可选的实现方式,上述实施例中,当播放请求请求播放录播媒体数据时,根据播放请求得到所请求的录播媒体数据下载地址和索引文件,进而获取录播媒体数据并进行解析;
若剩余片段解析过程中录播媒体数据的分辨率或帧率发生变化,则记录录播媒体数据的分辨率或帧率发生变化,并将分辨率或帧率发生变化前的媒体数据解封装为原始音视频数据,并将其重新封装为第一录播媒体数据,通知解码播放模块有第一录播媒体数据可追加;
若分辨率或帧率未发生变化,则判断是否有分辨率或帧率发生变化的记录,若无,则将剩余片段的录播媒体数据解封装为原始音视频数据,重新封装为支持浏览器无插件播放的第一录播媒体数据,并通知解码播放模块有第一录播媒体数据可追加;若分辨率或帧率发生变化的记录,则重置封装模块,并将发送重置消息通知解码播放模块下一段追加的录播媒体数据的分辨率或帧率发生变化,然后将剩余片段的录播媒体数据解封装为原始音视频数据,重新封装为支持浏览器无插件播放的第二录播媒体数据,并通知解码播放模块有第二录播媒体数据可追加;
检查当前分片是否有剩余的媒体数据,在当前分片还有剩余的媒体数据时,返回继续解析剩余的录播媒体数据;
解码播放第一录播媒体数据,重置解码播放模块后解码播放第二录播媒体数据。
作为一种可选的实现方式,上述实施例中,获取录播媒体数据并进行解析进一步包括以下处理过程:
根据播放下一个分片和/或跳转请求,分析索引文件,确定请求播放的媒体数据在索引文件中的起始位置,检测录播媒体数据是否下载完成,若未下载完成,则根据索引文件,分片下载录播媒体数据;根据封装的私有格式帧头信息,逐帧解析录播媒体数据。
作为一种可选的实现方式,上述实施例中,解码播放第一录播媒体数据,重置解码播放模块后解码播放第二录播媒体数据进一步包括以下处理过程:
逐条读取消息队列中的消息,判断所读取的消息是否为重置消息,若不是重置消息,判断消息中是否有支持Web无插件播放格式的第一或第二录播媒体数据可追加到缓冲区,若没有可追加的,则返回判断消息队列中是否还有消息;若有可以追加,则追加完成后触发更新完成事件,并启动定时器,监测缓冲区的播放进度并在播放进度达到预设阈值时,停止计时器,并返回判断消息队列中是否还有消息;
在读取到重置消息时,重置消息之后追加的媒体数据的分辨率或帧率发生变化,重置解码播放模块,并返回判断消息队列中是否还有消息;
若消息队列中已没有消息,则返回获取录播媒体数据。
下面结合参照图2a-图2b所示的流程,对上述方法实施例进一步举例说明:
首先,需要说明的是,本实施例中,Web浏览器主要包括UI层、Js层、Wasm层。UI层主要用于渲染视频和显示视频播放控制相关的界面,以及播放视频,停止视频,调整音量,调整视频进度等。Js层主要用于逻辑操作,获取视频数据,以及将浏览器支持的fMP4格式的媒体数据在Js层的MSE模块(解码播放模块)中解码和播放。Wasm层主要是通过Webassembly技术和Emscripten技术实现,通过解析封装媒体数据每一帧的帧头信息,找出媒体流中帧率、分辨率的变化,以及将媒体数据解封装为音频数据和视频数据,并将解封装后的音频数据和视频数据,重新封装为Web浏览器MSE所支持的fMP4格式。
Web浏览器客户端的无插件视频播放方法流程,主要包括以下过程:
场景一:请求播放直播视频
参照图2a、图2b所示:
S1:获取播放请求:用户通过Web浏览器输入用户名和密码,登陆媒体服务器管理平台获取Token;用户进入视频播放页面,请求播放视频。
S2:Web浏览器携带登陆Token向媒体服务器发起观看请求,鉴权通过后获取到视频文件的直播地址(指向是媒体服务器的媒体发送模块对应的Websocket端口)。
S3:根据直播地址,建立Web浏览器与媒体服务器之间的连接,开始传输媒体数据。
S4:实时接收一帧媒体数据;
S5:根据自定义帧头内的I帧分辨率、帧率信息,解析媒体数据;
S6:判断是否有分辨率或帧率发生变化,若是,则执行S14;若分辨率或帧率未发生变化,则执行S7;
S7:判断是否有记录分辨率或帧率发生了变化,若有记录分辨率或帧率发生了变化,则执行S8;若没有记录分辨率或帧率发生了变化,则执行S9;
S8:下一次待封装的数据与上一次的分辨率或帧率有变化,那么,需要重置封装的模块,并且发送消息到MSE模块下一段追加的数据分辨率或帧率发生了变化;
S9:判断缓冲的媒体数据是否达到了指定时长,其中,缓冲用来暂时存储一帧一帧的媒体数据,直到达到指定的可封装时长,例如2秒时长;
S10:若缓冲中的数据未达到指定时长,则将一帧数据暂时存到缓冲中,并且继续回到S4;
S11:若缓冲中的数据达到了指定时长,则将缓冲中的媒体数据解封装为原始音频数据、视频数据。例如:aac格式的音频数据和h.264格式的视频数据。
S12:将音频数据和视频数据重新封装成Web浏览器MSE支持的fMP4格式。
S13:发送消息到MSE模块,有fMP4格式的数据可以追加,返回到S4。
S14:若S6中判断分辨率或帧率发生了变化,则需要记录分辨率或帧率发生了变化。
S15:将发生变化前的缓冲中的媒体数据解封装为原始音频数据、视频数据。
S16:将音频数据和视频数据重新封装成Web浏览器MSE支持的fMP4格式。
S17:发送消息到MSE模块,有fMP4格式的数据可以追加,继续回到S7。
另一个线程中,不断的判断消息队列中是否有消息。
S18:判断消息队列中是否有消息,若有,则判断消息的类型。若队列中没有消息,则回到S4,继续接收播放视频。
S19:MSE模块从消息队列中逐条取出消息,并判断消息的类型。
S20:判断消息是否为下一段追加的数据分辨率或者帧率发生了变化,若是,则执行S21;若否,则执行S22;
S21:重置MSE模块,然后回到S18;
S22:判断消息是否为有fMP4格式的数据可以追加,若否,回到S18继续判断是否有消息;若是,则执行S23;
S23:将fMP4格式的数据不断的追加到MSE的缓冲区,Web浏览器video标签的MSE将解码并播放视频;
S24:当fMP4数据追加完成,将触发更新完成的回调事件;
S25:启动一个定时器;
S26:监测视频播放的当前位置和视频缓冲区长度的差值是否达到预设阈值,例如差值小于2秒,若是,说明检查视频缓冲区将播放完成,那么执行S27,即停止定时器,并返回执行S18,即继续判断是否有消息;若否,则继续监测视频播放的当前位置和视频缓冲区长度的差值。
需要说明的是,媒体服务器收到直播任务时,流式地封装实时音视频数据,并为每帧视频或音频新增一个帧头,包含帧长度、帧类型、分辨率、帧率等信息。媒体服务器实时的发送封装媒体数据到Web浏览器。为提升用户体验,本实施例可根据客户端请求将部分高分辨率、帧率的码流转换成合适的参数的码流。
场景二:请求播放录播视频
参照图3a、图3b所示:
S201:获取播放请求:用户通过Web浏览器输入用户名和密码,登陆媒体服务器管理平台获取Token;用户进入视频播放页面,请求播放视频。
S202:Web浏览器携带登陆Token向媒体服务器发起观看请求,鉴权通过后获取到视频文件的下载地址(指向是存储服务器的媒体发送模块对应的HTTP端口)和索引文件。
S203:根据播放下一个分片、跳转等动作,分析索引文件,确定需要播放的视频在索引中的起始位置。
S204:根据索引文件中I帧的时间和偏移,检查录播文件是否下载完成,若录播下载完了,则执行S205;若索引文件中录播视频未下载完成,则执行S206;
S205:结束流程,直到MSE的缓冲区数据播放完则视频播放完成。
S206:根据索引,按照时间长度分片下载视频,本步骤中分片的长度可以考虑10秒或者20秒左右;
S207:根据自定义帧头内的I帧分辨率、帧率信息,逐帧解析媒体数据;
S208:判断是否有分辨率或帧率发生变化,若剩余片段解析过程中,分辨率或帧率发生变化,则执行S209;若剩余片段解析过程中,分辨率、帧率未发生变化,则执行S211:
S209:记录分辨率或帧率发生了变化;
S210:将变化前的媒体数据通过解封装为原始音频数据、视频数据,例如aac格式的音频数据和h.264格式的视频数据;然后执行S214及后续流程;
S211:判断是否有记录分辨率或帧率发生了变化,若有,则执行S212;若无,则执行S213;
S212:重置封装模块,并将发送该消息到MSE模块;
S213:将剩余片段媒体数据通过解封装为原始音频数据、视频数据;
S214:将音频数据和视频数据重新封装成Web浏览器MSE支持的fMP4格式。
S215:发送消息到MSE模块,有fMP4格式的数据可以追加;
S216:判断该片段媒体数据是否还有剩余,若有剩余,返回执行S207,即继续解析媒体数据。
在另外一个线程中,不断地判断消息队列中是否有消息。
S217:判断消息队列中是否有消息,若消息队列中有消息,则执行S218;若队列中没有消息,则回到S203,继续分析索引播放视频。
S218:MSE模块从消息队列中逐条取出消息,识别消息的类型;
S219:判断消息是否为下一段追加的数据分辨率或者帧率发生了变化,若是,则执行S220;若否,执行S221;
S220:重置MSE模块,回到S217继续判断是否有消息;
S221:判断消息是否为有fMP4格式的数据可以追加,若否,回到S217继续判断是否有消息;若是,则执行S222;
S222:将fMP4格式的数据不断的追加到MSE的缓冲区,Web浏览器video标签的MSE将解码并播放视频。
S223:当fMP4数据追加完成,将触发更新完成的回调事件;
S224:启动一个定时器;
S225:监测视频播放的当前位置和视频缓冲区长度的差值是否达到预设阈值,例如差值小于2秒,若是,说明检查视频缓冲区将播放完成,那么执行S226,即停止定时器,然后返回执行S217,即继续判断是否有消息;若否,则继续监测视频播放的当前位置和视频缓冲区长度的差值。
需要说明的是,为提升用户体验,媒体服务器执行录播任务时,流式地将音频、视频媒体数据封装成私有格式的媒体流,可以将封装后的实时媒体流发送到存储服务器上。存储服务器接收并存储来自媒体服务器的媒体数据,将媒体数据发送给客户端。另外,本实施例中,存储服务器可根据客户端请求将部分高分辨率、帧率的码流转换成合适的参数的码流。
产品实施例:
参照图4所示,为实现上述方法,本实施例披露一种媒体服务器,用于直播场景,该服务器包括以下组成:
鉴权模块,用于对客户端及其播放请求进行鉴权;
封装模块,用于流式地将音视频数据封装成私有格式的媒体数据,每帧媒体数据的私有格式帧头包含帧长度、帧类型、分辨率、帧率等。
发送模块,用于将封装后的实时媒体数据发送客户端。
在一可选实施例中,上述媒体服务器还可包括转码模块,该转码模块用于根据客户端请求参数将媒体数据码流的分辨率、帧率进行自适应转换。
相应地,本实施例还披露一种媒体数据服务平台,如图4所示,该媒体数据服务平台包括:媒体服务器和/或存储服务器;其中:
该媒体服务器进一步包括:鉴权模块、封装模块和发送模块,鉴权模块用于对客户端及其播放请求进行鉴权;封装模块用于将音视频数据封装成私有格式的媒体数据以及生成索引文件,其中,每帧媒体数据的私有格式帧头包含帧长度、帧类型、分辨率、帧率等。索引文件记录有媒体数据中每个关键帧的起始时间和相对文件偏移量,用于实现基于关键帧间隔的全文件精确跳转播放控制操作;发送模块用于将封装后的实时媒体数据发送至存储服务器;
该存储服务器进一步包括媒体存储模块、媒体发送模块,媒体存储模块用于接收并存储来索引文件和录播数据包括但不限于通过网络文件系统NFS协议存储媒体数据;媒体发送模块用于将媒体数据发送给客户端。
上述实施例中,存储服务器还可包括:转码模块,该转码模块用于根据客户端的请求参数将媒体数据码流的分辨率、帧率进行自适应转换。
上述实施例中,媒体服务器还可包括:转码模块,该转码模块用于根据客户端请求参数将媒体数据码流的分辨率、帧率进行自适应转换。
需要说明的是,录播和直播场景,媒体数据服务平台都可以仅采用媒体服务器,可选的方案是,在请求播放录播场景时,可以选用存储服务器。采用独立的存储服务器,能够在大并发情况下,流量较大时,提供所需独立的节点。或者,公有云环境下,利用存储服务器的存储服务,可以获得较低的带宽资费。
此外,在私有化部署等情况下,可以简化,直接由媒体服务器以文件或裸设备形态存储到本地磁盘当中,并由媒体服务器承担提供录播读取的业务。
相应地,为实现上述方法,本实施例披露一种浏览器无插件播放视频的客户端,参照图5所示,该客户端包括以下组成:
用户交互模块,用于获取用户信息和播放请求;
播放控制模块,用于获取用户对媒体数据的播放控制指令信息,包括播放、停止、调整音量、调整播放进度;
显示模块,用于渲染视频和显示视频播放控制相关的界面;
数据获取模块,用于获取直播/录播媒体数据;
解析模块,用于根据私有格式的帧头信息解析直播/录播媒体数据,并判断直播/录播媒体数据的分辨率或帧率是否发生变化;
解封装模块,用于对直播/录播媒体数据进行解封装,得到原始音频、视频数据;
封装模块,用于将分辨率或帧率未发生变化的原始音频、视频数据重新封装为支持浏览器无插件播放的第一直播/录播媒体数据;以及封装模块重置后,用于将分辨率或帧率发生变化的原始音频、视频数据重新封装为支持浏览器无插件播放的第二直播/录播媒体数据;
解码播放模块,用于解码播放第一直播/录播媒体数据;以及,解码播放模块重置后,用于解码播放第二直播/录播媒体数据。
作为一种可选的实现方式,上述浏览器无插件播放视频的客户端中,第一直播/录播媒体数据和第二直播/录播媒体数据采用浏览器支持的fMP4格式。
作为一种可选的实现方式,上述浏览器无插件播放视频的客户端中,原始音频数据可采用aac格式;原始视频数据可采用h.264格式。需要指出的是,原始音视频数据的格式,可根据不同浏览器支持的格式具体设置。
下面结合下述可选实施例,对上述各实施例做进一步举例说明:
本实施例中,披露一种基于Webassembly的支持帧率分辨率动态变化的Web无插件播放视频的系统,包括媒体服务器、存储服务器和Web浏览器,适用于实时流录播的场景。其中:
1)媒体服务器主要包括:
鉴权模块,用于对客户端登陆及其播放请求进行鉴权;
录播封装模块,用于流式地将音频、视频媒体数据封装成私有格式的媒体流;
录播发送模块,负责将封装后的实时媒体流发送到存储服务器上。
2)存储服务器主要包括:
媒体存储模块,用于接收并存储来自媒体服务器的媒体数据;
媒体发送模块,用于将媒体数据发送给客户端。
可选的是,本实施例可根据客户端请求将部分高分辨率、帧率的码流转换成合适的参数的码流,也就说,如果用户有网络自适应的需求,可以加装一个转码模块,将部分高分辨率、帧率的码流转换成合适的参数的码流,客户端根据情况按需请求,可用于录播场景。
本实施例中,媒体服务器将需要录播的实时视频流式封装,并生成索引文件。需要为每帧视频或音频新增一个帧头,包含帧长度、帧类型、分辨率、帧率等信息。索引文件记录了视频中每个I帧的起始时间和相对的文件偏移量,这种方式可以实现基于I帧间隔的全文件精确的跳转播放控制操作。
媒体服务器将索引文件和录播数据通过包括但不限于网络文件系统(NFS)协议存储到存储服务器。独立的存储服务器是考虑在大并发情况下,流量较大,需要独立的节点;或公有云环境下,利用现有的存储服务,可以获得较低的带宽资费;在私有化部署等情况下可以简化,直接由媒体服务器以文件或裸设备形态存储到本地磁盘当中,并由媒体服务器承担提供录播读取的业务。
3)Web浏览器客户端主要包括UI层、Js层、Wasm层。其中:
UI层主要包括:用户交互模块,用于获取用户信息和播放请求;显示模块,即用于渲染视频和显示视频播放控制相关的界面;播放控制模块,即用于播放视频,停止视频,调整音量,调整视频进度等。
Js层主要用于逻辑操作,主要包括数据获取模块,即用于从服务器获取索引,以及根据索引分片下载录播;解码播放模块,即用于将浏览器支持的fMP4格式的媒体数据在MSE中解码和播放。
Wasm层主要是通过Webassembly技术和Emscripten技术实现。2019年W3C宣布了Webassembly正式成为继HTML、CSS和JavaScript之后,第四个在浏览器中可原生运行的语言。WebAssembly 作为一种新的二进制格式,它可以方便地将 C/C++/Rust 等其他静态语言代码快速的“运行”在浏览器中,这一特性为前端密集计算场景提供了无限的可能。Emscripten是WebAssembly的完整的开源编译器工具链,使用LLVM,特别关注速度、大小和Web平台,可以把C/C++/Rust或任何其他使用LLVM的语言编译成wasm。wasm是基于堆栈的虚拟机的二进制指令格式,由于wasm采用二进制编码,在程序执行过程中的性能优越,且相对于文本格式,二进制编码的格式占用的存储空间更小。
Wasm层主要包括解析模块,即通过解析封装媒体数据每一帧的帧头信息,找出媒体流中帧率、分辨率的变化。解封装模块,即用于将媒体数据解封装为音频数据和视频数据,例如aac格式的音频数据和h.264格式的视频数据。封装模块,即用于将解封装后的音频数据和视频数据,重新封装为Web浏览器MSE所支持的fMP4格式。
在另一可选实施例中,针对直播场景,上述系统可主要包括媒体服务器和Web浏览器客户端。媒体服务器收到直播任务时,流式的封装实时音视频数据,并为每帧视频或音频新增一个帧头,包含帧长度、帧类型、分辨率、帧率等信息。媒体服务器实时的发送封装媒体数据到Web浏览器。与上一个实施例相比,本实施例中的Web浏览器及其模块是相同的。不同之处在于不需要存储服务器。
此外,本公开还披露一种智能会议系统,该系统包括以下组成:
至少一个处理器;以及
与至少一个处理器通信连接的存储器;
其中,存储器存储有可被至少一个处理器执行的计算机程序,计算机程序被至少一个处理器执行,以使至少一个处理器执行前述任一实施例披露的浏览器无插件播放视频的方法。
这里需要指出的是:以上实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果,因此不做赘述。对于本公开实施例中未披露的技术细节,请参照本公开方法实施例的描述而理解,为节约篇幅,因此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。

Claims (10)

1.一种视频播放方法,其特征在于,包括:
获取播放请求;根据所述播放请求,获取媒体数据;
根据私有格式的帧头信息解析所述媒体数据,并判断所述媒体数据的分辨率或帧率是否发生变化,将未发生变化的媒体数据进行解封装后,重新封装为支持浏览器无插件播放的第一媒体数据;对发生变化的媒体数据进行解封装,重置封装模块后,将其重新封装为支持浏览器无插件播放的第二媒体数据;
解码播放第一媒体数据,重置解码播放模块后解码播放第二媒体数据。
2.根据权利要求1所述的方法,其特征在于:
所述播放请求请求播放直播媒体数据时,根据所述播放请求获取并访问所请求的直播媒体数据的直播地址,实时接收流式封装的直播媒体数据,根据私有格式的帧头信息解析所述直播媒体数据,并判断所述直播媒体数据的分辨率或帧率是否发生变化;
对分辨率或帧率未发生变化的直播媒体数据进行解封装后,重新封装为支持浏览器无插件播放的第一直播媒体数据;对分辨率或帧率发生变化的直播媒体数据进行解封装,重置封装模块后,将其重新封装为支持浏览器无插件播放的第二直播媒体数据;
解码播放所述第一直播媒体数据,重置解码播放模块后解码播放所述第二直播媒体数据。
3.根据权利要求2所述的方法,其特征在于:
所述重新封装为支持浏览器无插件播放的第一直播媒体数据进一步包括:判断缓冲区的直播媒体数据是否达到预设封装时长,若达到则将所述直播媒体数据解封装为原始音频数据和原始视频数据;将所述原始音频数据和所述原始视频数据重新封装为所述第一直播媒体数据;若未达到预设封装时长,则将所述直播媒体数据暂存至所述缓冲区,并返回接收所述直播媒体数据;
和/或,
所述重置封装模块后,将其重新封装为支持浏览器无插件播放的第二直播媒体数据进一步包括:当识别到所述分辨率或帧率发生变化时,记录所述直播媒体数据的分辨率或帧率发生变化,并将分辨率或帧率发生变化前缓冲区中的直播媒体数据解封装为原始音视频数据,并将其重新封装为所述第一直播媒体数据,通知所述解码播放模块有所述第一直播媒体数据可追加;判断是否有分辨率或帧率发生变化的记录,若有,则对所述封装模块进行反初始化和再初始化以实现重置,并生成重置消息通知所述解码播放模块下一段追加的直播媒体数据的分辨率或帧率发生了变化;判断缓冲区的直播媒体数据是否达到预设封装时长,若达到则将所述直播媒体数据解封装为原始音频数据和原始视频数据;将所述原始音频数据和所述原始视频数据重新封装为所述第二直播媒体数据,并通知所述解码播放模块有所述第二直播媒体数据可追加;若未达到预设封装时长,则将所述直播媒体数据暂存至所述缓冲区,并返回接收所述直播媒体数据。
4.根据权利要求2所述的方法,其特征在于,所述解码播放所述第一直播媒体数据,重置解码播放模块后解码播放所述第二直播媒体数据,进一步包括:
逐条读取消息队列中的消息,判断所读取的消息是否为重置消息,若不是所述重置消息,判断所述消息中是否有支持浏览器无插件播放格式的第一或第二直播媒体数据可追加到所述解码播放模块的缓冲区,若没有可追加的,则返回判断所述消息队列中是否还有消息;若有可以追加,则追加完成后触发更新完成事件,并启动定时器,监测所述缓冲区的播放进度并在所述播放进度达到预设阈值时,停止所述计时器,并返回判断所述消息队列中是否还有消息;
在读取到所述重置消息时,所述重置消息之后追加的媒体数据的分辨率或帧率发生变化,重置所述解码播放模块,并返回判断所述消息队列中是否还有消息;
若所述消息队列中已没有消息,则返回获取所述直播媒体数据。
5.根据权利要求2至4任一项所述的方法,其特征在于:
所述播放请求请求播放录播媒体数据时,根据所述播放请求得到所请求的录播媒体数据下载地址和索引文件,进而获取录播媒体数据并进行解析;
若剩余片段解析过程中录播媒体数据的分辨率或帧率发生变化,则记录所述录播媒体数据的分辨率或帧率发生变化,并将所述分辨率或帧率发生变化前的媒体数据解封装为原始音视频数据,并将其重新封装为所述第一录播媒体数据,通知所述解码播放模块有第一录播媒体数据可追加;
若所述分辨率或帧率未发生变化,则判断是否有所述分辨率或帧率发生变化的记录,若无,则将剩余片段的录播媒体数据解封装为原始音视频数据,重新封装为支持浏览器无插件播放的第一录播媒体数据,并通知所述解码播放模块有所述第一录播媒体数据可追加;若所述分辨率或帧率发生变化的记录,则重置封装模块,并将发送重置消息通知所述解码播放模块下一段追加的录播媒体数据的分辨率或帧率发生变化,然后将剩余片段的录播媒体数据解封装为原始音视频数据,重新封装为支持浏览器无插件播放的第二录播媒体数据,并通知所述解码播放模块有所述第二录播媒体数据可追加;
检查当前分片是否有剩余的媒体数据,并在当前分片还有剩余的媒体数据时,返回继续解析剩余的录播媒体数据;
解码播放所述第一录播媒体数据,重置所述解码播放模块后解码播放所述第二录播媒体数据。
6.根据权利要求5所述的方法,其特征在于:
所述获取录播媒体数据并进行解析进一步包括:根据播放下一个分片和/或跳转请求,分析所述索引文件,确定请求播放的媒体数据在所述索引文件中的起始位置,检测录播媒体数据是否下载完成,若未下载完成,则根据所述索引文件,分片下载录播媒体数据;根据封装的私有格式帧头信息,逐帧解析所述录播媒体数据;
和/或,
所述解码播放所述第一录播媒体数据,重置所述解码播放模块后解码播放所述第二录播媒体数据进一步包括:逐条读取消息队列中的消息,判断所读取的消息是否为重置消息,若不是所述重置消息,判断所述消息中是否有支持Web无插件播放格式的第一或第二录播媒体数据可追加到所述缓冲区,若没有可追加的,则返回判断所述消息队列中是否还有消息;若有可以追加,则追加完成后触发更新完成事件,并启动定时器,监测所述缓冲区的播放进度并在所述播放进度达到预设阈值时,停止所述计时器,并返回判断所述消息队列中是否还有消息;
在读取到所述重置消息时,所述重置消息之后追加的媒体数据的分辨率或帧率发生变化,重置所述解码播放模块,并返回判断所述消息队列中是否还有消息;
若所述消息队列中已没有消息,则返回获取所述录播媒体数据。
7.一种媒体数据服务平台,其特征在于,包括媒体服务器,该媒体服务器进一步包括:鉴权模块、封装模块和发送模块,其中:
所述鉴权模块用于对客户端及其播放请求进行鉴权;
所述封装模块用于将音视频数据封装成私有格式的媒体数据以及生成索引文件,其中,每帧所述媒体数据的私有格式帧头包含帧长度、帧类型、分辨率、帧率;所述索引文件记录有媒体数据中每个关键帧的起始时间和相对文件偏移量,用于实现基于关键帧间隔的全文件精确跳转播放控制操作;
所述发送模块用于将封装后的实时媒体数据发送至所述客户端和/或存储服务器。
8.根据权利要求7所述的媒体数据服务平台,其特征在于:
该媒体数据服务平台还包括存储服务器,该存储服务器进一步包括媒体存储模块、媒体发送模块,其中:所述媒体存储模块用于接收并存储来所述索引文件和录播数据通过网络文件系统NFS协议存储媒体数据;所述媒体发送模块用于将媒体数据发送给客户端;所述转码模块用于根据所述客户端的请求参数将所述媒体数据码流的分辨率、帧率进行自适应转换;
和/或,
所述媒体服务器和/或所述存储服务器还包括转码模块,所述转码模块用于根据客户端请求参数将媒体数据码流的分辨率、帧率进行自适应转换。
9.一种无插件播放视频的客户端,其特征在于,包括:
用户交互模块,用于获取用户信息和播放请求;
播放控制模块,用于获取用户对媒体数据的播放控制指令信息,包括播放、停止、调整音量、调整播放进度;
显示模块,用于渲染视频和显示视频播放控制相关的界面;
数据获取模块,用于获取直播/录播媒体数据;
解析模块,用于根据私有格式的帧头信息解析所述直播/录播媒体数据,并判断所述直播/录播媒体数据的分辨率或帧率是否发生变化;
解封装模块,用于对所述直播/录播媒体数据进行解封装,得到原始音频、视频数据;
封装模块,用于将分辨率或帧率未发生变化的原始音频、视频数据重新封装为支持浏览器无插件播放的第一直播/录播媒体数据;以及所述封装模块重置后,用于将分辨率或帧率发生变化的原始音频、视频数据重新封装为支持浏览器无插件播放的第二直播/录播媒体数据;
解码播放模块,用于解码播放所述第一直播/录播媒体数据;以及,所述解码播放模块重置后,用于解码播放所述第二直播/录播媒体数据。
10.一种智能会议系统,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器执行权利要求1至6中任一项所述的视频播放方法。
CN202110542772.8A 2021-05-19 2021-05-19 一种视频播放方法、客户端、服务平台及智能会议系统 Pending CN112995698A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110542772.8A CN112995698A (zh) 2021-05-19 2021-05-19 一种视频播放方法、客户端、服务平台及智能会议系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110542772.8A CN112995698A (zh) 2021-05-19 2021-05-19 一种视频播放方法、客户端、服务平台及智能会议系统

Publications (1)

Publication Number Publication Date
CN112995698A true CN112995698A (zh) 2021-06-18

Family

ID=76336784

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110542772.8A Pending CN112995698A (zh) 2021-05-19 2021-05-19 一种视频播放方法、客户端、服务平台及智能会议系统

Country Status (1)

Country Link
CN (1) CN112995698A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113938470A (zh) * 2021-10-18 2022-01-14 成都小步创想慧联科技有限公司 一种浏览器播放rtsp数据源的方法、装置以及流媒体服务器
CN114125565A (zh) * 2021-11-23 2022-03-01 深圳康佳电子科技有限公司 一种基于浏览器播放视频流的方法、装置及存储介质
CN114286193A (zh) * 2021-12-31 2022-04-05 厦门四信通信科技有限公司 嵌入式web的视频播放方法、装置、设备及可读存储介质
CN114553846A (zh) * 2022-01-11 2022-05-27 南方电网深圳数字电网研究院有限公司 一种实时采集流媒体的直播方法及装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104618794A (zh) * 2014-04-29 2015-05-13 腾讯科技(北京)有限公司 播放视频的方法和装置
CN105100824A (zh) * 2015-09-10 2015-11-25 东方网力科技股份有限公司 一种视频处理设备、系统和方法
CN106506525A (zh) * 2016-11-29 2017-03-15 北京旷视科技有限公司 用于在浏览器上播放视频流的方法及装置
CN109462761A (zh) * 2018-10-30 2019-03-12 视联动力信息技术股份有限公司 一种视频解码方法及装置
CN110891051A (zh) * 2019-10-29 2020-03-17 视联动力信息技术股份有限公司 流媒体直播播放方法、装置及计算机可读存储介质
CN112073543A (zh) * 2020-11-16 2020-12-11 全时云商务服务股份有限公司 一种云视频录制方法、系统和可读存储介质
CN112261445A (zh) * 2020-10-21 2021-01-22 深圳市创维软件有限公司 流媒体播放方法、装置、设备及计算机可读存储介质
CN112822518A (zh) * 2021-04-19 2021-05-18 浙江华创视讯科技有限公司 视频播放方法、装置、系统、电子设备和存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104618794A (zh) * 2014-04-29 2015-05-13 腾讯科技(北京)有限公司 播放视频的方法和装置
CN105100824A (zh) * 2015-09-10 2015-11-25 东方网力科技股份有限公司 一种视频处理设备、系统和方法
CN106506525A (zh) * 2016-11-29 2017-03-15 北京旷视科技有限公司 用于在浏览器上播放视频流的方法及装置
CN109462761A (zh) * 2018-10-30 2019-03-12 视联动力信息技术股份有限公司 一种视频解码方法及装置
CN110891051A (zh) * 2019-10-29 2020-03-17 视联动力信息技术股份有限公司 流媒体直播播放方法、装置及计算机可读存储介质
CN112261445A (zh) * 2020-10-21 2021-01-22 深圳市创维软件有限公司 流媒体播放方法、装置、设备及计算机可读存储介质
CN112073543A (zh) * 2020-11-16 2020-12-11 全时云商务服务股份有限公司 一种云视频录制方法、系统和可读存储介质
CN112822518A (zh) * 2021-04-19 2021-05-18 浙江华创视讯科技有限公司 视频播放方法、装置、系统、电子设备和存储介质

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113938470A (zh) * 2021-10-18 2022-01-14 成都小步创想慧联科技有限公司 一种浏览器播放rtsp数据源的方法、装置以及流媒体服务器
CN113938470B (zh) * 2021-10-18 2023-09-12 成都小步创想慧联科技有限公司 一种浏览器播放rtsp数据源的方法、装置以及流媒体服务器
CN114125565A (zh) * 2021-11-23 2022-03-01 深圳康佳电子科技有限公司 一种基于浏览器播放视频流的方法、装置及存储介质
CN114286193A (zh) * 2021-12-31 2022-04-05 厦门四信通信科技有限公司 嵌入式web的视频播放方法、装置、设备及可读存储介质
CN114553846A (zh) * 2022-01-11 2022-05-27 南方电网深圳数字电网研究院有限公司 一种实时采集流媒体的直播方法及装置
CN114553846B (zh) * 2022-01-11 2024-05-14 南方电网数字平台科技(广东)有限公司 一种实时采集流媒体的直播方法及装置

Similar Documents

Publication Publication Date Title
CN108337528B (zh) 一种预览视频的方法及设备
CN112995698A (zh) 一种视频播放方法、客户端、服务平台及智能会议系统
CN112822518A (zh) 视频播放方法、装置、系统、电子设备和存储介质
CN110324671B (zh) 网页视频播放方法及装置、电子设备及存储介质
CN110784750B (zh) 视频播放方法、装置及计算机设备
CN109587514B (zh) 一种视频播放方法、介质和相关装置
CN111510789B (zh) 视频播放方法、系统、计算机设备及计算机可读存储介质
US10965969B2 (en) Method and apparatus for playing online television program
CN112261377B (zh) web版监控视频播放方法、电子设备及存储介质
US10419798B2 (en) Method and apparatus for just-in-time transcoding
CN113727184B (zh) 视频播放方法、装置、系统、存储介质以及电子设备
CN110545448B (zh) 基于数据加密的媒体播放方法、装置及存储介质
EP2645663A1 (en) Media data processing method and device thereof
CN114745361B (zh) 一种用于html5浏览器的音视频播放方法及系统
EP3125541A1 (en) Data acquisition and interaction method, set top box, server and multimedia system
KR100909669B1 (ko) 모바일 단말 및 임베디드 단말의 웹 브라우저 내에서 플래시 기반 비디오 콘텐츠의 재생 방법
CN108737355B (zh) 基于用户带宽的流媒体播放
US11997369B2 (en) Method of processing an error during the rendering of a digital content
CN113242437A (zh) 一种rtsp协议视频无插件播放方法、系统、装置及存储介质
CN105306520A (zh) 操作高速缓存器的方法及相应高速缓存器
KR101863598B1 (ko) 스트리밍 서비스를 위한 클라이언트의 동작 방법
CN114866842A (zh) 一种Web视频的预览方法、设备及介质
CN110855619B (zh) 播放音视频数据的处理方法、装置、存储介质及终端设备
CN110545463B (zh) 基于媒体文件转换的播放控制方法、装置及存储介质
CN110545471B (zh) 基于离线转换的播放控制方法、装置及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20210618

RJ01 Rejection of invention patent application after publication