CN116801021A - 分布式的流媒体播放系统、方法、设备及存储介质 - Google Patents
分布式的流媒体播放系统、方法、设备及存储介质 Download PDFInfo
- Publication number
- CN116801021A CN116801021A CN202310679080.7A CN202310679080A CN116801021A CN 116801021 A CN116801021 A CN 116801021A CN 202310679080 A CN202310679080 A CN 202310679080A CN 116801021 A CN116801021 A CN 116801021A
- Authority
- CN
- China
- Prior art keywords
- time stamp
- video data
- target
- audio
- timestamp
- 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 56
- 238000009877 rendering Methods 0.000 claims abstract description 154
- 238000012545 processing Methods 0.000 claims abstract description 80
- 238000012937 correction Methods 0.000 claims abstract description 44
- 230000001360 synchronised effect Effects 0.000 claims abstract description 27
- 238000005070 sampling Methods 0.000 claims description 39
- 230000003044 adaptive effect Effects 0.000 claims description 28
- 238000004806 packaging method and process Methods 0.000 claims description 24
- 238000004590 computer program Methods 0.000 claims description 22
- 238000005538 encapsulation Methods 0.000 claims description 20
- 230000005540 biological transmission Effects 0.000 claims description 11
- 238000012952 Resampling Methods 0.000 claims description 8
- 238000004891 communication Methods 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 238000011161 development Methods 0.000 description 4
- 230000005236 sound signal Effects 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 239000003086 colorant Substances 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Abstract
本申请实施例提供一种分布式的流媒体播放系统、方法、设备及存储介质。在本申请实施例中,将前端处理模块和后端渲染模块解耦,在前端处理模块执行解复用和解码操作,并对得到音频数据和视频数据分别对应的时间戳进行递增校正,为后续进行同步渲染提供基础,由后端渲染模块将时戳校准后的音频数据及其时间戳,以及视频数据及其时间戳分别添加至第一队列和第二队列中以等待渲染。只需按需对第一队列和第二队列中的音频数据和视频数据进行时戳同步,提高了渲染效率,减少声音和画面不同步以及画面间断的情况,实现无缝衔接播放,提升用户体验感。
Description
技术领域
本申请涉及音视频处理技术领域,尤其涉及一种分布式的流媒体播放系统、方法、设备及存储介质。
背景技术
流媒体是采用流式传输技术在网络上连续实时播放的媒体格式,流媒体数据流的封装格式、视频编码方式、音频编码方式等经常发生变化。例如,流媒体传输协议(HTTPLive Streaming,HLS)存在不连续(discontinuity)模式,如,一条HLS流包括不同的内容,例如主视频和内嵌于主视频中的广告内容,不同内容可能采用不同的封装格式、不同的编码方式或不同的分辨率等。流媒体在不同内容间进行切换时,播放器的播放过程可能会出现声音和画面不同步以及画面间断的情况,影响用户体验。
发明内容
本申请的多个方面提供一种分布式的流媒体播放系统、方法、设备及存储介质,用以实现无缝衔接播放。
本申请实施例提供一种分布式的流媒体播放系统,包括:前端处理模块以及与前端处理模块解耦的后端渲染模块,后端渲染模块能够基于不同渲染框架实现;
前端处理模块,用于获取流媒体数据流,流媒体数据流包括不同封装格式和/或不同的编码方式的多个音视频数据包;针对每个音视频数据包按照其适配的封装格式和编码方式分别执行解复用操作和解码操作,得到目标音频数据及其第一时间戳,以及目标视频数据及其第二时间戳;若第一时间戳与之前的音频数据的第三时间戳是非顺序递增的,则根据前一音频数据的第三时间戳,对第一时间戳进行时戳递增校正,得到目标音频数据的第三时间戳;若第二时间戳与之前的视频数据的第四时间戳是非连续递增的,则根据前一视频数据的第四时间戳,对第二时间戳进行时戳递增校正,得到目标视频数据的第四时间戳,第三时间戳与第四时间戳对应;将目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳提供给后端渲染模块;
后端渲染模块,用于将目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳分别添加至第一队列和第二队列中;按序对第一队列和第二队列中的音频数据和视频数据进行渲染,当渲染到目标音频数据和目标视频数据的情况下,根据目标音频数据的第三时间戳,以及目标视频数据的第四时间戳,对目标音频数据和目标视频数据进行同步渲染,以实现音视频的同步播放。
本申请实施例还提供一种分布式的流媒体播放方法,应用于分布式的流媒体播放系统,该系统包括:前端处理模块以及与前端处理模块解耦的后端渲染模块,后端渲染模块能够基于不同渲染框架实现;该方法包括:
前端处理模块获取流媒体数据流,流媒体数据流包括不同封装格式和/或不同编码方式的多个音视频数据包;针对每个音视频数据包按照其适配的封装格式和编码方式分别执行解复用和解码操作,得到目标音频数据及其第一时间戳,以及目标视频数据及其第二时间戳;若第一时间戳与之前的音频数据的第三时间戳是非顺序递增的,则根据前一音频数据的第三时间戳,对第一时间戳进行时戳递增校正,得到目标音频数据的第三时间戳;若第二时间戳与之前的视频数据的第四时间戳是非连续递增的,则根据前一视频数据的第四时间戳,对第二时间戳进行时戳递增校正,得到目标视频数据的第四时间戳,第三时间戳与第四时间戳对应;将目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳提供给后端渲染模块;
后端渲染模块将目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳分别添加至第一队列和第二队列中;按序对第一队列和第二队列中的音频数据和视频数据进行渲染,当渲染到目标音频数据和目标视频数据的情况下,根据目标音频数据的第三时间戳,以及目标视频数据的第四时间戳,对目标音频数据和目标视频数据进行同步渲染,以实现音视频的同步播放。
本申请实施例还提供一种分布式的流媒体播放方法,适应于部署于第一终端设备上的前端处理模块,该方法包括:
获取流媒体数据流,流媒体数据流包括不同封装格式和/或不同编码方式的多个音视频数据包;
针对每个音视频数据包按照其适配的封装格式和编码方式分别执行解复用和解码操作,得到目标音频数据及其第一时间戳,以及目标视频数据及其第二时间戳;
若第一时间戳与之前的音频数据的第三时间戳是非顺序递增的,则根据前一音频数据的第三时间戳,对第一时间戳进行时戳递增校正,得到目标音频数据的第三时间戳;
若第二时间戳与之前的视频数据的第四时间戳是非连续递增的,则根据前一视频数据的第四时间戳,对第二时间戳进行时戳递增校正,得到目标视频数据的第四时间戳,第三时间戳与第四时间戳对应;将目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳提供给第二终端设备上的后端渲染模块,以供后端渲染模块将目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳分别添加至第一队列和第二队列中以等待渲染,并在渲染到目标音频数据和目标视频数据的情况下,根据目标音频数据的第三时间戳,以及目标视频数据的第四时间戳,对目标音频数据和目标视频数据进行同步渲染,以实现音视频的同步播放。
本申请实施例还提供一种分布式的流媒体播放方法,适用于第二终端设备上的后端渲染设备,该方法包括:
接收部署在第一终端设备上的前端处理模块提供的目标音频数据及其对应的第一时间戳,以及目标视频数据及其第二时间戳;前端处理模块获取流媒体数据流,流媒体数据流包括不同封装格式和/或不同编码方式的多个音视频数据包;针对每个音视频数据包按照其适配的封装格式和编码方式分别执行解复用操作和解码操作,得到目标音频数据及其第一时间戳,以及目标视频数据及其第二时间戳;若第一时间戳与之前的音频数据的第三时间戳是非顺序递增的,则根据前一音频数据的第三时间戳,对第一时间戳进行时戳递增校正,得到目标音频数据的第三时间戳;若第二时间戳与之前的视频数据的第四时间戳是非连续递增的,则根据前一视频数据的第四时间戳,对第二时间戳进行时戳递增校正,得到目标视频数据的第四时间戳,第三时间戳与第四时间戳对应;将目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳分别添加至第一队列和第二队列中;按序对第一队列和第二队列中的音频数据和视频数据进行渲染,当渲染到目标音频数据和目标视频数据的情况下,根据目标音频数据的第三时间戳,以及目标视频数据的第四时间戳,对目标音频数据和目标视频数据进行同步渲染,以实现音视频的同步播放。
本申请实施例还提供一种终端设备,包括:存储器和处理器;存储器,用于存储计算机程序;处理器,与存储器耦合,用于执行计算机程序,以实现本申请实施例提供的分布式的流媒体播放方法中的各步骤。
本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,当计算机程序被处理器执行时,致使处理器实现本申请实施例提供的分布式的流媒体播放方法中的各步骤。
在本申请实施例中,将前端处理模块和后端渲染模块解耦,在前端处理模块执行解复用和解码操作,并对得到音频数据和视频数据分别对应的时间戳进行递增校正,为后续进行同步渲染提供基础,由后端渲染模块将时戳校准后的音频数据及其时间戳,以及视频数据及其时间戳分别添加至第一队列和第二队列中以等待渲染。只需按需对第一队列和第二队列中的音频数据和视频数据进行时戳同步,提高了渲染效率,减少声音和画面不同步以及画面间断的情况,实现无缝衔接播放,提升用户体验感。
进一步,由于前端处理模块和后端渲染模块实现了解耦后端渲染模块成为可插拔的结构,可兼容不同硬件平台,实现了前端处理模块的高度复用,节省开发资源。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请示例性实施例提供的一种分布式的流媒体播放系统的结构示意图;
图2为本申请示例性实施例提供的一种分布式的流媒体播放方法的流程示意图;
图3为本申请示例性实施例提供的另一种分布式的流媒体播放方法的流程示意图;
图4为本申请示例性实施例提供的又一种分布式的流媒体播放方法的流程示意图;
图5为本申请示例性实施例提供的一种终端设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
针对上述播放器的播放过程可能会出现声音和画面不同步以及画面间断的情况,影响用户体验的问题,在本申请实施例中,将前端处理模块和后端渲染模块解耦,在前端处理模块执行解复用和解码操作,并对得到音频数据和视频数据分别对应的时间戳进行递增校正,为后续进行同步渲染提供基础,由后端渲染模块将时戳校准后的音频数据及其时间戳,以及视频数据及其时间戳分别添加至第一队列和第二队列中以等待渲染。只需按需对第一队列和第二队列中的音频数据和视频数据进行时戳同步,提高了渲染效率,减少声音和画面不同步以及画面间断的情况,实现无缝衔接播放,提升用户体验感。
进一步,由于前端处理模块和后端渲染模块实现了解耦后端渲染模块成为可插拔的结构,可兼容不同硬件平台,实现了前端处理模块的高度复用,节省开发资源。
以下结合附图,对本申请实施例提供的一种解决方案进行详细说明。
图1为本申请示例性实施例提供的一种分布式的流媒体播放系统的结构示意图。如图1所示,该系统包括:前端处理模块101以及与该前端处理模块101解耦的后端渲染模块102,后端渲染模块102能够基于不同的渲染框架实现。
在本实施例中,由于前端处理模块101与后端渲染模块102之间解耦,后端渲染模块102实现为可插拔结构,能够基于不同的渲染框架实现,使得前端处理模块101成为高度复用的模块,以节省开发资源。其中,后端渲染模块102的具体实现与硬件相关,可以针对不同硬件平台独立设计后端渲染模块102,例如,安卓(Android)和IOS平台的渲染引擎基于针对嵌入式设备的开放图形库(Open Graphics Library for Embedded Systems,OpenGLES)实现,又例如,移动端操作系统(Windows Phone8,WP8)和应用商场(Windows Store)的渲染引擎基于DirectX11 API实现,其中,DirectX11 API是一种多媒体编程接口,属于应用程序接口(API)。
在本实施例中,流媒体(streaming media)是指以流的形式在网络(如,互联网或无线移动网络等)上进行音视频内容的传输的技术。其中,将视频数据和音频数据分别进行编码之后,再对编码后的音频数据和视频数据进行封装,得到封装后的音视频数据包,多个音视频数据包按照一定的时间间隔要求连续地发送给接收方形成流媒体数据流,接收方获取流媒体数据流,即不断接收音视频数据包,后续对不断到达的音视频数据包进行解封装、解码以及渲染播放。在本实施例中,由前端处理模块和后端渲染模块相互结合,以实现接收方执行的动作。
具体地,前端处理模块获取流媒体数据流,流媒体数据流中包括多个音视频数据包,其中,多个音视频数据包中可能主视频和辅视频,主视频可以是直播内容、电视剧内容或综艺内容等,辅视频可能是广告内容;或者多个音视频数据包不同的音视频内容,例如,剪辑视频中包括来自不同视频源的音视频片段。无论是上述哪种情况,多个音视频数据包可能包括一部分封装格式和编码方式均相同的音视频数据包A1,多个音视频数据包还包括:与该音视频数据包A1封装格式相同,但编码方式不相同的音视频数据包A2,或者还包括与该音视频数据包A1封装格式不相同,编码方式相同的音视频数据包A3,或者多个音视频数据包同时包括音视频数据包A1、音视频数据包A2以及音视频数据包A3;其中,编码方式不相同,可以指音频编码方式不相同,也可以是视频编码方式不相同,或者音频编码方式和视频编码方式同时不相同。其中,音视频数据包采用的封装格式可以包含但不限于:动态图像专家组(Moving Picture Experts Group 4,MP4)、数码电影视频技术的文件格式(Moviedigital video technology,MOV)、音频视频交错格式(Audio Video Interleaved,AVI)、媒体封装格式(MatrosKa Video,MKV)以及流媒体格式(FlashVideo,FLV)等;音频的编码方式可以包含但不限于:动态影像专家压缩标准音频层面3(Moving Picture Experts GroupAudio Layer III,MP3)、高级音频编码(Advanced Audio Coding,AAC)以及有损声音编码的格式(opus)等;视频编码格式包含但不限于:高效率视频编码(High Efficiency VideoCoding,H.265)、高级视频编码(Advanced Video Coding,H.264)以及视频压缩格(VP8)等。
在本实施例中,前端处理模块针对每个音视频数据包,按照其适配的封装格式和编码方式分别执行解复用操作和解码操作,得到目标音频数据及其第一时间戳,以及目标视频数据及其第二时间戳。其中,解复用操作主要是将音视频数据包中分离出已经压缩的音频数据和视频数据,解码操作是指对已经压缩后的音频数据和视频数据进行解压缩的过程。其中,目标音频数据可以是脉冲调制编码(Pulse-Code Modulation,PCM)数据,目标视频数据可以是YUV数据,其中,YUV是一种色彩编码模式,Y表示亮度(Luminance),也就是灰度值,UV分别表示色度(Chrominance)和浓度(Chroma),作用是描述图像色彩和饱和度,用于指定像素的颜色。例如,该第一时间戳可以是显示时间戳(Presentation Time Stamp,PTS),该第二时间戳也可以是显示时间戳PTS。
在本实施例中,由于不同音视频数据包解码出的时间戳可能并不连续,例如,针对当前音视频数据包解码出的目标音频数据的时间戳,与之前解码得到的音频数据的时间戳并不是顺序递增的,而按照不是顺序递增的第一时间戳渲染目标音频数据,可能会出现声音和画面不同步以及画面间断的情况,无法实现无缝衔接播放,影响用户的观看体验。基于此,在时戳不连续的情况下,对时间戳进行时戳递增校正,基于递增校正后的时间戳进行同步渲染播放,使得声音和画面同步,且不间断,实现无缝衔接。
具体地,每个音频数据对应有播放时间戳,为了便于区分和描述,将音频数据的播放时间戳称为第三时间戳。针对流媒体数据流中的第一个音视频数据包执行解复用操作和解码操作后,得到音频数据及其第一时间戳,可以将该音频数据的第一时间戳直接作为其第三时间戳。
针对流媒体数据流中非第一个音视频数据包,前端处理模块判断第一时间戳与之前的音频数据的第三时间戳是否是顺序递增的,其中,之前的音频数据是指对之前的音视频数据包执行解复用操作和解码操作得到的音频数据。例如,若第一时间戳与前一音频数据的差值小于设定的第一时间阈值,则认为第一时间戳与之前的音频数据之间是非顺序递增的;若第一时间戳与前一音频数据之间的差值大于或等于设定的第一时间阈值,则认为第一时间戳与之前的音频数据之间是顺序递增的,例如,该第一时间阈值可以是0、0.1ms或0.5us等。
例如,流媒体数据流中的不同音视频数据包切换时,解复用模块和解码模块重启,对切换后的音视频数据包执行解复用和解码操作后,得到的音频数据的第一时间戳可能从0开始,上述第一时间阈值实现为0,此时,第一时间戳与之前的音频数据的第三时间戳的差值为负值,该负值小于第一时间阈值0,则认为第一时间戳与之前的音频数据的第三时间戳之间是非顺序递增的。又例如,若音频数据的采样率是44100Hz,第一帧音频数据的时间戳为0,第二帧音频数据的时间戳为0.0000227s(1/44100),第三帧音频数据的时间戳为0.0000454s(2/44100),其中,第一帧音频数据、第二帧音频数据以及第三帧音频数据之间是顺序递增的。
其中,若第一时间戳与之前的音频数据的第三时间戳是非顺序递增的,则根据前一音频数据的第三时间戳,对第一时间戳进行时戳递增校正,得到目标音频数据的第三时间戳,使得第三时间戳与之前的音频数据的第三时间戳是顺序递增的。可选地,若第一时间戳与之前的音频数据的第三时间戳是顺序递增的,则直接将该第一时间戳作为第三时间戳。可选地,可以根据之前的音频数据的第三时间戳,确定音频数据之间的第一时间间隔,例如,取之前的任意相邻的两帧音频数据,将该两帧音频数据的第三时间戳之差作为第一时间间隔,或者,将目标音频数据帧之前的两帧音频数据的第三时间戳之差作为第一时间间隔。将前一音频数据的第三时间戳与第一时间间隔之和作为目标音频数据的第三时间戳。
在本实施例中,每个视频数据对应有播放时间戳,为了便于区分和描述,将视频数据的播放时间戳称为第四时间戳。针对流媒体数据流中的第一个音视频数据包执行解复用操作和解码操作后,得到视频数据及其第二时间戳,可以将该视频数据的第二时间戳直接作为其第四时间戳。
针对流媒体数据流中非第一个音视频数据包,前端处理模块判断第二时间戳与之前的视频数据的第四时间戳是否是顺序递增的,其中,之前的视频数据是指对之前的音视频数据包执行解复用操作和解码操作得到的音频数据。例如,若第二时间戳与前一视频数据之间的差值小于设定的时间阈值,则认为第二时间戳与之前的视频数据之间是非顺序递增的;若第二时间戳与前一视频数据之间的差值小于或等于设定的第二时间阈值,则认为第二时间戳与之前的视频数据之间是顺序递增的,例如,该第二时间阈值可以是0、0.04或0.001等。
例如,流媒体数据流中的不同音视频数据包切换时,解复用模块和解码模块重启,对切换后的音视频数据包执行解复用和解码操作后,得到的视频数据的第二时间戳可能从0开始,上述第二时间阈值实现为0,此时,第二时间戳与之前的音频数据的第四时间戳的差值为负值,该负值小于第二时间阈值0,则认为第二时间戳与之前的视频数据的第四时间戳之间是非顺序递增的。又例如,若视频数据的帧率是25(帧/秒fps),第一帧视频数据的时间戳为0,第二帧视频数据的时间戳为0.04s(1/25),第三帧视频数据的时间戳为0.08s(2/25),其中,第一帧视频数据、第二帧视频数据以及第三帧视频数据之间是顺序递增的。
其中,若第二时间戳与之前的音频数据的第四时间戳是非顺序递增的,则根据前一视频数据的第四时间戳,对第二时间戳进行时戳递增校正,得到目标音频数据的第四时间戳,使得第四时间戳与之前的视频数据的第四时间戳是顺序递增的。可选地,若第二时间戳与之前的视频数据的第四时间戳是顺序递增的,则直接将该第二时间戳作为第四时间戳。
可选地,可以根据之前的视频数据的第四时间戳,确定视频数据之间的第二时间间隔,例如,取之前的任意相邻的两帧音频数据,将该两帧音频数据的第三时间戳之差作为第一时间间隔,或者,将目标音频数据帧之前的两帧音频数据的第三时间戳之差作为第一时间间隔。或者,可以获取视频帧率,将帧率的倒数直接作为第二时间间隔。将前一视频数据的第四时间戳与第二时间间隔之和作为目标视频数据的第四时间戳。
在本实施例中,后端渲染模块维护有存放音频数据及其第三时间戳的第一队列,以及存放视频数据及其第四时间戳的第二队列,在前端处理模块和后端渲染模块分离解耦的情况下,基于该第一队列和第二队列缓存音频数据和视频数据,并进行音视频的同步渲染播放,可以实现音视频画面的无缝衔接播放。
具体地,前端处理模块可以将目标音频数据及其第三时间戳、目标视频数据及其第四时间戳提供给后端渲染模块,由后端渲染模块将目标音频数据及其第三时间戳添加至第一队列,将目标视频数据及其第四时间戳添加至第二队列中。例如,可以按照时间戳的先后顺序,向第一队列和第二队列中添加相应的数据。
后端渲染模块可以按序对第一队列和第二队列中的音频数据和视频数据进行渲染。其中,目标音频数据的第三时间戳和目标视频数据的第四时间戳之间具有对应关系,该对应关系是指使得声音与画面同步的关系。当渲染到目标音频数据和目标视频数据的情况下,根据目标音频数据的第三时间戳,以及目标视频数据的第四时间戳,对目标音频数据和目标视频数据进行同步渲染,以实现音视频的同步播放。
在本申请实施例中,将前端处理模块和后端渲染模块解耦,在前端处理模块执行解复用和解码操作,并对得到音频数据和视频数据分别对应的时间戳进行递增校正,为后续进行同步渲染提供基础,由后端渲染模块将时戳校准后的音频数据及其时间戳,以及视频数据及其时间戳分别添加至第一队列和第二队列中以等待渲染。只需按需对第一队列和第二队列中的音频数据和视频数据进行时戳同步,提高了渲染效率,减少声音和画面不同步以及画面间断的情况,实现无缝衔接播放,提升用户体验感。
进一步,由于前端处理模块和后端渲染模块实现了解耦后端渲染模块成为可插拔的结构,可兼容不同硬件平台,实现了前端处理模块的高度复用,节省开发资源。
在一可选实施例中,针对每个音视频数据包按照其适配的封装格式和编码方式分别执行解复用操作和解码操作,得到原始音频数据及其第一时间戳,以及原始视频数据及其第二时间戳;具体地,可以按照音视频数据包适配的封装方式对该音视频数据包执行解复用操作,得到音频编码数据包和视频编码数据包;针对音频编码数据包采用与其适配的音频编码方式,执行解码操作,得到原始音频数据及其第一时间戳;针对视频编码数据包采用与其适配的视频编码方式,执行解码操作,得到原始视频数据及其第二时间戳。
针对原始视频数据,直接将原始视频数据作为目标视频数据,或者可以对原始视频数据进行分辨率转换等操作,得到目标视频数据,对此不做限定。
针对原始音频数据,原始音频数据的播放参数可能不符合播放需求,因此,需要按照预设音频播放信息对解码得到的原始音频数据进行重采样,使得重采样后的音频参数符合该预设音频播放信息。其中,重采样是指一种改变音频参数的采样技术,可以根据预设音频播放信息对原始音频数据进行重采样,得到与预设音频播放信息适配的目标音频数据。其中,预设音频播放信息是一种对音频播放参数的预设信息,预设音频播放信息包括以下至少一种音频参数:预设音频采样频率、预设音频通道数量或预设音频采样位深。
其中,音频采样频率是指在一秒钟内对音频数据采集多少个采样点,例如,音频采样频率为44.1kHz(44100Hz)是指在一秒钟内采集了44100个采样点(采样点表示了这个音频数据的大小,也称为振幅),例如,音频采样频率还可以是8kHz,16kHz,32kHz或48kHz等;音频通道数量是声音的通道数目,例如,单声道、立体声(双声道)以及四声环绕(四声道)等;采样后需要量化采样点,每个采样点会有对应量化的数值,音频采样位深是指每个采样点用多少比特(bit)来表示,例如,16比特或32比特等,从物理意义上来说,采样位深代表的是振动幅度的精确程度或者粒度。
可选地,预设音频播放信息包括以下至少一种音频参数:预设音频采样频率、预设音频通道数量或预设音频采样位深。前端处理模块,在根据预设音频播放信息对原始音频数据进行重采样,得到与该预设音频播放信息适配的目标音频数据时,具体用于:获取原始音频数据的原始音频播放信息,该原始音频播放信息可以在对音视频数据包进行解码时得到的,其中,原始音频播放信息包括以下音频参数:原始音频采样频率、原始音频通道数量以及原始音频采样位深;对于预设音频播放信息中存在的音频参数,若原始音频播放信息与预设音频播放信息存在不相同的目标音频参数,则针对目标音频参数对原始音频数据进行重采样,得到与预设音频播放信息适配的目标音频数据。其中,目标音频参数的数量可以是一个,也可以是多个。
例如,目标音频参数实现为音频采样频率,原始音频播放信息中的原始采样频率为8khz,预设音频播放信息中的采样频率为16khz,则以采样频率为16khz对原始音频数据进行重采样,得到与预设音频播放信息适配的目标音频数据。又例如,目标音频参数实现为音频通道数量和音频采样位深,原始音频播放信息中的原始音频通道数量和原始音频采样位深分别为单通道和16比特,预设音频播放信息中的音频通道数量和音频位深分别为双通道和32比特,则以音频通道数量是双通道,音频采样位深是32比特,对原始音频数据进行重采样,得到与预设音频播放信息适配的目标音频数据。
在一可选实施例中,后端渲染模块还可以实现人机交互操作,用户可以修改预设的音频播放信息,后端渲染模块可以响应于针对任一预设音频播放信息的修改操作,获取修改后的目标音频参数值,将目标音频参数值提供给前端处理模块;前端处理模块还用于:根据目标音频参数值的参数类型,确定与参数类型一致的待替换音频参数值;将待替换音频参数值替换为目标音频参数值。音频播放参数的参数类型为:采样频率类型、通道类型以及采样位深类型。
在一可选实施例中,后端渲染模块在根据目标音频数据的第三时间戳,以及目标视频数据的第四时间戳,对目标音频数据和目标视频数据进行同步渲染之前,还用于:获取后端渲染模块当前的显示模式信息。显示模式包括但不限于:适应屏幕(fit)模式或裁剪(clip)模式等,例如,当目标视频数据的长宽比与屏幕的长宽比不相同时,在fit模式下,自动调整目标视频数据的尺寸信息,进行适当的缩小或放大,以保持显示的完整性而不拉伸变形。又例如,当目标视频数据的长宽比与屏幕的长宽比不相同时,在裁剪模式下,适当的裁剪目标视频数据的宽度或者高度,使得目标视频数据填充屏幕。具体地,根据当前的显示模式信息,对目标视频数据进行尺寸调整,得到与显示模式信息适配的目标视频数据,以实现后续对目标视频数据的适配渲染,使得目标视频数据与之前的视频数据的显示更加流畅,不突兀,提升用户体验感。
在本实施例中,并不限定前端处理模块与后端渲染模块的部署方式。在一可选实施例中,前端处理模块与后端渲染模块部署同一终端设备上;在另一可选实施例中,前端处理模块与后端渲染模块分别部署在不同的第一终端设备和第二终端设备上;第一终端设备和第二终端设备之间通过数据线USB或高清多媒体接口(High Definition MultimediaInterface,HDMI)进行有线连接,或者第一终端设备和第二终端设备之间通过毫米波高清多媒体接口HDMI进行无线连接,以实现第一终端设备和第二终端设备之间的数据传输;前端处理模块具体用于:通过第一终端设备和第二终端设备之间的有线连接或无线连接,将目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳提供给后端渲染模块。其中,毫米波HDMI是一款高频毫米波无线投屏器,该投屏器采用60GHz独立无线高频传输,可有效避免众多2.4G/5GHz低频电子设备干扰,支持4k震撼高清传输,画面无延迟不卡顿。
本申请实施例除了提供系统实施例之外,还提供了分布式的流媒体播放方法,下面对本申请实施例提供的分布式的流媒体播放方法的过程进行说明。
图2为本申请示例性实施例提供的一种分布式的流媒体播放方法的流程示意图,该方法应用于分布式的流媒体播放系统,该系统包括:前端处理模块以及与前端处理模块解耦的后端渲染模块,后端渲染模块能够基于不同渲染框架实现;如图2所示,该方法包括:
201、前端处理模块获取流媒体数据流,流媒体数据流包括不同封装格式和/或不同编码方式的多个音视频数据包;
202、针对每个音视频数据包按照其适配的封装格式和编码方式分别执行解复用和解码操作,得到目标音频数据及其第一时间戳,以及目标视频数据及其第二时间戳;
203、若第一时间戳与之前的音频数据的第三时间戳是非顺序递增的,则根据前一音频数据的第三时间戳,对第一时间戳进行时戳递增校正,得到目标音频数据的第三时间戳;
204、若第二时间戳与之前的视频数据的第四时间戳是非连续递增的,则根据前一视频数据的第四时间戳,对第二时间戳进行时戳递增校正,得到目标视频数据的第四时间戳,第三时间戳与第四时间戳对应;
205、将目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳提供给后端渲染模块;
206、后端渲染模块将目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳分别添加至第一队列和第二队列中;
207、按序对第一队列和第二队列中的音频数据和视频数据进行渲染,当渲染到目标音频数据和目标视频数据的情况下,根据目标音频数据的第三时间戳,以及目标视频数据的第四时间戳,对目标音频数据和目标视频数据进行同步渲染,以实现音视频的同步播放。
在一可选实施例中,针对每个音视频数据包按照其适配的封装格式和编码方式分别执行解复用操作和解码操作,得到目标音频数据及其第一时间戳,以及目标视频数据及其第二时间戳,包括:针对每个音视频数据包按照其适配的封装格式和编码方式分别执行解复用操作和解码操作,得到原始音频数据及其第一时间戳,以及原始视频数据及其第二时间戳;根据预设音频播放信息对原始音频数据进行重采样,得到与预设音频播放信息适配的目标音频数据;预设音频播放信息包括以下至少一种音频参数:预设音频采样频率、预设音频通道数量或预设音频采样位深;将原始视频数据作为目标视频数据。
在一可选实施例中,根据前一音频数据的第三时间戳,对第一时间戳进行时戳递增校正,得到目标音频数据的第三时间戳,包括:根据之前的音频数据的第三时间戳,确定音频数据之间的第一时间间隔;将前一音频数据的第三时间戳与第一时间间隔之和作为目标音频数据的第三时间戳。根据前一视频数据的第四时间戳,对第二时间戳进行时戳递增校正,得到目标视频数据的第四时间戳,包括:根据之前的视频数据的第四时间戳,确定视频数据之间的第二时间间隔;将前一视频数据的第四时间戳与第二时间间隔之和作为目标视频数据的第四时间戳。
在一可选实施例中,后端渲染模块在根据目标音频数据的第三时间戳,以及目标视频数据的第四时间戳,对目标音频数据和目标视频数据进行同步渲染之前,还用于:获取后端渲染模块当前的显示模式信息;根据当前的显示模式信息,对目标视频数据进行尺寸调整,得到与显示模式信息适配的目标视频数据。
图3为本申请示例性实施例提供的另一种分布式的流媒体播放方法的流程示意图,该方法适应于部署于第一终端设备上的前端处理模块,如图3所示,该方法包括:
301、获取流媒体数据流,流媒体数据流包括不同封装格式和/或不同编码方式的多个音视频数据包;
302、针对每个音视频数据包按照其适配的封装格式和编码方式分别执行解复用和解码操作,得到目标音频数据及其第一时间戳,以及目标视频数据及其第二时间戳;
303、若第一时间戳与之前的音频数据的第三时间戳是非顺序递增的,则根据前一音频数据的第三时间戳,对第一时间戳进行时戳递增校正,得到目标音频数据的第三时间戳;
304、若第二时间戳与之前的视频数据的第四时间戳是非连续递增的,则根据前一视频数据的第四时间戳,对第二时间戳进行时戳递增校正,得到目标视频数据的第四时间戳,第三时间戳与第四时间戳对应;
305、将目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳提供给第二终端设备上的后端渲染模块,以供后端渲染模块将目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳分别添加至第一队列和第二队列中以等待渲染,并在渲染到目标音频数据和目标视频数据的情况下,根据目标音频数据的第三时间戳,以及目标视频数据的第四时间戳,对目标音频数据和目标视频数据进行同步渲染,以实现音视频的同步播放。
在一可选实施例中,针对每个音视频数据包按照其适配的封装格式和编码方式分别执行解复用操作和解码操作,得到目标音频数据及其第一时间戳,以及目标视频数据及其第二时间戳,包括:针对每个音视频数据包按照其适配的封装格式和编码方式分别执行解复用操作和解码操作,得到原始音频数据及其第一时间戳,以及原始视频数据及其第二时间戳;根据预设音频播放信息对原始音频数据进行重采样,得到与预设音频播放信息适配的目标音频数据;预设音频播放信息包括以下至少一种音频参数:预设音频采样频率、预设音频通道数量或预设音频采样位深;将原始视频数据作为目标视频数据。
在一可选实施例中,根据前一音频数据的第三时间戳,对第一时间戳进行时戳递增校正,得到目标音频数据的第三时间戳,包括:根据之前的音频数据的第三时间戳,确定音频数据之间的第一时间间隔;将前一音频数据的第三时间戳与第一时间间隔之和作为目标音频数据的第三时间戳。根据前一视频数据的第四时间戳,对第二时间戳进行时戳递增校正,得到目标视频数据的第四时间戳,包括:根据之前的视频数据的第四时间戳,确定视频数据之间的第二时间间隔;将前一视频数据的第四时间戳与第二时间间隔之和作为目标视频数据的第四时间戳。
在一可选实施例中,第一终端设备和第二终端设备之间通过数据线USB或高清多媒体接口HDMI进行有线连接,或者第一终端设备和第二终端设备之间通过毫米波HDMI进行无线连接,以实现第一终端设备和第二终端设备之间的数据传输;将目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳提供给第二终端设备上的后端渲染模块,包括:前端处理模块通过第一终端设备和第二终端设备之间的有线连接或无线连接,将目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳提供给第二终端设备上的后端渲染模块。
图4为本申请示例性实施例提供的又一种分布式的流媒体播放方法的流程示意图,该方法适用于第二终端设备上的后端渲染设备,如图4所示,该方法包括:
401、接收部署在第一终端设备上的前端处理模块提供的目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳;
402、将目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳分别添加至第一队列和第二队列中;
403、按序对第一队列和第二队列中的音频数据和视频数据进行渲染,当渲染到目标音频数据和目标视频数据的情况下,根据目标音频数据的第三时间戳,以及目标视频数据的第四时间戳,对目标音频数据和目标视频数据进行同步渲染,以实现音视频的同步播放;其中,前端处理模块生成目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳的过程,如下:获取流媒体数据流,流媒体数据流包括不同封装格式和/或不同编码方式的多个音视频数据包;针对每个音视频数据包按照其适配的封装格式和编码方式分别执行解复用操作和解码操作,得到目标音频数据及其第一时间戳,以及目标视频数据及其第二时间戳;若第一时间戳与之前的音频数据的第三时间戳是非顺序递增的,则根据前一音频数据的第三时间戳,对第一时间戳进行时戳递增校正,得到目标音频数据的第三时间戳;若第二时间戳与之前的视频数据的第四时间戳是非连续递增的,则根据前一视频数据的第四时间戳,对第二时间戳进行时戳递增校正,得到目标视频数据的第四时间戳,第三时间戳与第四时间戳对应。
在一可选实施例中,在根据目标音频数据的第三时间戳,以及目标视频数据的第四时间戳,对目标音频数据和目标视频数据进行同步渲染之前,还包括:获取后端渲染模块当前的显示模式信息;根据当前的显示模式信息,对目标视频数据进行尺寸调整,得到与显示模式信息适配的目标视频数据。
在一可选实施例中,第一终端设备和第二终端设备之间通过数据线USB或高清多媒体接口HDMI进行有线连接,或者第一终端设备和第二终端设备之间通过毫米波HDMI进行无线连接,以实现第一终端设备和第二终端设备之间的数据传输;接收部署在第一终端设备上的前端处理模块提供的目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳,包括:通过第一终端设备和第二终端设备之间的有线连接或无线连接,接收第一终端设备上的前端处理模块提供的目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳。
关于本申请实施例提供的图2-4所示方法中各步骤的详细实施方式以及有益效果已经在前述实施例中进行了详细描述,此处将不做详细阐述说明。
需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤201至步骤203的执行主体可以为设备;又比如,步骤201和202的执行主体可以为设备,步骤203的执行主体可以为设备B;等等。
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如201、202等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
图5为本申请示例性实施例提供的一种终端设备的结构示意图,如图5所示,该设备应用于分布式的流媒体播放系统,该系统包括:前端处理模块以及与前端处理模块解耦的后端渲染模块,后端渲染模块能够基于不同渲染框架实现;该设备包括:存储器54和处理器55。
存储器54,用于存储计算机程序,并可被配置为存储其它各种数据以支持在终端设备上的操作。这些数据的示例包括用于在终端设备上操作的任何应用程序或方法的指令等。
处理器55,与存储器54耦合,用于执行存储器54中的计算机程序,以用于:通过前端处理模块获取流媒体数据流,流媒体数据流包括不同封装格式和/或不同编码方式的多个音视频数据包;针对每个音视频数据包按照其适配的封装格式和编码方式分别执行解复用和解码操作,得到目标音频数据及其第一时间戳,以及目标视频数据及其第二时间戳;若第一时间戳与之前的音频数据的第三时间戳是非顺序递增的,则根据前一音频数据的第三时间戳,对第一时间戳进行时戳递增校正,得到目标音频数据的第三时间戳;若第二时间戳与之前的视频数据的第四时间戳是非连续递增的,则根据前一视频数据的第四时间戳,对第二时间戳进行时戳递增校正,得到目标视频数据的第四时间戳,第三时间戳与第四时间戳对应;将目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳提供给后端渲染模块;通过后端渲染模块将目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳分别添加至第一队列和第二队列中;按序对第一队列和第二队列中的音频数据和视频数据进行渲染,当渲染到目标音频数据和目标视频数据的情况下,根据目标音频数据的第三时间戳,以及目标视频数据的第四时间戳,对目标音频数据和目标视频数据进行同步渲染,以实现音视频的同步播放。
在一可选实施例中,处理器55在针对每个音视频数据包按照其适配的封装格式和编码方式分别执行解复用操作和解码操作,得到目标音频数据及其第一时间戳,以及目标视频数据及其第二时间戳时,具体用于:针对每个音视频数据包按照其适配的封装格式和编码方式分别执行解复用操作和解码操作,得到原始音频数据及其第一时间戳,以及原始视频数据及其第二时间戳;根据预设音频播放信息对原始音频数据进行重采样,得到与预设音频播放信息适配的目标音频数据;预设音频播放信息包括以下至少一种音频参数:预设音频采样频率、预设音频通道数量或预设音频采样位深;将原始视频数据作为目标视频数据。
在一可选实施例中,处理器55在根据前一音频数据的第三时间戳,对第一时间戳进行时戳递增校正,得到目标音频数据的第三时间戳时,具体用于:根据之前的音频数据的第三时间戳,确定音频数据之间的第一时间间隔;将前一音频数据的第三时间戳与第一时间间隔之和作为目标音频数据的第三时间戳;处理器55在根据前一视频数据的第四时间戳,对第二时间戳进行时戳递增校正,得到目标视频数据的第四时间戳时,具体用于:根据之前的视频数据的第四时间戳,确定视频数据之间的第二时间间隔;将前一视频数据的第四时间戳与第二时间间隔之和作为目标视频数据的第四时间戳。
在一可选实施例中,处理器55在后端渲染模块在根据目标音频数据的第三时间戳,以及目标视频数据的第四时间戳,对目标音频数据和目标视频数据进行同步渲染之前,还用于:获取后端渲染模块当前的显示模式信息;根据当前的显示模式信息,对目标视频数据进行尺寸调整,得到与显示模式信息适配的目标视频数据。
关于本申请实施例提供的图5所示设备中各步骤的详细实施方式以及有益效果已经在前述实施例中进行了详细描述,此处将不做详细阐述说明。
进一步,如图5所示,该终端设备还包括:通信组件56、显示器57、电源组件58、音频组件59等其它组件。图5中仅示意性给出部分组件,并不意味着终端设备只包括图5所示组件。另外,图5中虚线框内的组件为可选组件,而非必选组件,具体可视终端设备的产品形态而定。本实施例的终端设备可以实现为台式电脑、笔记本电脑、智能手机或IOT设备等。
本申请实施例还提供一种终端设备,该终端设备上部署有前端处理模块,该终端设备的实现结构与图5所示终端设备的实现结构相同或类似,可参照图5所示终端设备的结构实现。本实施例提供的终端设备与图5所示实施例中终端设备的区别主要在于:处理器执行存储器中存储的计算机程序所实现的功能不同。对本实施例提供的终端设备来说,其处理器执行存储器中存储的计算机程序,可用于:
获取流媒体数据流,流媒体数据流包括不同封装格式和/或不同编码方式的多个音视频数据包;
针对每个音视频数据包按照其适配的封装格式和编码方式分别执行解复用和解码操作,得到目标音频数据及其第一时间戳,以及目标视频数据及其第二时间戳;
若第一时间戳与之前的音频数据的第三时间戳是非顺序递增的,则根据前一音频数据的第三时间戳,对第一时间戳进行时戳递增校正,得到目标音频数据的第三时间戳;
若第二时间戳与之前的视频数据的第四时间戳是非连续递增的,则根据前一视频数据的第四时间戳,对第二时间戳进行时戳递增校正,得到目标视频数据的第四时间戳,第三时间戳与第四时间戳对应;
将目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳提供给第二终端设备上的后端渲染模块,以供后端渲染模块将目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳分别添加至第一队列和第二队列中以等待渲染,并在渲染到目标音频数据和目标视频数据的情况下,根据目标音频数据的第三时间戳,以及目标视频数据的第四时间戳,对目标音频数据和目标视频数据进行同步渲染,以实现音视频的同步播放。
在一可选实施例中,处理器在针对每个音视频数据包按照其适配的封装格式和编码方式分别执行解复用操作和解码操作,得到目标音频数据及其第一时间戳,以及目标视频数据及其第二时间戳时,具体用于:针对每个音视频数据包按照其适配的封装格式和编码方式分别执行解复用操作和解码操作,得到原始音频数据及其第一时间戳,以及原始视频数据及其第二时间戳;根据预设音频播放信息对原始音频数据进行重采样,得到与预设音频播放信息适配的目标音频数据;预设音频播放信息包括以下至少一种音频参数:预设音频采样频率、预设音频通道数量或预设音频采样位深;将原始视频数据作为目标视频数据。
在一可选实施例中,处理器在根据前一音频数据的第三时间戳,对第一时间戳进行时戳递增校正,得到目标音频数据的第三时间戳时,具体用于:根据之前的音频数据的第三时间戳,确定音频数据之间的第一时间间隔;将前一音频数据的第三时间戳与第一时间间隔之和作为目标音频数据的第三时间戳。
相应地,处理器在根据前一视频数据的第四时间戳,对第二时间戳进行时戳递增校正,得到目标视频数据的第四时间戳时,具体用于:根据之前的视频数据的第四时间戳,确定视频数据之间的第二时间间隔;将前一视频数据的第四时间戳与第二时间间隔之和作为目标视频数据的第四时间戳。
在一可选实施例中,第一终端设备和第二终端设备之间通过数据线USB或高清多媒体接口HDMI进行有线连接,或者第一终端设备和第二终端设备之间通过毫米波HDMI进行无线连接,以实现第一终端设备和第二终端设备之间的数据传输;处理器在将目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳提供给第二终端设备上的后端渲染模块时,具体用于:前端处理模块通过第一终端设备和第二终端设备之间的有线连接或无线连接,将目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳提供给第二终端设备上的后端渲染模块。
本申请实施例还提供一种终端设备,该终端设备上部署有后端渲染模块,该终端设备的实现结构与图5所示终端设备的实现结构相同或类似,可参照图5所示终端设备的结构实现。本实施例提供的终端设备与图5所示实施例中终端设备的区别主要在于:处理器执行存储器中存储的计算机程序所实现的功能不同。对本实施例提供的终端设备来说,其处理器执行存储器中存储的计算机程序,可用于:接收部署在第一终端设备上的前端处理模块提供的目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳;将目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳分别添加至第一队列和第二队列中;按序对第一队列和第二队列中的音频数据和视频数据进行渲染,当渲染到目标音频数据和目标视频数据的情况下,根据目标音频数据的第三时间戳,以及目标视频数据的第四时间戳,对目标音频数据和目标视频数据进行同步渲染,以实现音视频的同步播放;其中,前端处理模块执行的步骤包括:获取流媒体数据流,流媒体数据流包括不同封装格式和/或不同编码方式的多个音视频数据包;针对每个音视频数据包按照其适配的封装格式和编码方式分别执行解复用操作和解码操作,得到目标音频数据及其第一时间戳,以及目标视频数据及其第二时间戳;若第一时间戳与之前的音频数据的第三时间戳是非顺序递增的,则根据前一音频数据的第三时间戳,对第一时间戳进行时戳递增校正,得到目标音频数据的第三时间戳;若第二时间戳与之前的视频数据的第四时间戳是非连续递增的,则根据前一视频数据的第四时间戳,对第二时间戳进行时戳递增校正,得到目标视频数据的第四时间戳,第三时间戳与第四时间戳对应。
在一可选实施例中,处理器在根据目标音频数据的第三时间戳,以及目标视频数据的第四时间戳,对目标音频数据和目标视频数据进行同步渲染之前,还用于:获取后端渲染模块当前的显示模式信息;根据当前的显示模式信息,对目标视频数据进行尺寸调整,得到与显示模式信息适配的目标视频数据。
在一可选实施例中,第一终端设备和第二终端设备之间通过数据线USB或高清多媒体接口HDMI进行有线连接,或者第一终端设备和第二终端设备之间通过毫米波HDMI进行无线连接,以实现第一终端设备和第二终端设备之间的数据传输;处理器在接收部署在第一终端设备上的前端处理模块提供的目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳时,具体用于:通过第一终端设备和第二终端设备之间的有线连接或无线连接,接收第一终端设备上的前端处理模块提供的目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳。
关于本申请实施例提供的终端设备的详细实施方式以及有益效果已经在前述实施例中进行了详细描述,此处将不做详细阐述说明。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述2-4所示方法实施例中可由终端设备执行的各步骤。
上述存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random-Access Memory,SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read Only Memory,EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM),可编程只读存储器(Programmable Read-Only Memory,PROM),只读存储器(Read-Only Memory,ROM),磁存储器,快闪存储器,磁盘或光盘。
上述通信组件被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如WiFi,2G、3G、4G/LTE、5G等移动通信网络,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件还包括近场通信(Near Field Communication,NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(Radio Frequency Identification,RFID)技术,红外数据协会(InfraredData Association,IrDA)技术,超宽带(Ultra Wide Band,UWB)技术,蓝牙(BlueTooth,BT)技术和其他技术来实现。
上述显示器包括屏幕,其屏幕可以包括液晶显示器(Liquid Crystal Display,LCD)和触摸面板(TouchPanel,TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。
上述电源组件,为电源组件所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。
上述音频组件,可被配置为输出和/或输入音频信号。例如,音频组件包括一个麦克风(Microphone,MIC),当音频组件所在设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器或经由通信组件发送。在一些实施例中,音频组件还包括一个扬声器,用于输出音频信号。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、只读光盘(Compact Disc Read-Only Memory,CD-ROM)、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(Central ProcessingUnit,CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RandomAccess Memory,RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(Phase-change Random AccessMemory,PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(Digital Video Disc,DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种分布式的流媒体播放系统,其特征在于,包括:前端处理模块以及与所述前端处理模块解耦的后端渲染模块,所述后端渲染模块能够基于不同渲染框架实现;
所述前端处理模块,用于获取流媒体数据流,所述流媒体数据流包括不同封装格式和/或不同的编码方式的多个音视频数据包;针对每个音视频数据包按照其适配的封装格式和编码方式分别执行解复用操作和解码操作,得到目标音频数据及其第一时间戳,以及目标视频数据及其第二时间戳;若所述第一时间戳与之前的音频数据的第三时间戳是非顺序递增的,则根据前一音频数据的第三时间戳,对所述第一时间戳进行时戳递增校正,得到所述目标音频数据的第三时间戳;若所述第二时间戳与之前的视频数据的第四时间戳是非连续递增的,则根据前一视频数据的第四时间戳,对所述第二时间戳进行时戳递增校正,得到所述目标视频数据的第四时间戳,所述第三时间戳与所述第四时间戳对应;将所述目标音频数据及其第三时间戳,以及所述目标视频数据及其第四时间戳提供给所述后端渲染模块;
所述后端渲染模块,用于将所述目标音频数据及其第三时间戳,以及所述目标视频数据及其第四时间戳分别添加至第一队列和第二队列中;按序对所述第一队列和所述第二队列中的音频数据和视频数据进行渲染,当渲染到所述目标音频数据和所述目标视频数据的情况下,根据所述目标音频数据的第三时间戳,以及所述目标视频数据的第四时间戳,对所述目标音频数据和所述目标视频数据进行同步渲染,以实现音视频的同步播放。
2.根据权利要求1所述的系统,其特征在于,前端处理模块,具体用于:
针对每个音视频数据包按照其适配的封装格式和编码方式分别执行解复用操作和解码操作,得到原始音频数据及其第一时间戳,以及原始视频数据及其第二时间戳;
根据预设音频播放信息对所述原始音频数据进行重采样,得到与所述预设音频播放信息适配的目标音频数据;所述预设音频播放信息包括以下至少一种音频参数:预设音频采样频率、预设音频通道数量或预设音频采样位深;
将所述原始视频数据作为目标视频数据。
3.根据权利要求1所述的系统,其特征在于,所述前端处理模块具体用于:
根据所述之前的音频数据的第三时间戳,确定音频数据之间的第一时间间隔;将前一音频数据的第三时间戳与所述第一时间间隔之和作为所述目标音频数据的第三时间戳;
根据所述之前的视频数据的第四时间戳,确定视频数据之间的第二时间间隔;将前一视频数据的第四时间戳与所述第二时间间隔之和作为所述目标视频数据的第四时间戳。
4.根据权利要求1所述的系统,其特征在于,所述后端渲染模块在根据所述目标音频数据的第三时间戳,以及所述目标视频数据的第四时间戳,对所述目标音频数据和所述目标视频数据进行同步渲染之前,还用于:
获取后端渲染模块当前的显示模式信息;
根据所述当前的显示模式信息,对所述目标视频数据进行尺寸调整,得到与所述显示模式信息适配的目标视频数据。
5.根据权利要求1所述的系统,其特征在于,所述前端处理模块与所述后端渲染模块分别部署在不同的第一终端设备和第二终端设备上;
所述第一终端设备和所述第二终端设备之间通过数据线USB或高清多媒体接口HDMI进行有线连接,或者所述第一终端设备和所述第二终端设备之间通过毫米波HDMI进行无线连接,以实现所述第一终端设备和所述第二终端设备之间的数据传输;
所述前端处理模块具体用于:通过所述第一终端设备和所述第二终端设备之间的有线连接或无线连接,将所述目标音频数据及其第三时间戳,以及所述目标视频数据及其第四时间戳提供给所述后端渲染模块。
6.一种分布式的流媒体播放方法,其特征在于,应用于分布式的流媒体播放系统,该系统包括:前端处理模块以及与所述前端处理模块解耦的后端渲染模块,所述后端渲染模块能够基于不同渲染框架实现;所述方法包括:
所述前端处理模块获取流媒体数据流,所述流媒体数据流包括不同封装格式和/或不同编码方式的多个音视频数据包;针对每个音视频数据包按照其适配的封装格式和编码方式分别执行解复用和解码操作,得到目标音频数据及其第一时间戳,以及目标视频数据及其第二时间戳;若所述第一时间戳与之前的音频数据的第三时间戳是非顺序递增的,则根据前一音频数据的第三时间戳,对所述第一时间戳进行时戳递增校正,得到所述目标音频数据的第三时间戳;若所述第二时间戳与之前的视频数据的第四时间戳是非连续递增的,则根据前一视频数据的第四时间戳,对所述第二时间戳进行时戳递增校正,得到所述目标视频数据的第四时间戳,所述第三时间戳与所述第四时间戳对应;将所述目标音频数据及其第三时间戳,以及所述目标视频数据及其第四时间戳提供给所述后端渲染模块;
所述后端渲染模块将所述目标音频数据及其第三时间戳,以及所述目标视频数据及其第四时间戳分别添加至第一队列和第二队列中;按序对所述第一队列和所述第二队列中的音频数据和视频数据进行渲染,当渲染到所述目标音频数据和所述目标视频数据的情况下,根据所述目标音频数据的第三时间戳,以及所述目标视频数据的第四时间戳,对所述目标音频数据和所述目标视频数据进行同步渲染,以实现音视频的同步播放。
7.一种分布式的流媒体播放方法,其特征在于,适应于部署于第一终端设备上的前端处理模块,所述方法包括:
获取流媒体数据流,所述流媒体数据流包括不同封装格式和/或不同编码方式的多个音视频数据包;
针对每个音视频数据包按照其适配的封装格式和编码方式分别执行解复用和解码操作,得到目标音频数据及其第一时间戳,以及目标视频数据及其第二时间戳;
若所述第一时间戳与之前的音频数据的第三时间戳是非顺序递增的,则根据前一音频数据的第三时间戳,对所述第一时间戳进行时戳递增校正,得到所述目标音频数据的第三时间戳;
若所述第二时间戳与之前的视频数据的第四时间戳是非连续递增的,则根据前一视频数据的第四时间戳,对所述第二时间戳进行时戳递增校正,得到所述目标视频数据的第四时间戳,所述第三时间戳与所述第四时间戳对应;
将所述目标音频数据及其第三时间戳,以及所述目标视频数据及其第四时间戳提供给第二终端设备上的后端渲染模块,以供所述后端渲染模块将所述目标音频数据及其第三时间戳,以及所述目标视频数据及其第四时间戳分别添加至第一队列和第二队列中以等待渲染,并在渲染到所述目标音频数据和所述目标视频数据的情况下,根据所述目标音频数据的第三时间戳,以及所述目标视频数据的第四时间戳,对所述目标音频数据和所述目标视频数据进行同步渲染,以实现音视频的同步播放。
8.一种分布式的流媒体播放方法,其特征在于,适用于第二终端设备上的后端渲染设备,所述方法包括:
接收部署在第一终端设备上的前端处理模块提供的目标音频数据及其第三时间戳,以及目标视频数据及其第四时间戳;
将所述目标音频数据及其第三时间戳,以及所述目标视频数据及其第四时间戳分别添加至第一队列和第二队列中;
按序对所述第一队列和所述第二队列中的音频数据和视频数据进行渲染,当渲染到所述目标音频数据和所述目标视频数据的情况下,根据所述目标音频数据的第三时间戳,以及所述目标视频数据的第四时间戳,对所述目标音频数据和所述目标视频数据进行同步渲染,以实现音视频的同步播放;
其中,所述前端处理模块执行的步骤包括:获取流媒体数据流,所述流媒体数据流包括不同封装格式和/或不同编码方式的多个音视频数据包;针对每个音视频数据包按照其适配的封装格式和编码方式分别执行解复用操作和解码操作,得到目标音频数据及其第一时间戳,以及目标视频数据及其第二时间戳;若所述第一时间戳与之前的音频数据的第三时间戳是非顺序递增的,则根据前一音频数据的第三时间戳,对所述第一时间戳进行时戳递增校正,得到所述目标音频数据的第三时间戳;若所述第二时间戳与之前的视频数据的第四时间戳是非连续递增的,则根据前一视频数据的第四时间戳,对所述第二时间戳进行时戳递增校正,得到所述目标视频数据的第四时间戳,所述第三时间戳与所述第四时间戳对应。
9.一种终端设备,其特征在于,包括:存储器和处理器;所述存储器,用于存储计算机程序;所述处理器,与所述存储器耦合,用于执行所述计算机程序,以实现权利要求5-8中任一项所述方法中的步骤。
10.一种存储有计算机程序的计算机可读存储介质,其特征在于,当所述计算机程序被处理器执行时,致使所述处理器实现权利要求5-8中任一项所述方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310679080.7A CN116801021A (zh) | 2023-06-08 | 2023-06-08 | 分布式的流媒体播放系统、方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310679080.7A CN116801021A (zh) | 2023-06-08 | 2023-06-08 | 分布式的流媒体播放系统、方法、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116801021A true CN116801021A (zh) | 2023-09-22 |
Family
ID=88044603
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310679080.7A Pending CN116801021A (zh) | 2023-06-08 | 2023-06-08 | 分布式的流媒体播放系统、方法、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116801021A (zh) |
-
2023
- 2023-06-08 CN CN202310679080.7A patent/CN116801021A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110740363B (zh) | 投屏方法和系统、电子设备 | |
KR101008764B1 (ko) | 쌍방향 미디어 응답 시스템에서 시각 단서를 제공하는 방법 | |
CN1893383B (zh) | 提供根据剩余存储器容量的可记录时间的方法及其终端 | |
EP3185564A1 (en) | Video stream splicing of groups of pictures (gop) | |
CN105979187A (zh) | 一种数据录制方法及装置 | |
KR20230039723A (ko) | 프로젝션 데이터 프로세싱 방법 및 장치 | |
JP2020511826A (ja) | 電子装置及びその制御方法 | |
CN110996122B (zh) | 视频帧传输方法、装置、计算机设备及存储介质 | |
JPH05328321A (ja) | デジタル多チャンネル伝送システムの受信機 | |
EP1511326B1 (en) | Apparatus and method for multimedia reproduction using output buffering in a mobile communication terminal | |
CN113938470A (zh) | 一种浏览器播放rtsp数据源的方法、装置以及流媒体服务器 | |
CN109600651B (zh) | 文档类直播交互数据和音视频数据同步方法和系统 | |
CN109218849B (zh) | 一种直播数据的处理方法、装置、设备和存储介质 | |
CN116801021A (zh) | 分布式的流媒体播放系统、方法、设备及存储介质 | |
CN113422997B (zh) | 一种播放音频数据的方法、装置及可读存储介质 | |
WO2022193141A1 (zh) | 多媒体文件的播放方法及相关装置 | |
CN116052701A (zh) | 一种音频处理方法及电子设备 | |
JP2013115573A (ja) | 多段高速再生のための映像コンテンツ生成方法 | |
CN113055706A (zh) | 视频合成方法、装置、电子设备和存储介质 | |
CN114554277A (zh) | 多媒体的处理方法、装置、服务器及计算机可读存储介质 | |
JP2020092444A (ja) | 表示装置、表示方法及びコンピュータプログラム | |
US10306298B2 (en) | Image processing apparatus and control method thereof | |
JP2008028673A (ja) | デジタルテレビ放送波送出装置および放送波送出方法 | |
CN117241054A (zh) | 跨网直播系统、方法、电子设备及存储介质 | |
CN113141536B (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 |