CN117834963A - 一种显示设备及流媒体的播放方法 - Google Patents
一种显示设备及流媒体的播放方法 Download PDFInfo
- Publication number
- CN117834963A CN117834963A CN202311652826.1A CN202311652826A CN117834963A CN 117834963 A CN117834963 A CN 117834963A CN 202311652826 A CN202311652826 A CN 202311652826A CN 117834963 A CN117834963 A CN 117834963A
- Authority
- CN
- China
- Prior art keywords
- code stream
- loop
- packet
- time stamp
- data
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 72
- 238000012545 processing Methods 0.000 claims abstract description 166
- 230000008569 process Effects 0.000 claims abstract description 41
- 238000009877 rendering Methods 0.000 claims description 40
- 230000005540 biological transmission Effects 0.000 claims description 23
- 238000012544 monitoring process Methods 0.000 claims description 15
- 238000004806 packaging method and process Methods 0.000 claims description 12
- 230000000903 blocking effect Effects 0.000 abstract description 3
- 238000004891 communication Methods 0.000 description 20
- 238000010586 diagram Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 11
- 239000012634 fragment Substances 0.000 description 8
- 230000000694 effects Effects 0.000 description 5
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000011144 upstream manufacturing Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000011143 downstream manufacturing Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Landscapes
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本申请提供一种显示设备及流媒体的播放方法,所述方法在码流包中码流时间戳的时间戳长度大于处理器的处理位数时,根据处理位数设置时间戳参考值;以时间戳参考值为圆环对码流时间戳执行至少一轮回环处理,在回环处理后的码流时间戳的时间戳长度均落在圆环的内部时生成回环处理后的目标码流包;根据目标时间戳确定流媒体码流的播放位置;根据回环参考值对回环处理后的时间戳执行反回环处理并控制播放器根据目标播放位置播放流媒体码流。该方法能够适配不同处理器位数的流媒体码流时间戳长度,克服处理器与流媒体码流时间戳长度不匹配的问题,解决流媒体无法播放及播放过程中出现频繁卡顿的问题。
Description
技术领域
本申请涉及流媒体播放技术领域,尤其涉及一种显示设备及流媒体的播放方法。
背景技术
流媒体是指采用流式传输的方式在网络上播放的媒体格式,如音频、视频等,用户可以将手机、电脑、电视、平板等终端设备接入网络中,享受流媒体服务。在播放流媒体的过程中,流媒体应用内容商可以通过音视频传送服务器把视频节目打包成多个数据片段后传送到网络上,用户从网络中下载数据片段经过音视频解码器解码后,流媒体节目就会成功播放。
流媒体码流指的是流媒体在传输过程中所使用的编码格式和比特率。不同的编码格式对视频的压缩率和图像质量有不同的影响。流媒体码流的比特率则决定了流媒体的传输速度和质量,比特率越高,传输速度越快,图像质量也越高,但同时也会占用更多的网络带宽。
处理器如CPU具有较强的数据处理能力,因此,可以通过CPU处理器来处理流媒体码流的传输与播放。但随着流媒体业务的发展,流媒体码流也在发生变化。例如,流媒体码流的视频流中每个帧的显示时间戳的长度(Presentation Time Stamp,PTS)即PTS长度已经达到了64位。而CPU经历了由低位到高位的发展过程,其至少包含32位和64位两种不同的处理器,其中32位处理能力可能无法适配部分流媒体的播放。例如,无法适配新的PTS长度为64位的流媒体的播放。
发明内容
本申请一些实施例提供一种显示设备及流媒体的播放方法,以解决流媒体无法播放的问题。
第一方面,本申请一些实施例提供一种显示设备,包括:
显示器,被配置为显示用户界面;
控制器,被配置为:
获取流媒体码流,以及将所述流媒体码流打包为码流包;
获取***处理器的处理位数,以及获取所述码流包中码流时间戳的时间戳长度;
在所述时间戳长度大于所述处理位数时,根据所述处理位数设置时间戳参考值;
以所述时间戳参考值为圆环对所述码流时间戳执行至少一轮回环处理,并记录回环处理过程中的回环参考值;以及在回环处理后的码流时间戳的时间戳长度均落在所述圆环的内部时,生成回环处理后的目标码流包;所述目标码流包包括目标时间戳;
根据所述目标时间戳确定流媒体码流的播放位置,以及将所述播放位置发送至播放器;
根据所述回环参考值对回环处理后的时间戳执行反回环处理,以补偿所述播放位置得到目标播放位置,以及控制所述播放器根据所述目标播放位置播放所述流媒体码流。
第二方面,本申请一些实施例提供一种流媒体的播放方法,可以应用于第一方面的显示设备,所述方法包括:
获取流媒体码流,以及将所述流媒体码流打包为码流包;
获取***处理器的处理位数,以及获取所述码流包中码流时间戳的时间戳长度;
在所述时间戳长度大于所述处理位数时,根据所述处理位数设置时间戳参考值;
以所述时间戳参考值为圆环对所述码流时间戳执行至少一轮回环处理,并记录回环处理过程中的回环参考值;以及在回环处理后的码流时间戳的时间戳长度均落在所述圆环的内部时,生成回环处理后的目标码流包;所述目标码流包包括目标时间戳;
根据所述目标时间戳确定流媒体码流的播放位置,以及将所述播放位置发送至播放器;
根据所述回环参考值对回环处理后的时间戳执行反回环处理,以补偿所述播放位置得到目标播放位置,以及控制所述播放器根据所述目标播放位置播放所述流媒体码流。
由以上技术方案可知,本申请一些实施例提供一种显示设备及流媒体的播放方法,方法包括:获取流媒体码流及将流媒体码流打包为码流包;获取***处理器的处理位数及码流包中码流时间戳的时间戳长度;在时间戳长度大于处理位数时,根据处理位数设置时间戳参考值;以时间戳参考值为圆环对码流时间戳执行至少一轮回环处理,并记录回环处理过程中的回环参考值;在回环处理后的码流时间戳的时间戳长度均落在圆环的内部时,生成回环处理后的目标码流包;根据目标时间戳确定流媒体码流的播放位置并将播放位置发送至播放器;根据回环参考值对回环处理后的时间戳执行反回环处理,以及控制播放器根据目标播放位置播放流媒体码流。所述方法能够适配不同CPU处理器位数的流媒体码流PTS长度,可以克服CPU处理器与流媒体码流PTS长度不匹配的问题,在不需要额外增加设备部件的前提下,解决流媒体无法播放及播放过程中出现频繁卡顿的问题。
附图说明
为了更清楚地说明本申请一些实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本申请一些实施例提供的终端设备与控制设备之间操作场景的示意图;
图2为本申请一些实施例提供的终端设备的硬件配置框图;
图3为本申请一些实施例提供的控制设备的硬件配置框图;
图4为本申请一些实施例提供的终端设备中软件配置示意图;
图5为本申请一些实施例示出的流媒体播放过程中数据流的处理框架示意图;
图6为本申请一些实施例提供的显示设备执行流媒体的播放方法流程示意图;
图7为本申请一些实施例提供的将流媒体码流划分为上行数据流和下行数据流的效果示意图;
图8为本申请一些实施例提供的显示设备打包下行数据流生成下行数据包的流程示意图;
图9为本申请一些实施例提供的显示设备对时间戳差值执行阈值监控的流程示意图;
图10为本申请一些实施例提供的显示设备执行阈值监控的处理流程图;
图11为本申请一些实施例提供的显示设备对码流时间戳执行回环处理的场景示意图;
图12为本申请一些实施例提供的显示设备对码流时间戳执行回环处理的流程示意图;
图13为本申请一些实施例提供的显示设备对回环处理后的时间戳执行反回环处理的流程示意图;
图14为本申请一些实施例提供的显示设备对回环处理后的时间戳执行反回环处理的场景示意图。
具体实施方式
为使本申请一些实施例的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请一些实施例技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。
需要说明的是,本申请一些实施例中对于术语的简要说明,仅是为了方便理解接下来描述的实施方式,而不是意图限定本申请一些实施例的实施方式。除非另有说明,这些术语应当按照其普通和通常的含义理解。
本申请一些实施例中说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”等是用于区别类似或同类的对象或实体,而不必然意味着限定特定的顺序或先后次序,除非另外注明。应该理解这样使用的用语在适当情况下可以互换。
术语“包括”和“具有”以及他们的任何变形,意图在于覆盖但不排他的包含,例如,包含了一系列组件的产品或设备不必限于清楚地列出的所有组件,而是可包括没有清楚地列出的或对于这些产品或设备固有的其它组件。
术语“模块”是指任何已知或后来开发的硬件、软件、固件、人工智能、模糊逻辑或硬件或/和软件代码的组合,能够执行与该元件相关的功能。
图1为本申请一些实施例提供的终端设备与控制设备之间操作场景的示意图。如图1中示出,用户可通过移动终端300和控制设备100操作终端设备200。
在一些实施例中,控制设备100可以是遥控器,遥控器和终端设备的通信包括红外协议通信或蓝牙协议通信,及其他短距离通信方式等,通过无线方式或其他有线方式来控制终端设备200。用户可以通过遥控器上按键,语音输入、控制面板输入等输入用户指令,来控制终端设备200。
在一些实施例中,移动终端300可与终端设备200安装软件应用,通过网络通信协议实现连接通信,实现一对一控制操作的和数据通信的目的。也可以将移动终端300上显示音视频内容传输到终端设备200上,实现同步显示功能。
如图1中还示出,终端设备200还与服务器400通过多种通信方式进行数据通信。可允许终端设备200通过局域网(LAN)、无线局域网(WLAN)和其他网络进行通信连接。
终端设备200除了提供广播接收电视功能之外,还可以附加提供计算机支持功能的智能网络电视功能,包括但不限于,网络电视、智能电视、互联网协议电视(IPTV)等。
图2为本申请一些实施例提供的终端设备的硬件配置框图。
在一些实施例中,终端设备200包括调谐解调器210、通信器220、检测器230、外部装置接口240、控制器250、显示器260、音频输出接口270、存储器、供电电源、用户接口中的至少一种。
在一些实施例中,检测器230用于采集外部环境或与外部交互的信号。
在一些实施例中,显示器260包括用于呈现画面的显示屏组件,以及驱动图像显示的驱动组件,用于接收源自控制器输出的图像信号,进行显示视频内容、图像内容以及菜单操控界面的组件以及用户操控UI界面等。
在一些实施例中,通信器220是用于根据各种通信协议类型与外部设备或服务器进行通信的组件。
在一些实施例中,控制器250,通过存储在存储器上中各种软件控制程序,来控制终端设备的工作和响应用户的操作。控制器250控制终端设备200的整体操作。
在一些实施例中,用户可在显示器260上显示的图形用户界面(GUI)输入用户命令,则用户输入接口通过图形用户界面(GUI)接收用户输入命令。
在一些实施例中,用户接口280,为可用于接收控制输入的接口。
图3为本申请一些实施例提供的控制设备的硬件配置框图。如图3所示,控制设备100包括控制器110、通信接口130、用户输入/输出接口、存储器、供电电源。
控制设备100被配置为控制终端设备200,以及可接收用户的输入操作指令,且将操作指令转换为终端设备200可识别和响应的指令,起到用户与终端设备200之间交互中介作用。
在一些实施例中,控制设备100可是一种智能设备。如:控制设备100可根据用户需求安装控制终端设备200的各种应用。
在一些实施例中,如图1所示,移动终端300或其他智能电子设备,可在安装操控终端设备200的应用之后,可以起到控制设备100类似功能。
控制器110包括处理器112和RAM 113和ROM 114、通信接口130以及通信总线。控制器110用于控制控制设备100的运行和操作,以及内部各部件之间通信协作以及外部和内部的数据处理功能。
通信接口130在控制器110的控制下,实现与终端设备200之间控制信号和数据信号的通信。通信接口130可包括WiFi芯片131、蓝牙模块132、NFC模块133等其他近场通信模块中至少之一种。
用户输入/输出接口140,其中,输入接口包括麦克风141、触摸板142、传感器143、按键144等其他输入接口中至少一者。
在一些实施例中,控制设备100包括通信接口130和输入输出接口140中至少一者。控制设备100中配置通信接口130,如:WiFi、蓝牙、NFC等模块,可将用户输入指令通过WiFi协议、或蓝牙协议、或NFC协议编码,发送至终端设备200。
存储器190,用于在控制器的控制下存储驱动和控制控制设备100的各种运行程序、数据和应用。存储器190,可以存储用户输入的各类控制信号指令。
供电电源180,用于在控制器的控制下为控制设备100各元件提供运行电力支持。
图4为本申请一些实施例提供的终端设备中软件配置示意图,在一些实施例中,将***分为四层,从上至下分别为应用程序(Applications)层(简称“应用层”)、应用程序框架(Application Framework)层(简称“框架层”)、安卓运行时(Android runtime)和***库层(简称“***运行库层”),以及内核层。
在一些实施例中,应用程序层中运行有至少一个应用程序,这些应用程序可以是操作***自带的窗口(Window)程序、***设置程序、时钟程序、相机应用等;也可以是第三方开发者所开发的应用程序。
框架层为应用程序层的应用程序提供应用编程接口(Aplication PogrammingIterface,API)和编程框架。应用程序框架层包括一些预先定义的函数。应用程序框架层相当于一个处理中心,这个中心决定让应用层中的应用程序做出动作。
如图4所示,本申请实施例中应用程序框架层包括管理器(Managers)、内容提供者(Content Provider)和视图***(View System)等。
在一些实施例中,活动管理器用于:管理各个应用程序的生命周期以及通常的导航回退功能。
在一些实施例中,窗口管理器用于管理所有的窗口程序。
在一些实施例中,***运行库层为上层即框架层提供支撑,当框架层被访问时,安卓操作***会运行***运行库层中包含的C/C++库以实现框架层要实现的功能。
在一些实施例中,内核层是硬件和软件之间的层。如图4所示,内核层至少包含以下驱动中的至少一种:音频驱动、显示驱动、蓝牙驱动、摄像头驱动、WIFI驱动、USB驱动、HDMI驱动、传感器驱动(如指纹传感器,温度传感器,触摸传感器、压力传感器等)等。
在一些实施例中,内核层还包括用于进行电源管理的电源驱动模块。
在一些实施例中,图4中的软件架构对应的软件程序和/或模块存储在图2或图3所示的第一存储器或第二存储器中。
以上实施例示出一种显示设备200的硬件/软件架构以及功能实现等内容,在一些实施例中,可以通过上述显示设备200播放各种流媒体。流媒体是指采用流式传输的方式在网络上播放的媒体格式,如音频、视频等,用户可以将手机、电脑、电视、平板等终端设备接入网络中,享受流媒体服务。在播放流媒体的过程中,流媒体应用内容商可以通过音视频传送服务器把视频节目打包成多个数据片段后传送到网络上,用户从网络中下载数据片段经过音视频解码器解码后,流媒体节目就会成功播放。
流媒体码流指的是流媒体在传输过程中所使用的编码格式和比特率。流媒体码流的编码格式可以包括MPEG-2、MPEG-4、H.264、H.265等,不同的编码格式对视频的压缩率和图像质量有不同的影响。流媒体码流的比特率则决定了流媒体的传输速度和质量,比特率越高,传输速度越快,图像质量也越高,但同时也会占用更多的网络带宽。在选择流媒体码流时,需要根据网络带宽、设备性能和用户需求等因素进行综合考虑,以达到最佳的观看体验。
在一些实施例中,处理器如CPU具有较强的数据处理能力,因此,可以通过CPU处理器来处理流媒体码流的传输与播放。但随着流媒体业务的发展,流媒体码流也在发生变化。例如,流媒体码流的视频流中每个帧的显示时间戳的长度(Presentation Time Stamp,PTS)即PTS长度已经达到了64位。而CPU经历了由低位到高位的发展过程,其至少包含32位和64位两种不同的处理器,其中32位处理能力可能无法适配部分流媒体的播放。例如,无法适配新的PTS长度为64位的流媒体的播放。
图5为本申请一些实施例示出的流媒体播放过程中数据流的处理框架示意图,如图5所示,在一些实施例中,流媒体播放的数据流需要经过解码、渲染和播放,在对数据流的处理框架中,从上到下依次可以包括应用层、中间转发层和播放渲染层。其中,其中应用层为具体的播放片源,是数据源的发起端,原始数据即数据源经过压缩编码后可以转给中间转发层,压缩编码的格式可以采取VP9、H264、H265,或者AAC、AC3、EAC3等。中间转发层会根据底层播放渲染层的需要进行数据的打包与封装,形成编码数据,涉及的播放参数可以包括播放窗口、数据编码类型Codec、数据长度、数据时间戳、加密类型DRM、音视频类型等。播放渲染层收到中间转发层发送的编码数据后会进行数据的解封装、解码、渲染及播放,例如,可以通过播放器执行上述流程。但是,播放器在处理数据时间戳时,就会遇到长度超过32位的问题,导致流媒体无法播放。
具体地,由于数据在传输过程中存在网络时延,视频流等数据包需要经过多个分发器才能到达音视频解码器等接收端。因此,先发送的数据可能会晚于后发送的数据。为了能够完整、准确地显示原始视频图像等数据流,同时也为了保证音频与视频的数据同步,音视频数据在发送端通常会***PTS时间戳。在直播类节目中,时间戳可以以***时间为参考,该***时间是从协调世界时间(Coordinated Universal Time,CUT)即1970年1月1日00:00:00到当前时刻的秒数,可以称其为UNIX***的Epoch时间。音视频解码器等数据接收端可以以此时间戳为参考,将接收到的数据包按时间戳的先后顺序排列并解码与显示。
但是,音视频解码器受到CPU处理器位数的限制,其计算能力可能无法处理长度不匹配的时间戳。以32位CPU为例,其数据最大值0Xffffffff=4,294,967,295,32位CPU的处理能力为4,294,967,295/4=1,073,741,823,这个值如果转换为PTS的话,就是1970年1月1日00:00:00到当前时间的秒数,每年按365天计算,如果换成单位年则为1,073,741,823/(3600*24*365)约等于34,那么***时间按年算最大为1970+34=2011年。也就是说,32位CPU处理器对直播类节目的处理只能到2011年,而当前时间早已超过了2011年,因此会存在部分流媒体无法播放的问题。
此外,中间转发层在数据打包与封装后,如果直接转给底层播放渲染层,播放渲染层在处理过程中由于存在的时延问题,会引发大规模并发性数据流带来的网络抖动与解码抖动,导致流媒体播放过程中出现频繁卡顿的现象。
为了解决流媒体无法播放及播放过程中出现频繁卡顿的问题,本申请提供一种显示设备200,所述显示设备200包括显示器260和控制器250。其中,显示器260被配置为显示用户界面,控制器250被配置为执行流媒体的播放方法。所述显示设备200能够适配不同CPU处理器位数的流媒体码流PTS长度,可以克服CPU处理器与流媒体码流PTS长度不匹配的问题,在不需要额外增加设备部件的前提下,解决流媒体无法播放及播放过程中出现频繁卡顿的问题。
为了便于对本申请一些实施例中技术方案的理解,下面结合一些具体实施例和附图对各个步骤进行详细说明。图6为本申请一些实施例提供的显示设备执行流媒体的播放方法流程示意图,如图6所示,在一些实施例中,显示设备200在执行流媒体的播放方法时,可以包括如下步骤S1-S,具体内容如下:
步骤S1:显示设备200获取流媒体码流,以及将流媒体码流打包为码流包。
为了实现流媒体码流的传输和处理,在一些实施例中,可以将将流媒体码流打包为码流包。在打包时,可以将连续的流媒体码流如音视频数据分割成一定大小的码流包,以便于进行网络传输。在打包的过程中,每一个码流包都包含了原始数据以及一些必要的元信息,例如,时间戳、包长度等,这些信息对于接收端解码和解包等提供数据基础。在将流媒体码流打包为码流包后,打包后的码流包可以通过各种网络协议进行传输,例如,可以通过实时传输协议(Real-time Transport Protocol,RTP)、实时传输控制协议(Real-timeControl Protocol,RTCP)等。接收端收到码流包后,可以执行解码和解包操作。例如,解码器可以将码流包解码为始的音视频数据,解包器则可以将码流包还原成原始的码流等。最后,解码后的音视频数据可以被渲染成图像和声音,然后在显示器或扬声器上播放出来。
为了提升流媒体码流传输的效率和稳定性,在一些实施例中,可以按照流媒体码流的传输方向将流媒体码流划分为上行数据流和下行数据流。图7为本申请一些实施例提供的将流媒体码流划分为上行数据流和下行数据流的效果示意图,如图7所示,首先显示设备200可以获取流媒体码流的传输方向,之后按照传输方向将流媒体码流划分为上行数据流和下行数据流。其中,上行数据流是由播放渲染层渲染数据流后将时间戳信息反馈至中间转发层,并由中间转发层上报至应用层的数据流;下行数据流为应用层将流媒体的数据源发送至中间转发层形成编码数据,并由中间转发层下发至播放渲染层的数据流,之后可以打包下行数据流,以生成下行数据包。
示例性的,可以通过实时流媒体传输协议RTSP获得流媒体码流的传输方向,也可以通过获取视频的码流信息进行分析获得流媒体码流的传输方向。下行数据流可以体现出从应用层到中间转发层和播放渲染层对流媒体码流的处理过程,因此,为了便于处理过程中数据的流转,可以将下行数据流打包为下行数据包,以便于下行数据流在应用层、中间转发层及播放渲染层之间的传输。上行数据流可以将对下行数据流的处理结果的由底层向顶层如中间转发层和应用层进行汇报,为了便于理解下行数据流和上行数据流的处理过程,下面将分别进行说明。
对于下行数据流,其数据流可以包含播放窗口控件参数、数据编码类型、数据长度、数据时间戳、加密类型、音视频类型等参数,因此,在打包下行数据流时,可以执行如下流程。图8为本申请一些实施例提供的显示设备打包下行数据流生成下行数据包的流程示意图,如图8所示,在一些实施例中,显示设备200可以解析下行数据流,以识别出下行数据流包括的播放窗口控件参数、数据编码类型、数据长度、数据时间戳、加密类型、音视频类型等参数,之后封装播放窗口控件参数、数据编码类型、数据长度、数据时间戳、加密类型、音视频类型等参数,生成下行数据包。步骤S1执行完成后,可以执行如下步骤S2。
步骤S2:获取***处理器的处理位数,以及获取码流包中码流时间戳的时间戳长度。
在一些实施例中,可以通过查询***的硬件信息的方式获取***处理器的处理位数。示例性的,在Windows***中,可以使用GetSystemInfo()函数来获取***信息,然后通过读取其中的目标字段如dwProcessorType字段来判断处理器的类型和处理位数。在Linux***中,可以使用sysconf()函数来获取***配置信息,然后通过读取其中的目标字段如SC_PAGESIZE和SC_CLK_TCK字段来判断处理器的位数和时钟频率。具体获取方式本申请不作限定,可以根据实际使用场景进行选择。
在获取码流包中码流时间戳的时间戳长度时,通过分析码流包中的元数据来实现。如果需要获取码流包中码流时间戳的时间戳长度,可以首先判断RTP协议的版本号,然后根据版本号来确定时间戳的长度。示例性的,在RTP协议中,每个RTP数据包都包含了一些元数据,其中就包括时间戳信息。时间戳的长度通常由RTP协议的版本号决定,例如RTP/AVP12、RTP/AVP 11等。具体来说,RTP/AVP 12版本的时间戳长度为32位,而RTP/AVP 11版本的时间戳长度为24位。还可以以其他方式获取,本申请对此不作具体限定。
为了提升流媒体码流播放的流畅度、防止播放过程中频繁卡顿的问题,在一些实施例中,显示设备200可以对下行数据包中的码流时间戳与播放渲染层中播放器的播放时间戳的时间戳差值执行阈值监控。图9为本申请一些实施例提供的显示设备对时间戳差值执行阈值监控的流程示意图,如图9所示,显示设备200首先可以获取下行数据包中的码流时间戳,获取播放渲染层中播放器的播放时间戳,之后计算码流时间戳与播放时间戳之间的时间戳差值,最后再对时间戳差值执行阈值监控。阈值监控用于检测下行数据包中的码流时间戳与播放器的播放时间戳之间的差值,即时间戳差值,时间戳差值的大小可以帮助判断***的运行状态,也是决定中间转发层行为的关键因素。
按照时间戳差值的不同,可以设置播放渲染层中数据缓存空间的阈值上限值、阈值中间值和阈值下限值,其中,数据缓存空间用于缓存流媒体码流的数据帧。阈值上限值、阈值中间值和阈值下限值设置完成后,之后可以进行如下判断,如果时间戳差值小于阈值下限值,生成播放暂停指令和下发数据包指令,以及通过中间转发层将播放暂停指令发送至播放渲染层,通过中间转发层将下发数据包指令发送至应用层,以使播放渲染层根据播放暂停指令暂停播放流媒体码流,使应用层在接收到下发数据包指令后向播放渲染层下发下行数据包;如果时间戳差值大于或等于阈值中间值,生成播放复位指令,以及通过中间转发层将播放复位指令发送至播放渲染层,以使播放渲染层在接收到播放复位指令后播放流媒体码流;如果时间戳差值大于或等于阈值上限值,生成停止转发数据包指令,以及通过中间转发层将停止转发数据包指令发送至应用层,以使应用层在接收到停止转发数据包指令后停止下发流媒体码流。
其中,阈值下限值是指下行数据包的PTS与播放器PTS的差值低于阈值的下限,说明此时应用层发送的下行数据包较少或者网络出现了异常,播放器无法流畅的渲染视频图像,画面会处在静止状态。针对此场景,显示设备200可以生成播放暂停指令,中间转发层将播放暂停发送至应用层。与此同时,中间转发层会向应用层发送下行数据包不足的消息,说明底层播放渲染层因数据包不足而处于播放暂停的状态,需要应用层及时下发更多的数据。阈值中间值是指下行数据包的PTS与播放器PTS的差值达到或超过阈值,说明此时应用层发送的下行数据包数量合适。针对此场景,显示设备200可以生成播放复位指令,中间转发层会向应用层发送播放复位指令,此时播放画面处于流畅的状态。阈值上限值是指下行数据包的PTS与播放器PTS的差值达到或超过阈值上限,说明此时应用层发送的下行数据包较多,超过了底层播放渲染层缓存流媒体码流的数据帧的上限,此时中间转发层会停止转发下行数据包,并向应用层发送数据包过多的消息,说明底层因数据包处于饱和状态而需要应用层停止下发更多的数据。
示例性的,图10为本申请一些实施例提供的显示设备执行阈值监控的处理流程图,如图10所示,具体执行阈值监控时,由应用层向中间转发层下发下行数据包,中间转发层可以向应用层请求下行数据包,之后可以通过对比当前流媒体码流播放器的播放位置与底层播放渲染层的数据缓存空间阈值的关系来决定中间转发层的行为。其中,当前流媒体码流播放器的播放位置可以通过播放器的播放时间戳确定,当前流媒体码流的数据PTS可以通过下行数据包中的码流时间戳确定。首先,可以设置数据缓存空间的阈值上限值Tmax、阈值中间值T和阈值下限值Tmin,然后获取当前流媒体码流播放器的播放位置S,并获取当前流媒体码流的数据PTS位置P。当S=0时,说明播放器未开始播放,此时需要获取第一个流媒体码流的数据PTS位置P1,即S=P1。接着,比较当前流媒体码流的数据PTS位置P、播放器的播放位置S以及阈值T三者之间的关系。
如果P<S+Tmin,即时间戳差值小于阈值下限值,说明当前播放器码流的PTS与播放器的播放位置小于阈值下限值。为了避免出现播放卡顿的问题,中间转发层需要向播放渲染层发出播放暂停的指令,同时应用层发出需要更多下行数据包的请求。当应用层下发下行数据包时,流媒体码流的数据PTS位置P开始逐渐增大,当P=S+T时,说明当前流媒体码流的数据PTS与播放器的播放位置S与阈值中间值相等,此时中间转发层需要向播放渲染层发出播放恢复的命名。同时,由于此时并未达到阈值上限值,数据缓存空间仍然可以缓存更多的数据,因此虽然播放器恢复了播放,但中间层仍然会向应用层请求更多的下行数据。当P继续增大直到P=S+Tmax时,则说明当前播放器码流的PTS与播放器的播放位置超过阈值上限值,数据缓存空间无法缓存更多数据,此时中间层会停止向应用层请求下行数据。下行数据虽然停止转发了,但播放器没有停止,当播放位置S开始增大时,P会小于S+Tmax,此时又回到最初的P<S+Tmin,重新可以再比较P、S、T三者之间的关系,直到流媒体码流播放器播放完成。
通过对时间戳差值执行阈值监控,可以以此为依据调整应用层向播放器发送数据包的数量,进而使播放器端播放流媒体码流更流畅,解决播放过程中出现频繁卡顿的问题。也就是说,当数据包的PTS超过预先设定的阈值时,中间转发层开始控制播放器的播放,与数据包实时转发相比,数据帧缓存会延迟数据的发送,导致实时数据和播放数据之间存在一定的时间差。这个时间差为播放器处理数据提供了条件,可以使流媒体码流的播放更流畅。当步骤S2执行完成后,可以执行如下步骤S3。
步骤S3:在时间戳长度大于处理位数时,根据处理位数设置时间戳参考值。
在获取到***处理器的处理位数以及码流包如下行数据包中码流时间戳的时间戳长度之后,为了确定当前***处理器能否处理码流包,显示设备200需要对比***处理器的处理位数以及码流包中码流时间戳的时间戳长度。在一些实施例中,处理位数可以包括32位或64位,在获取码流时间戳的时间戳长度后,当时间戳长度大于处理位数时,即码流时间戳的时间戳长度超过处理器的处理位数时,需要对码流时间戳执行回环处理。
时间戳是一个精确到秒的数字,表示从某一特定时间点如1970年1月1日到现在经过的秒数。对码流时间戳执行回环处理用于适配码流包的PTS长度如码流时间戳的时间戳长度与处理器的处理位数。其处理思路可以为,显示设备200可以根据CPU处理器的处理能力设定一个PTS参考值,例如时间戳参考值。当PTS长度在参考值以下时,说明CPU可以直接处理,此时不需要对PTS进行回环处理。如果码流包的PTS长度超过了CPU处理器的处理位数,那么就需要对PTS进行回环处理。
时间戳参考值的设定可以结合CPU的运算性能和时钟频率等因素。例如,对于32位的CPU,其能处理的最大时间戳长度为4294967295秒,约等于136年;而对于64位的CPU,由于其处理能力的增强,最大能处理的时间戳长度可达到1.84467441×10^19秒,约等于58494.5年。因此,当码流包的PTS长度超过了CPU处理器的处理位数时,就需要对时间戳进行回环处理,可以将超出部分的时间戳截断或者循环回到范围内,这样处理后的时间戳长度就能落在CPU的处理范围内,从而可以保证流媒体码流播放的流畅性。步骤S3执行完成后,可以执行如下步骤S4。
步骤S4:以时间戳参考值为圆环对码流时间戳执行至少一轮回环处理,并记录回环处理过程中的回环参考值;以及在回环处理后的码流时间戳的时间戳长度均落在圆环的内部时,生成回环处理后的目标码流包。
当码流包的时间戳长度即PTS长度超过了CPU处理器的处理位数时,如时间戳长度大于或等于处理器的时间戳参考值的参考长度时,就需要对码流时间戳执行回环处理。在一些实施例中,回环处理的过程可以看作是一个循环过程,首先显示设备200可以以时间戳参考值为一个圆环,码流包的PTS先进行一个回环,然后判断回环后的PTS是否落在一个设定的范围内。如果不在,则继续回环,直到回环后的PTS落在范围内。这样,回环处理后的PTS就落在了CPU的处理范围内。这样做的目的是一是为了解决处理器与码流包PTS不匹配导致流媒体码流无法播放的问题,即码流包PTS长度超过处理器处理位数时处理器无法处理该PTS导致流媒体无法播放的问题,二是为了保证流媒体码流播放的流畅性,避免由于码流包处理不当导致的播放卡顿等问题。回环完成后,可以将处理后的PTS值发送给播放渲染层的播放器进行渲染。由于播放器启动播放后需要上报播放的进度和位置,此进度和位置就是中间层发送的经过回环处理后的PTS,由于此播放位置是经过了回环处理的,因此还需要进行反回环处理再上报给应用层。
具体实现时,可以根据如下流程执行。显示设备200首先可以按照应用层下发流媒体码流的时间顺序获取多个码流包,之后获取首个码流包的第一时间戳;首个码流包为多个码流包中按照时间顺序获取的第一码流包;第一时间戳为首个码流包对应的码流时间戳。如果第一时间戳的时间戳长度大于时间戳参考值的参考长度,则将第一时间戳设置为第一回环参考值,并计算多个码流时间戳与第一回环参考值的差值,以生成多个回环包时间戳,其中,回环包时间戳为多个码流包经过回环处理后的码流时间戳。这样就完成了第一轮回环处理。
第一轮回环处理完成后,显示设备200可以以时间戳参考值为圆环对码流时间戳执行回环处理。在执行回环处理时,首先显示设备200可以获取多个第一轮次回环包的回环包时间戳,之后提取回环数据包,所述回环数据包为回环包时间戳等于时间戳参考值的数据包,再根据时间顺序和回环数据包确定转发包和待回环包。其中,转发包为无需执行回环处理的码流包,可以将回环参考值设置为0,以及通过中间转发层将转发包发送至播放渲染层中的播放器,以使播放器播放转发包。再将时间戳参考值设置为第二回环参考值,并计算多个回环包时间戳与第二回环参考值的差值,以生成多个二轮回环包时间戳,直至目标轮次回环中最后一个回环包的回环包时间戳长度小于时间戳参考值的参考长度。
示例性的,前述已经获取到当前***处理器的处理位数,并根据处理位数设置时间戳参考值,可以将其标记为C1。之后按照应用层下发流媒体码流的时间顺序依次获取多个码流包。图11为本申请一些实施例提供的显示设备对码流时间戳执行回环处理的场景示意图,图12为本申请一些实施例提供的显示设备对码流时间戳执行回环处理的流程示意图,结合图11和图12,在一些实施例中,多个码流包可以分别为第1码流数据包P(1)、第2码流数据包P(2)…和第I码流数据包P(I),其中I为正整数。由于P为***时间,其值会随着时间推移而逐渐变大,因此流媒体码流PTS是递增的关系,即P(1)<P(2)<...<P(I),P(1)即为首个码流包的第一时间戳。由于C1为固定值,因此,C1与P(I)之间存在如下关系,如果C1<P(1)即第一时间戳的时间戳长度P(1)大于时间戳参考值的参考长度,那么C1是最小的,即C1<P(1)<P(2)<...<P(I),则可以设置第一回环参考值Y=P(1)。对于获取的每个码流数据包P(I),依次取P(I)与Y的差值,标记为P‘(I)=P(I)-Y,则经过第一个回环处理后的回环包时间戳的值依次变为P‘(1)、P‘(2)…P‘(I),至此完成第一轮回环处理。
第一轮回环处理完成后,P‘(1)=0,P‘(2)=P(2)-Y,P‘(I)=P(I)-Y,依次类推,经过第一个回环处理后P‘(I)从零开始计数并逐渐增大。针对此场景,显示设备200可以以时间戳参考值为圆环对码流时间戳执行至少一轮回环处理。示例性的,显示设备200在获取多个第一轮次回环包的回环包时间戳P‘(1)、P‘(2)…P‘(I)后,可以重新比较C1与P‘(1),P‘(2)…P‘(I)的关系。由于P‘(1)=0,因此C1与P‘(I)之间存在如下关系:P‘(1)<P‘(2)<…<P‘(M-1)<P‘(M)=C1<P‘(M+1)<...<P‘(N),M和N均为正整数。其中P‘(M)为第M个码流包经过第一个回环后的PTS值。可以理解的是,由于P‘(1)<P‘(2)<…<P‘(M-1)<C1,因此,处理器可以处理这些PTS,从第M个码流包开始,需要进行新的回环。
由于回环包时间戳P‘(M)等于时间戳参考值C1,因此,回环数据包即为第M个码流包,则根据码流包的下发时间顺序和回环数据包P‘(M)即可确定转发包和待回环包。例如,对于前M个码流包均为转发包,此时中间转发层可以将其转发至播放渲染层。之后,针对P‘(M)至<P‘(N),仍超过时间戳参考值C1,则可以将第二回环参考值Y设置为P‘(M),P‘(M)=C1,即为将时间戳参考值设置为第二回环参考值。第二轮回环处理完成后,可以生成第二轮次回环包及第二轮回环包的二轮回环包时间戳,再重新比较C1与二轮回环包时间戳,直至所有轮次回环均处理完成,最后一次回环即为目标轮次回环,最后一次回环对应的码流包即为目标码流包,即回环处理后的码流时间戳的时间戳长度均落在圆环的内部时,生成回环处理后的目标码流包。目标码流包包括目标时间戳,这样,通过中间转发层可以将目标码流包发送至播放渲染层即可。
在一些实施例中,如果C1>P1,即第一时间戳的时间戳长度P1小于时间戳参考值的参考长度C1时,由于P(I)是递增的,当P(I)逐渐增大时,存在某个时间点,使得C1=P(L),其中L>1。则C1与P(I)之间存在如下关系,即P(1)<P(2)<…<P(L-1)<P(L)=C1<P(L+1)<...<P(I),其中L为正整数。此时可以确定码流包的时间戳等于时间戳参考值的目标数据包,即目标数据包为第L个码流包。目标数据包确定完成后,显示设备200可以根据时间顺序和目标数据包确定转发包和待回环包。例如,对于前L-1个码流,播放器可以直接处理,为转发包,可以通过中间转发层将转发包发送至播放渲染层中的播放器,以使播放器播放转发包。从第L个码流包开始,需要对码流包的PTS执行回环处理。可以设置回环参考值为P(L),P(L)=C1,则可以将回环参考值设置为时间戳参考值C1。之后可以计算多个待回环包的时间戳与回环参考值的差值,以生成多个回环处理后的回环包时间戳。再比较回环包的时间戳与C1的关系,在回环包的时间戳超过C1时继续回环处理,直至最后一个回环包的回环包时间戳长度小于时间戳参考值的参考长度,至此,下行数据流处理完毕。
需要说明的是,经过回环处理后的码流时间戳的时间戳长度均落在圆环的内部,也就是说,经过回环处理后的码流时间戳的时间戳长度均小于时间戳参考值的参考长度,则处理后的流媒体码流的时间戳长度均小于处理器的处理位数。这样,显示设备200能够适配不同CPU处理器位数的流媒体码流PTS长度,可以克服CPU处理器与流媒体码流PTS长度不匹配的问题,处理器就可以处理时间戳长度大于其处理位数的流媒体码流,进而解决流媒体无法播放的问题。同时,通过对时间戳差值执行阈值监控,可以以此为依据调整应用层向播放器发送数据包的数量,进而使播放器端播放流媒体码流更流畅,所述显示设备在不需要额外增加设备部件的前提下,可以解决流媒体无法播放及播放过程中出现频繁卡顿的问题。步骤S4执行完成后,可以执行如下步骤S5。
步骤S5:显示设备200根据目标时间戳确定流媒体码流的播放位置,以及将播放位置发送至播放器。
与下行数据流的处理流程不同,上行数据流的处理流程主要是上报播放器播放流媒体码流的播放位置。在一些实施例中,显示设备200在生成回环处理后的目标码流包后,就可以获取到目标时间戳,并可以根据目标时间戳确定流媒体码流的播放位置,以及可以将播放位置发送至播放器。由于播放位置是经过PTS回环处理后的PTS值,因此需要对PTS值执行反回环处理,也就是需要对播放位置进行补偿。步骤S5执行完成后,可以执行如下步骤S6。
步骤S6:根据回环参考值对回环处理后的时间戳执行反回环处理,以补偿播放位置得到目标播放位置,以及控制播放器根据目标播放位置播放流媒体码流。
图13为本申请一些实施例提供的显示设备对回环处理后的时间戳执行反回环处理的流程示意图,如图13所示,在一些实施例中,显示设备200可以获取回环参考值和多个回环包时间戳,之后计算多个回环包时间戳与回环参考值的和值,以生成多个反回环数据包,再根据反回环数据包确定目标播放位置。
示例性的,图14为本申请一些实施例提供的显示设备对回环处理后的时间戳执行反回环处理的场景示意图,如图14所示,在一些实施例中,显示设备200在执行PTS反回环时,可以获取回环参考值Y,之后获取多个回环数据包对应的回环包时间戳如P‘(1)、P‘(2)…P‘(I),对于获取的每个回环数据包P‘(I),依次计算P‘(I)与Y的和值,标记为P(I)=P‘(I)+Y,经过反回环处理后的值即多个反回环数据包依次变为P(1),P(2),P(I)。由此,反回环处理后的P(I)可以恢复为应用层下发的码流包对应的码流时间戳。最后,可以根据反回环数据包确定目标播放位置,可以理解的是,该目标播放位置即为反回环处理后的、播放位置经过补偿后的位置,显示设备200控制播放器根据该目标播放位置播放流媒体码流即可。
由以上技术方案可知,上述实施例提供一种显示设备200,所述显示设备200获取流媒体码流及将流媒体码流打包为码流包;获取***处理器的处理位数及码流包中码流时间戳的时间戳长度;在时间戳长度大于处理位数时,根据处理位数设置时间戳参考值;以时间戳参考值为圆环对码流时间戳执行至少一轮回环处理,并记录回环处理过程中的回环参考值;在回环处理后的码流时间戳的时间戳长度均落在圆环的内部时,生成回环处理后的目标码流包;根据目标时间戳确定流媒体码流的播放位置并将播放位置发送至播放器;根据回环参考值对回环处理后的时间戳执行反回环处理,以及控制播放器根据目标播放位置播放流媒体码流。所述显示设备200能够适配不同CPU处理器位数的流媒体码流PTS长度,可以克服CPU处理器与流媒体码流PTS长度不匹配的问题,在不需要额外增加设备部件的前提下,解决流媒体无法播放及播放过程中出现频繁卡顿的问题。
基于上述显示设备200,本申请部分实施例还提供一种流媒体的播放方法,在一些实施例中,所述方法可以包括如下内容:
获取流媒体码流,以及将所述流媒体码流打包为码流包;
获取***处理器的处理位数,以及获取所述码流包中码流时间戳的时间戳长度;
在所述时间戳长度大于所述处理位数时,根据所述处理位数设置时间戳参考值;
以所述时间戳参考值为圆环对所述码流时间戳执行至少一轮回环处理,并记录回环处理过程中的回环参考值;以及在回环处理后的码流时间戳的时间戳长度均落在所述圆环的内部时,生成回环处理后的目标码流包;所述目标码流包包括目标时间戳;
根据所述目标时间戳确定流媒体码流的播放位置,以及将所述播放位置发送至播放器;
根据所述回环参考值对回环处理后的时间戳执行反回环处理,以补偿所述播放位置得到目标播放位置,以及控制所述播放器根据所述目标播放位置播放所述流媒体码流。
由以上技术方案可知,上述实施例提供一种流媒体的播放方法,所述方法能够适配不同CPU处理器位数的流媒体码流PTS长度,可以克服CPU处理器与流媒体码流PTS长度不匹配的问题,处理器就可以处理时间戳长度大于其处理位数的流媒体码流,进而解决流媒体无法播放的问题。同时,通过对时间戳差值执行阈值监控,可以以此为依据调整应用层向播放器发送数据包的数量,进而使播放器端播放流媒体码流更流畅,所述方法在不需要额外增加设备部件的前提下,可以解决流媒体无法播放及播放过程中出现频繁卡顿的问题。
本说明书中各个实施例之间相同相似的部分互相参照即可,在此不再赘述。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分的方法。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
为了方便解释,已经结合具体的实施方式进行了上述说明。但是,上述示例性的讨论不是意图穷尽或者将实施方式限定到上述公开的具体形式。根据上述的教导,可以得到多种修改和变形。上述实施方式的选择和描述是为了更好的解释原理以及实际的应用,从而使得本领域技术人员更好的使用所述实施方式以及适于具体使用考虑的各种不同的变形的实施方式。
Claims (10)
1.一种显示设备,其特征在于,包括:
显示器,被配置为显示用户界面;
控制器,被配置为:
获取流媒体码流,以及将所述流媒体码流打包为码流包;
获取***处理器的处理位数,以及获取所述码流包中码流时间戳的时间戳长度;
在所述时间戳长度大于所述处理位数时,根据所述处理位数设置时间戳参考值;
以所述时间戳参考值为圆环对所述码流时间戳执行至少一轮回环处理,并记录回环处理过程中的回环参考值;以及在回环处理后的码流时间戳的时间戳长度均落在所述圆环的内部时,生成回环处理后的目标码流包;所述目标码流包包括目标时间戳;
根据所述目标时间戳确定流媒体码流的播放位置,以及将所述播放位置发送至播放器;
根据所述回环参考值对回环处理后的时间戳执行反回环处理,以补偿所述播放位置得到目标播放位置,以及控制所述播放器根据所述目标播放位置播放所述流媒体码流。
2.根据权利要求1所述的显示设备,其特征在于,所述控制器进一步被配置为:
获取所述流媒体码流的传输方向;
按照所述传输方向将所述流媒体码流划分为上行数据流和下行数据流;所述上行数据流是由播放渲染层渲染数据流后将时间戳信息反馈至中间转发层,并由所述中间转发层上报至应用层的数据流;所述下行数据流为应用层将流媒体的数据源发送至中间转发层形成编码数据,并由所述中间转发层下发至播放渲染层的数据流;
打包所述下行数据流,以生成下行数据包。
3.根据权利要求2所述的显示设备,其特征在于,所述控制器执行打包所述下行数据流,以生成下行数据包的步骤,进一步被配置为:
解析所述下行数据流,以识别出所述下行数据流包括的播放窗口控件参数、数据编码类型、数据长度、数据时间戳、加密类型、音视频类型;
封装所述播放窗口控件参数、所述数据编码类型、所述数据长度、所述数据时间戳、所述加密类型、所述音视频类型,以生成下行数据包。
4.根据权利要求3所述的显示设备,其特征在于,所述控制器进一步被配置为:
获取所述下行数据包中的码流时间戳;
获取所述播放渲染层中播放器的播放时间戳;
计算所述码流时间戳与所述播放时间戳之间的时间戳差值;
对所述时间戳差值执行阈值监控。
5.根据权利要求4所述的显示设备,其特征在于,所述控制器进一步被配置为:
设置所述播放渲染层中数据缓存空间的阈值上限值、阈值中间值和阈值下限值;所述数据缓存空间用于缓存所述流媒体码流的数据帧;
如果所述时间戳差值小于所述阈值下限值,生成播放暂停指令和下发数据包指令,以及通过所述中间转发层将所述播放暂停指令发送至所述播放渲染层,通过所述中间转发层将所述下发数据包指令发送至所述应用层,以使所述播放渲染层根据所述播放暂停指令暂停播放流媒体码流,使所述应用层在接收到所述下发数据包指令后向所述播放渲染层下发下行数据包;
如果所述时间戳差值大于或等于所述阈值中间值,生成播放复位指令,以及通过所述中间转发层将所述播放复位指令发送至所述播放渲染层,以使所述播放渲染层在接收到所述播放复位指令后播放流媒体码流;
如果所述时间戳差值大于或等于所述阈值上限值,生成停止转发数据包指令,以及通过所述中间转发层将所述停止转发数据包指令发送至所述应用层,以使所述应用层在接收到所述停止转发数据包指令后停止下发流媒体码流。
6.根据权利要求2所述的显示设备,其特征在于,所述控制器进一步被配置为:
按照所述应用层下发所述流媒体码流的时间顺序获取多个码流包;
获取首个码流包的第一时间戳;所述首个码流包为多个所述码流包中按照时间顺序获取的第一个码流包;所述第一时间戳为所述首个码流包对应的码流时间戳;
如果所述第一时间戳的时间戳长度大于所述时间戳参考值的参考长度,将所述第一时间戳设置为第一回环参考值;
计算多个所述码流时间戳与所述第一回环参考值的差值,以生成多个回环包时间戳;所述回环包时间戳为多个所述码流包执行回环处理后的码流时间戳。
7.根据权利要求6所述的显示设备,其特征在于,所述控制器执行以所述时间戳参考值为圆环对所述码流时间戳执行至少一轮回环处理的步骤,进一步被配置为:
提取回环数据包,所述回环数据包为所述回环包时间戳等于所述时间戳参考值的数据包;
根据所述时间顺序和所述回环数据包确定转发包和待回环包;所述转发包为无需执行回环处理的码流包,以及通过所述中间转发层将所述转发包发送至所述播放渲染层中的播放器,以使所述播放器播放转发包;
将所述时间戳参考值设置为第二回环参考值;
计算多个所述回环包时间戳与所述第二回环参考值的差值,以生成多个二轮回环包时间戳。
8.根据权利要求7所述的显示设备,其特征在于,所述控制器进一步被配置为:
如果所述第一时间戳的时间戳长度小于所述时间戳参考值的参考长度,确定所述码流包的时间戳等于所述时间戳参考值的目标数据包;
根据所述时间顺序和所述目标数据包确定转发包和待回环包;
通过所述中间转发层将所述转发包发送至所述播放渲染层中的播放器,以使所述播放器播放转发包;
将所述时间戳参考值设置为回环参考值;
计算多个所述待回环包的时间戳与所述回环参考值的差值,以生成多个回环处理后的回环包时间戳。
9.根据权利要求8所述的显示设备,其特征在于,所述控制器执行根据所述回环参考值对回环处理后的时间戳执行反回环处理,以补偿所述播放位置得到目标播放位置的步骤,进一步被配置为:
获取所述回环参考值和多个所述回环包时间戳;
计算多个所述回环包时间戳与所述回环参考值的和值,以生成多个反回环数据包;
根据所述反回环数据包确定目标播放位置。
10.一种流媒体的播放方法,应用于权利要求1-9任一项所述的显示设备,所述显示设备包括显示器和控制器,其特征在于,所述方法包括:
获取流媒体码流,以及将所述流媒体码流打包为码流包;
获取***处理器的处理位数,以及获取所述码流包中码流时间戳的时间戳长度;
在所述时间戳长度大于所述处理位数时,根据所述处理位数设置时间戳参考值;
以所述时间戳参考值为圆环对所述码流时间戳执行至少一轮回环处理,并记录回环处理过程中的回环参考值;以及在回环处理后的码流时间戳的时间戳长度均落在所述圆环的内部时,生成回环处理后的目标码流包;所述目标码流包包括目标时间戳;
根据所述目标时间戳确定流媒体码流的播放位置,以及将所述播放位置发送至播放器;
根据所述回环参考值对回环处理后的时间戳执行反回环处理,以补偿所述播放位置得到目标播放位置,以及控制所述播放器根据所述目标播放位置播放所述流媒体码流。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311652826.1A CN117834963A (zh) | 2023-12-04 | 2023-12-04 | 一种显示设备及流媒体的播放方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311652826.1A CN117834963A (zh) | 2023-12-04 | 2023-12-04 | 一种显示设备及流媒体的播放方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117834963A true CN117834963A (zh) | 2024-04-05 |
Family
ID=90516339
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311652826.1A Pending CN117834963A (zh) | 2023-12-04 | 2023-12-04 | 一种显示设备及流媒体的播放方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117834963A (zh) |
-
2023
- 2023-12-04 CN CN202311652826.1A patent/CN117834963A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220263885A1 (en) | Adaptive media streaming method and apparatus according to decoding performance | |
CN110740363B (zh) | 投屏方法和***、电子设备 | |
US10154320B2 (en) | Dynamic time synchronization | |
KR101917174B1 (ko) | 전자 장치 사이의 스트림 전송 방법 및 그 방법을 처리하는 전자 장치 | |
CN107645491B (zh) | 媒体流传输设备和媒体服务设备 | |
CN110636346B (zh) | 一种码率自适应切换方法、装置、电子设备及存储介质 | |
US8321905B1 (en) | Fast switching of media streams | |
US10979785B2 (en) | Media playback apparatus and method for synchronously reproducing video and audio on a web browser | |
CN101364941B (zh) | 内容重放设备、方法和*** | |
WO2019170073A1 (zh) | 媒体播放 | |
KR20170074866A (ko) | 수신 장치, 송신 장치, 및 데이터 처리 방법 | |
JP2018509060A5 (zh) | ||
WO2021143360A1 (zh) | 资源传输方法及计算机设备 | |
KR101942269B1 (ko) | 웹 브라우저에서 미디어를 재생하고 탐색하는 장치 및 방법 | |
WO2021031739A1 (zh) | 云桌面视频播放方法、服务器、终端及存储介质 | |
US20170026439A1 (en) | Devices and methods for facilitating video and graphics streams in remote display applications | |
JP2018509060A (ja) | Mmtpストリームをmpeg−2 tsに変換する方法及び装置 | |
TW201249185A (en) | Method for dynamic adaptation of the reception bitrate and associated receiver | |
CN111182342A (zh) | 基于dlna的媒体数据播放方法、装置、设备以及存储介质 | |
WO2024022317A1 (zh) | 视频流的处理方法及装置、存储介质、电子设备 | |
US20180152670A1 (en) | Recording Video from a Bitstream | |
US20200329388A1 (en) | Miracast Framework Enhancements For Direct Streaming Mode | |
CN114554277B (zh) | 多媒体的处理方法、装置、服务器及计算机可读存储介质 | |
Bailey | Live Video Streaming from Android-Enabled Devices to Web Browsers | |
CN117834963A (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 |