CN113423018B - 一种游戏数据处理方法、装置及存储介质 - Google Patents
一种游戏数据处理方法、装置及存储介质 Download PDFInfo
- Publication number
- CN113423018B CN113423018B CN202110974053.3A CN202110974053A CN113423018B CN 113423018 B CN113423018 B CN 113423018B CN 202110974053 A CN202110974053 A CN 202110974053A CN 113423018 B CN113423018 B CN 113423018B
- Authority
- CN
- China
- Prior art keywords
- audio
- game
- cloud
- data
- live broadcast
- 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.)
- Active
Links
- 238000003860 storage Methods 0.000 title claims abstract description 18
- 238000003672 processing method Methods 0.000 title claims abstract description 12
- 238000000034 method Methods 0.000 claims abstract description 184
- 238000012545 processing Methods 0.000 claims abstract description 115
- 230000008569 process Effects 0.000 claims description 145
- 230000005540 biological transmission Effects 0.000 claims description 55
- 238000004590 computer program Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 8
- 238000012163 sequencing technique Methods 0.000 claims description 6
- 238000004806 packaging method and process Methods 0.000 claims description 5
- 230000000977 initiatory effect Effects 0.000 claims 1
- 230000001360 synchronised effect Effects 0.000 description 17
- 238000005516 engineering process Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 238000009877 rendering Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 7
- 230000003993 interaction Effects 0.000 description 7
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000009499 grossing Methods 0.000 description 4
- 238000005538 encapsulation Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000013481 data capture Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000003313 weakening effect Effects 0.000 description 1
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/71—Game security or game management aspects using secure communication between game devices and game servers, e.g. by encrypting game data or authenticating players
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/478—Supplemental services, e.g. displaying phone caller identification, shopping application
- H04N21/4788—Supplemental services, e.g. displaying phone caller identification, shopping application communicating with other users, e.g. chatting
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/20—Input arrangements for video game devices
- A63F13/21—Input arrangements for video game devices characterised by their sensors, purposes or types
- A63F13/215—Input arrangements for video game devices characterised by their sensors, purposes or types comprising means for detecting acoustic signals, e.g. using a microphone
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
- A63F13/355—Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an encoded video stream for transmitting to a mobile phone or a thin client
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
- A63F13/358—Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/50—Controlling the output signals based on the game progress
- A63F13/52—Controlling the output signals based on the game progress involving aspects of the displayed game scene
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/50—Controlling the output signals based on the game progress
- A63F13/54—Controlling the output signals based on the game progress involving acoustic signals, e.g. for simulating revolutions per minute [RPM] dependent engine sounds in a driving game or reverberation against a virtual wall
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/60—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
- A63F13/65—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor automatically by game devices or servers from real world data, e.g. measurement in live racing competition
- A63F13/655—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor automatically by game devices or servers from real world data, e.g. measurement in live racing competition by importing photos, e.g. of the player
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/85—Providing additional services to players
- A63F13/86—Watching games played by other players
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L21/00—Speech or voice signal processing techniques to produce another audible or non-audible signal, e.g. visual or tactile, in order to modify its quality or its intelligibility
- G10L21/04—Time compression or expansion
- G10L21/055—Time compression or expansion for synchronising with other signals, e.g. video signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/218—Source of audio or video content, e.g. local disk arrays
- H04N21/2187—Live feed
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/242—Synchronization processes, e.g. processing of PCR [Program Clock References]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/4302—Content synchronisation processes, e.g. decoder synchronisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/478—Supplemental services, e.g. displaying phone caller identification, shopping application
- H04N21/4781—Games
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/90—Constructional details or arrangements of video game devices not provided for in groups A63F13/20 or A63F13/25, e.g. housing, wiring, connections or cabinets
- A63F13/92—Video game devices specially adapted to be hand-held while playing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Human Computer Interaction (AREA)
- Acoustics & Sound (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Health & Medical Sciences (AREA)
- Quality & Reliability (AREA)
- Computational Linguistics (AREA)
- Databases & Information Systems (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请实施例公开一种游戏数据处理方法、装置及存储介质,其中,方法包括:接收云游戏客户端发送的云游戏直播请求,基于云游戏直播请求建立直播服务连接;基于直播服务连接获取目标云游戏的游戏图像数据和游戏音频数据,游戏图像数据对应的图像采集时间戳和游戏音频数据对应的音频采集时间戳为同一参考系下的时间戳;在获取到云游戏客户端发送的主播对象的待处理音频数据时,对游戏音频数据和待处理音频数据进行混音处理,得到混音音频数据;基于混音音频数据、音频采集时间戳、游戏图像数据和图像采集时间戳,得到直播数据流,将直播数据流通过直播服务器下发至与云游戏客户端相关联的直播客户端。采用本申请,可以实现音视频同步的可靠性。
Description
技术领域
本申请涉及计算机计算领域,具体涉及一种游戏数据处理方法、装置及存储介质。
背景技术
目前,在传统的游戏直播场景下,主播用户可以在移动终端上操作并运行二维游戏(即2D游戏),并可以通过该移动终端对当前运行的2D游戏进行直播录制,进而可以将由该移动终端所实时录制的音视频流作为直播推流进行推送。
显然,在传统的游戏直播场景下,实时录制的音视频流均是在移动终端侧所得到的,以至于在该传统的游戏直播场景下,需要依赖于该主播用户所使用的移动终端的性能,来将编码后的直播流直接推送到远程的直播流。基于此,发明人发现在传统的游戏直播场景下,由于传统的2D游戏与云游戏,分别对移动终端具有不同的性能要求,以至于无法直接依赖于传统的游戏直播方式来实现云游戏的直播。综上所述,发明人发现在云游戏的直播场景下,如何在不同终端之间实现数据传输时的音视频同步是一个亟待解决的技术问题。
发明内容
本申请实施例提供一种游戏数据处理方法、装置及存储介质,可以在云游戏直播场景下,实现音视频同步的可靠性,且可以提升混音后的音视频的同步播放效果。
本申请实施例一方面提供了一种游戏数据处理方法,方法包括:
接收云游戏客户端发送的针对目标云游戏的云游戏直播请求,基于云游戏直播请求建立云服务器与云游戏客户端相关联的直播服务器之间的直播服务连接;
基于直播服务连接获取目标云游戏的游戏图像数据和游戏音频数据,记录游戏图像数据对应的图像采集时间戳和游戏音频数据对应的音频采集时间戳;图像采集时间戳和音频采集时间戳为同一参考系下的时间戳;
在获取到云游戏客户端发送的主播对象的待处理音频数据时,对游戏音频数据和待处理音频数据进行混音处理,得到混音音频数据;混音音频数据对应的混音时间戳与音频采集时间戳保持一致;
基于混音音频数据、音频采集时间戳、游戏图像数据和图像采集时间戳,得到目标云游戏对应的直播数据流,将直播数据流通过直播服务器下发至与云游戏客户端相关联的直播客户端,以使直播客户端基于直播数据流中的音频采集时间戳和图像采集时间戳,对混音音频数据和游戏图像数据进行同步播放。
本申请实施例一方面提供了一种游戏数据处理装置,装置包括:
直播请求接收模块,用于接收云游戏客户端发送的针对目标云游戏的云游戏直播请求,基于云游戏直播请求建立云服务器与云游戏客户端相关联的直播服务器之间的直播服务连接;
数据获取模块,用于基于直播服务连接获取目标云游戏的游戏图像数据和游戏音频数据,记录游戏图像数据对应的图像采集时间戳和游戏音频数据对应的音频采集时间戳;图像采集时间戳和音频采集时间戳为同一参考系下的时间戳;
混音处理模块,用于在获取到云游戏客户端发送的主播对象的待处理音频数据时,对游戏音频数据和待处理音频数据进行混音处理,得到混音音频数据;混音音频数据对应的混音时间戳与音频采集时间戳保持一致;
直播流下发模块,用于基于混音音频数据、音频采集时间戳、游戏图像数据和图像采集时间戳,得到目标云游戏对应的直播数据流,将直播数据流通过直播服务器下发至与云游戏客户端相关联的直播客户端,以使直播客户端基于直播数据流中的音频采集时间戳和图像采集时间戳,对混音音频数据和游戏图像数据进行同步播放。
其中,在直播请求接收模块接收云游戏客户端发送的针对目标云游戏的云游戏直播请求之前,装置还包括:
访问请求获取模块,用于在获取到云游戏客户端针对目标云游戏发送的游戏访问请求时,基于游戏访问请求对云游戏客户端对应的游戏启动标识进行鉴权处理,得到游戏启动标识对应的鉴权结果;游戏访问请求中携带云游戏客户端所在的客户端环境***;
游戏服务建立模块,用于若鉴权结果指示云游戏客户端具有通过游戏启动标识访问目标云游戏的权限,则建立云服务器与云游戏客户端之间的游戏服务连接,且基于游戏服务连接为云游戏客户端所在的客户端环境***配置用于运行目标云游戏的云虚拟容器;
云游戏运行模块,用于在云虚拟容器中启动目标云游戏的游戏进程,通过游戏进程运行目标云游戏。
其中,云游戏客户端对应的游戏显示界面上包含用于指示主播对象进行云游戏直播的直播指示控件;主播对象为通过游戏启动标识访问目标云游戏的游戏对象;
直播请求接收模块包括:
直播请求接收单元,用于接收云游戏客户端发送的针对目标云游戏的云游戏直播请求;云游戏直播请求是云游戏客户端响应于主播对象针对直播指示控件执行的触发操作所生成的;
认证请求接收单元,用于基于云游戏直播请求中所携带的游戏启动标识向与云游戏客户端相关联的直播服务器发送直播认证请求,以使直播服务器基于直播认证请求为云游戏客户端配置用于直播目标云游戏的直播推流地址;
服务连接建立单元,用于接收直播服务器返回的直播推流地址,在将直播推流地址返回给云游戏客户端时,触发建立云服务器与直播服务器之间的直播服务连接。
其中,目标云游戏是由云虚拟容器中的游戏进程运行的;云虚拟容器是由云服务器为云游戏客户端所在的客户端环境***所配置的;
数据获取模块包括:
编码进程启动单元,用于基于直播服务连接在云虚拟容器中启动与游戏进程相关联的媒体编码进程;
数据抓取单元,用于通过媒体编码进程所指示的数据采集组件抓取与目标云游戏相关联的背景音频帧数据和游戏视频帧数据,将抓取到的背景音频帧数据和游戏视频帧数据存放至与数据采集组件相关联的云缓存空间;云缓存空间为独立于云虚拟容器的云内存;
图像数据采集单元,用于通过媒体编码进程所指示的定时器,从云内存中采集与第一采集时间间隔所指示的第一帧率相匹配的图像帧,将采集到的图像帧作为目标云游戏的游戏图像数据,并在定时器所指示的参考系下,记录游戏图像数据对应的图像采集时间戳;
音频数据采集单元,用于通过定时器,从云内存中采集与第二采集时间间隔所指示的第二帧率相匹配的音频帧,将采集到的音频帧作为目标云游戏的游戏音频数据,并在定时器所指示的同一参考系下,记录游戏音频数据对应的音频采集时间戳;第二采集时间间隔记录小于第一采集时间间隔,且第二帧率大于第一帧率。
其中,数据获取模块还包括:
第一编码线程运行单元,用于在云虚拟容器中运行与媒体编码进程相关联的第一编码线程;
第一音频编码单元,用于获取第一编码线程所指示的云游戏编码标准,通过云游戏编码标准对抓取到的背景音频帧数据进行音频编码,得到目标云游戏的第一音频编码流;
第一视频编码单元,用于通过云游戏编码标准对抓取到的游戏视频帧数据进行视频编码,得到目标云游戏的第一视频编码流;
游戏流返回单元,用于将第一音频编码流和第一视频编码流作为目标云游戏的游戏编码流,将游戏编码流返回给云游戏客户端,以使云游戏客户端对游戏编码流进行解码处理,得到用于在云游戏客户端中进行同步播放的背景音频帧数据和游戏视频帧数据。
其中,云服务器用于运行游戏进程、媒体编码进程和媒体传输进程;媒体传输进程运行在独立于云虚拟容器的辅助虚拟容器中;
数据获取模块还包括:
第二编码线程运行单元,用于在云虚拟容器中运行与媒体编码进程相关联的第二编码线程;
第二音频编码单元,用于获取第二编码线程所指示的云直播编码标准,通过云直播编码标准对与第二帧率相关联的游戏音频数据进行音频编码,得到目标云游戏的第二音频编码流;
第二视频编码单元,用于通过云直播编码标准对与第一帧率相关联的游戏图像数据进行视频编码,得到目标云游戏的第二视频编码流;
编码流转发单元,用于将第二音频编码流和第二视频编码流作为目标云游戏的待处理编码流,将待处理编码流转发给媒体传输进程,以使媒体传输进程通知混音处理模块基于待处理编码流在辅助云虚拟容器中执行在获取到云游戏客户端发送的主播对象的待处理音频数据时,对游戏音频数据和待处理音频数据进行混音处理,得到混音音频数据的步骤。
其中,混音处理模块包括:
音频解码单元,用于在获取到云游戏客户端发送的主播对象的待处理音频数据时,对待处理音频数据进行解码处理,得到主播对象的待处理音频帧以及待处理音频帧的录制时间戳;
参考音频帧获取单元,用于基于游戏音频数据对应的第二采集时间间隔,获取游戏音频数据中的音频帧,将获取到的音频帧作为参考音频帧,且根据游戏音频数据对应的采集音频时间戳,确定参考音频帧的混音时间戳;
混音处理单元,用于基于混音时间戳调整录制时间戳,基于调整后的录制时间戳对参考音频帧和待处理音频帧进行混音处理,得到与采集时间戳保持一致的混音时间戳对应的混音音频帧,将得到的混音音频帧和混音音频帧对应的混音时间戳作为目标云游戏的混音音频数据。
其中,混音处理模块还包括:
音频帧统计单元,用于统计获取到的音频帧的帧数,若音频帧的帧数为M帧;M为不为零的正整数,且M用于表征待进行混音处理的次数;
音量调整单元,用于基于待进行混音处理的次数,在执行基于混音时间戳调整录制时间戳,基于调整后的录制时间戳对参考音频帧和待处理音频帧进行混音处理的步骤时,对待处理音频帧的音量进行增强处理,且对参考音频帧的音量进行减弱处理。
其中,混音处理模块还包括:
空值检测单元,用于若音频帧的帧数为空值或者待处理音频帧的帧数为空值,则不对参考音频帧和待处理音频帧进行混音处理。
其中,云服务器包含基于云游戏直播请求所启动的媒体转发进程;媒体转发进程用于保持云服务器与直播服务器之间的直播服务连接;
直播流下发模块包括:
音频排序处理单元,用于获取混音音频数据,从混音音频数据中获取混音音频帧以及混音音频帧对应的音频采集时间戳,基于音频采集时间戳对混音音频帧进行排序处理,将排序处理后的混音音频帧写入与媒体转发进程相关联的音频缓存队列;
图像排序处理单元,用于获取游戏图像数据,从游戏图像数据中获取图像帧以及图像帧对应的图像采集时间戳,基于图像采集时间戳对图像帧进行排序处理,将排序处理后的图像帧写入与媒体转发进程相关联的视频缓存队列;
数据包获取单元,用于获取与媒体转发进程相关联的平滑获取线程,通过平滑获取线程从视频缓存队列中获取与第一采集时间间隔所指示的第一帧率相匹配的视频数据包,并通过平滑获取线程从音频缓存队列中获取与第二采集时间间隔所指示的第二帧率相匹配的音频数据包;
打包下发单元,用于将视频数据包和音频数据包进行打包处理,得到目标云游戏对应的直播数据流,将直播数据流通过直播服务器下发至与云游戏客户端相关联的直播客户端。
其中,数据包获取单元包括:
时间间隔获取子单元,用于获取与媒体转发进程相关联的平滑获取线程,且获取与平滑获取线程具有相同采集时间间隔的数据采集组件,基于数据采集组件的采集时间间隔确定与游戏图像数据相关联的第一采集时间间隔和与游戏音频数据相关联的第二采集时间间隔;
视频帧获取子单元,用于通过平滑获取线程确定第一采集时间间隔相匹配的平滑视频获取时间戳,从视频缓存队列中获取图像采集时间戳小于平滑视频获取时间戳的缓存视频帧,将获取到的缓存视频帧和缓存视频帧对应的图像采集时间戳进行封装处理,得到与第一采集时间间隔所指示的第一帧率相匹配的视频数据包;
音频帧获取子单元,用于通过平滑获取线程确定第二采集时间间隔相匹配的平滑音频获取时间戳,从视频缓存队列中获取音频采集时间戳小于平滑音频获取时间戳的缓存音频帧,将获取到的缓存音频帧和缓存音频帧对应的音频采集时间戳进行封装处理,得到与第二采集时间间隔所指示的第二帧率相匹配的音频数据包。
其中,在直播流下发模块将直播数据流通过直播服务器下发至与云游戏客户端相关联的直播客户端之后,直播流下发模块还包括:
辅助包获取单元,用于在直播数据流中获取具有最大音频采集时间戳的音频数据包作为辅助音频数据包,且在直播数据流中获取具有最大图像采集时间戳的视频数据包作为辅助视频数据包;
音频包丢弃单元,用于若通过平滑获取线程记录到待发送给直播服务器的下一个音频数据包的音频采集时间戳小于已发送的辅助音频数据包的最大音频采集时间戳,则丢弃待发送给直播服务器的下一个音频数据包;
视频包丢弃单元,用于若通过平滑获取线程记录到待发送给直播服务器的下一个视频数据包的视频采集时间戳小于已发送的辅助视频数据包的最大视频采集时间戳,则丢弃待发送给直播服务器的下一个视频数据包。
本申请实施例一方面提供了一种计算机设备,包括:处理器和存储器;
处理器与存储器相连,其中,存储器用于存储计算机程序,处理器用于调用计算机程序,以使计算机设备执行本申请实施例任一方面中的方法。
本申请实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序适于由处理器加载并执行,以使得具有处理器的计算机设备执行如本申请实施例一方面中的方法。
在本申请实施例中,计算机设备(例如,云服务器)可以在接收到云游戏客户端发送的针对目标云游戏的云游戏直播请求时,基于云游戏直播请求建立云服务器与云游戏客户端相关联的直播服务器之间的直播服务连接;进一步的,计算机设备(例如,云服务器)可以基于直播服务连接获取目标云游戏的游戏图像数据和游戏音频数据,并可以记录游戏图像数据对应的图像采集时间戳和游戏音频数据对应的音频采集时间戳;其中,为避免数据传输延迟过程中音视频同步的不准确性,本申请实施例提出可以在云游戏直播场景下,确保图像采集时间戳和音频采集时间戳为同一参考系下的时间戳,进而可以基于同一参考系下的这些时间戳实现音视频同步的可靠性;进一步的,计算机设备在获取到云游戏客户端发送的主播对象的待处理音频数据时,对游戏音频数据和待处理音频数据进行混音处理,得到混音音频数据;应当理解,在云游戏直播场景下,主播对象的声音(即待处理音频数据)是由云游戏客户端录制得到的,游戏背景音(即游戏音频数据)是由计算机设备(即云服务器)在云端抓取得到的,考虑到云游戏客户端与云服务器之间存在数据传输,且观众用户所能感知到的是游戏画面和游戏背景音的同步,所以,在对主播对象的声音(即待处理音频数据)和游戏背景音(即游戏音频数据)进行混音的过程中,可以将游戏背景音(即游戏音频数据)的音频采集时间戳作为参考,以使得混音后所得到的混音音频数据对应的混音时间戳与音频采集时间戳保持一致;进一步的,计算机设备可以基于混音音频数据、音频采集时间戳、游戏图像数据和图像采集时间戳,得到目标云游戏对应的直播数据流,进而可以将直播数据流通过直播服务器下发至与云游戏客户端相关联的直播客户端,以使直播客户端基于直播数据流中的音频采集时间戳和图像采集时间戳,对混音音频数据和游戏图像数据进行同步播放。由此可见,在云游戏直播场景下,云游戏客户端并不会直接向直播服务器推送直播数据流,而是通过该云服务器来向直播服务器进行直播数据流的推送,从而可以利用云服务器强大的计算能力,从根源上降低对云游戏客户端侧的性能消耗。另外,通过在云服务器侧进行基于音频采集时间戳和图像采集时间戳进行音视频的同步,不仅可以解决直播推流过程中因抖动、乱序等所造成的音视频不同步的现象,还可以实现多路混音的同步及卡顿问题,进而可以实现音视频同步的可靠性,这样,当在直播客户端中基于直播数据流中的音频采集时间戳和图像采集时间戳,对混音音频数据和游戏图像数据进行同步播放时,可以提升混音后的音视频的同步播放效果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种网络架构的结构示意图;
图2是本申请实施例提供的一种在云云游戏场景下进行直播推流的场景示意图;
图3是本申请实施例提供的一种游戏数据处理方法的流程示意图;
图4是本申请实施例提供的一种在云游戏场景下针对目标云游戏进行云直播的场景示意图;
图5是本申请实施例提供的一种通过媒体编码进程抓取游戏画面和音频的场景示意图;
图6是本申请实施例提供的一种媒体转发模块的场景示意图;
图7是本申请实施例提供的一种优先级队列的场景示意图;
图8是本申请实施例提供的一种游戏数据处理方法的流程示意图;
图9是本申请实施例提供的一种通过媒体转发模块对收到的音频帧和视频帧进行平滑处理的场景示意图;
图10是本申请实施例提供的一种游戏数据处理装置的结构示意图;
图11是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例涉及云技术(cloud technology),云计算(cloud computing)和云游戏(cloud gaming)。其中,云技术是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络***的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台***进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的***后盾支撑,只能通过云计算来实现。
云计算是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用***能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为IaaS(Infrastructure as a Service,基础设施即服务)平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作***)、存储设备、网络设备。
云游戏又可称为游戏点播(gaming on demand),是一种以云计算技术为基础的在线游戏技术。云游戏技术使图形处理与数据运算能力相对有限的轻端设备(thin client)能运行高品质游戏。在云游戏场景下,游戏并不在玩家游戏终端(也可以称之为游戏对象对应的游戏终端),而是在云服务器中运行,并由云服务器将游戏场景渲染为视频音频流(即音视频流),通过网络传输给玩家游戏终端。可以理解的是,比如,在本申请实施例中,该云服务器所采用的渲染技术属于一种容器内的渲染技术,这里的容器是指在云服务器中所虚拟得到的云虚拟容器,即本申请实施例可以将在云虚拟容器中所渲染得到的视频音频流通过网络传输给玩家游戏终端。可以理解的是,这里的玩家游戏终端无需拥有强大的图形运算与数据处理能力,仅需拥有基本的流媒体播放能力与获取玩家(即游戏用户)输入指令并发送给云服务器的能力即可。
可以理解的是,在云游戏场景下,玩家(即前述游戏对象)可以通过玩家游戏终端中所运行的游戏客户端与云服务器之间进行数据交互,这样,当云服务器在云端的云虚拟容器中完成对该游戏客户端中的游戏数据的渲染操作之后,可以进一步对渲染所得到的游戏画面和音频进行编码操作,以将编码后的音视频流(比如,音频流和视频流)下发给玩家游戏终端进行解码操作。
进一步的,请参见图1,图1是本申请实施例提供的一种网络架构的结构示意图。如图1所示,网络架构可以应用于云游戏直播场景下的数据处理***。该数据处理***具体可以包括图1所示的云服务器1000、主播终端集群、直播服务器2000以及观众终端集群。其中,主播终端集群具体可以包括一个或者多个主播终端,这里将不对主播终端集群中的主播终端的数量进行限制,应当理解,这里的一个或者多个主播终端可以为上述具有直播功能的玩家游戏终端。如图1所示,多个主播终端具体可以包括主播终端3000a、主播终端3000b、主播终端3000c、…、主播终端3000n;如图1所示,主播终端3000a、主播终端3000b、主播终端3000c、…、主播终端3000n可以分别与云服务器1000进行网络连接,以便于每个主播终端可以通过该网络连接与云服务器1000之间进行数据交互。
比如,当某个主播终端(例如,主播终端3000a)中运行有具有直播功能的云游戏客户端,且游戏对象(例如,游戏用户)使用该云游戏客户端对某款云游戏(即目标云游戏)进行游戏互动时,可以将在该云服务器1000侧对该目标云游戏的游戏画面进行渲染,并可以将渲染完成后的游戏画面进行压缩处理(例如,编码处理),以将编码得到的游戏视频流作为待返回给该主播终端(例如,主播终端3000a)的游戏编码流。
此外,应当理解,若该游戏对象(例如,游戏用户)进一步通过该具有直播功能的云游戏客户端向云服务器1000发送针对该目标云游戏的云游戏直播请求,则可以将当前访问该云游戏客户端的游戏对象(例如,游戏用户)统称为主播对象,并可以基于云游戏直播请求在云服务器1000侧与上述直播服务器2000建立直播服务连接,进而可以通过直播服务连接在云端实现云端推流。比如,如上述图1所示,云服务器1000可以将在云端编码得到的直播数据流推流至直播服务器2000,以使直播服务器2000可以对接收到的直播数据流进行解码处理,以将解码得到的直播数据流所对应的音视频序列(注意,这里的音视频序列可以包括但不限于在云服务器1000侧进行混音处理后的音视频序列)进行缓存,以便于后续可以将由直播服务器2000所编码得到的转码视频流下发给位于该虚拟直播间内的观众用户所对应的观众终端。应当理解,对于不同的观众终端而言,这里的转码视频流是由直播服务器2000基于虚拟直播间内不同观众终端的终端屏幕信息所确定的。这里的终端屏幕信息可以包括但不限于终端屏幕的尺寸大小和分辨率。换言之,这里的直播服务器2000需要根据不同观众终端的终端屏幕信息,对该解码得到的音视频序列进行适配处理,以将适配处理后所得到的转码视频流下发给这些观众终端,以使得这些观众终端在对接收到的转码视频流进行解码处理之后,可以在自己的直播显示界面上显示不同尺寸或者不同分辨率的云游戏直播画面。
其中,观众终端集群具体可以包括一个或者多个观众终端,这里将不对观众终端集群中的观众终端的数量进行限制。如图1所示,多个观众终端具体可以包括观众终端4000a、观众终端4000b、观众终端4000c、…、观众终端4000n;如图1所示,观众终端4000a、观众终端4000b、观众终端4000c、…、观众终端4000n可以分别与直播服务器2000进行网络连接,以便于每个观众终端在运行有观众客户端时,可以通过该网络连接与直播服务器2000之间进行数据交互。比如,这些观众终端在虚拟直播间中请求播放上述主播对象当前正在直播的目标云游戏的直播视频时,可以从该直播服务器2000上拉取主播对象当前正在直播的目标云游戏的转码视频流。其中,可以理解的是,这里的观众客户端为在观众终端所运行的直播客户端。
其中,如图1所示的云服务器1000和直播服务器2000均可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
其中,为便于理解,本申请实施例可以在图1所示的主播终端集群中选择一个主播终端作为目标主播终端,例如,本申请实施例可以将图1所示的主播终端3000a作为目标直播终端,该目标主播终端可以集成有具备游戏数据直播功能的云游戏客户端。该云游戏客户端上集成有一种或者多种云游戏,这里的云游戏可以包括但不限于竞技类云游戏、酷跑类云游戏、棋牌类云游戏、博射击类云游戏等,这里将不对该云游戏客户端上所集成的云游戏的类型进行限定。
其中,目标主播终端(例如,主播终端3000a)具体可以包括:智能手机、平板电脑、笔记本电脑、桌上型电脑、可穿戴设备、智能家居(例如,智能电视)等携带视频数据处理功能(例如,视频数据播放功能)的智能终端。
为便于理解,进一步的,请参见图2,图2是本申请实施例提供的一种在云云游戏场景下进行直播推流的场景示意图。其中,为便于理解,这里以图2所示的主播终端A为上述目标主播终端(例如,主播终端3000a)为例,以阐述该主播终端A与云服务器B进行数据交互的数据过程。其中,该主播终端A上运行有具有直播功能的云游戏客户端。如图2所示,当某个游戏对象(例如,用户U1)需要通过该主播终端A玩云游戏时,该主播终端A可以响应该游戏对象(例如,用户U1)针对前述云游戏客户端的触发操作,以在该主播终端A上输出包含N个云游戏的游戏显示界面,这里的N为正整数。进一步的,该游戏对象(例如,用户U1)可以在该游戏显示界面上所显示的N个云游戏中选择自己感兴趣的云游戏作为目标云游戏,换言之,此时,图2所示的主播终端A可以响应针对这N个云游戏中的目标云游戏的触发操作,进而可以向图2所示的云服务器B发送针对该目标云游戏的游戏访问请求。
应当理解,这里的云服务器B可以为上述图1所对应实施例中的云服务器1000。如图2所示,该云服务器B可以包含图2所示的用于提供云游戏服务的云游戏边缘集群和用于提供云推流服务的云游戏中央集群。
其中,该用于提供云游戏服务的云游戏边缘集群可以包含一个或者多个云游戏边缘服务器。为便于理解,这里以该云游戏边缘集群包含一个云游戏边缘服务器为例,该云游戏边缘服务器可以包含但限于图2所示的多个云服务模块,该云游戏边缘服务器的多个云服务模块具体可以包含云游戏实例模块21a、媒体编码模块21b、以及媒体传输模块21c。可以理解的是,该云游戏边缘服务器中的一个云服务模块可以用于运行图2所示的云服务器B的一个进程。
其中,云游戏实例模块21a所提供的游戏进程可以用于在云端运行上述目标云游戏的游戏实例,可以理解的是,该游戏实例所对应的游戏进程运行在该云服务器B为该主播终端A的客户端环境***所配置的云虚拟容器中。应当理解,运行在该云虚拟容器中的云游戏实例(即前述目标云游戏所对应的游戏实例)是以云计算为基础的游戏方式。在云游戏的运行模式下,所有游戏都在云服务器B端运行,并可以将渲染完毕后的游戏画面压缩后通过网络传送给前述用户U1。比如,该主播终端A上所运行的云游戏客户端可以实时检测用户的触发事件,如触屏事件、键盘鼠标事件、摇杆事件等,然后通过网络将检测到的相应触发事件的指令传输给图2所示的云服务器B,以达到远程操作云虚拟容器中的游戏进程运行云游戏实例的目的。
其中,媒体编码模块21b所提供的媒体编码进程可以用于抓取上述云游戏实例模块21a所运行的云游戏实例(例如,前述游戏进程所对应的游戏实例,比如,该云游戏实例可以为Android实例)的游戏画面和音频,并对抓取到的游戏画面和音频进行音视频编码处理,进而可以将音视频编码处理后所得到的音视频流传输到图2所示的媒体传输模块21c。
应当理解,在本申请实施例中,该媒体编码模块21b所对应的媒体编码进程和上述云游戏实例模块21a所对应的游戏进程可以运行在同一云虚拟容器中,即本申请实施例可以在运行云游戏实例的云虚拟容器中进行容器内的数据渲染,进而可以从根源上降低游戏画面渲染时的渲染时延。此外,可以理解的是,该媒体编码模块21b也可以接收由图2所示的媒体传输模块21c所转发的前述用户U1通过主播终端A所发送的语音输入操作、触摸操作等,并可以将接收到的语音输入操作和触摸操作等注入到前述云游戏实例(例如,Android实例)中。
其中,为便于理解,这里以该媒体传输模块21c所转发的操作为用户U1通过前述主播终端A所执行的触摸操作为例,这样,图2所示的媒体编码模块21b在将该触摸操作在T1时刻注入到云游戏实例模块21a中的云游戏实例中时,该媒体编码模块21b还可以进一步用于在该T1时刻的下一时刻(例如,T2时刻)抓取到该云游戏实例针对前述触摸操作进行响应时的游戏画面和音频。为便于理解,本申请实实施例可以将由该媒体编码模块21b所定时抓取到的游戏画面(例如,游戏视频帧数据)统称为游戏图像数据,并将由该媒体编码模块21b所定时抓取到的音频(例如,游戏背景音或者背景音频帧数据)统称为游戏音频数据。
其中,媒体传输模块21c可以用于接收前述用户U1发送的云游戏访问请求,并可以基于接收到的云游戏访问请求对该用户U1进行鉴权,进而可以在鉴权成功的情况下,允许该用户U1通过该主播终端A访问该云服务器B,并建立该云服务器B与该用户U1所对应的云游戏客户端之间建立游戏服务连接。同理,本申请实施例可以将该媒体传输模块21c所对应的进程统称为云服务器B中的媒体传输进程,该媒体传输进程可以运行在独立于前述云虚拟容器的另一虚拟容器中,为便于理解,本申请实施例可以将用于进行数据转发处理和混音处理的另一虚拟容器统称为辅助虚拟容器。
这样,当媒体传输模块21c所对应的媒体传输进程接收到前述接收媒体编码模块21b所对应的媒体编码进程发送的音视频流(例如,音视频流100a)时,可以基于该主播终端A的终端屏幕信息(例如,终端屏幕的尺寸大小和分辨率),对音视频流100a进行音视频编码,进而可以将编码得到的音视频流(例如,音视频流100b,该音视频流100b中携带该媒体编码模块21b按照云游戏编码标准所编码得到的一路视频流)统称为游戏编码流,并可以将该游戏编码流通过网络传输到用户U1所对应的主播终端A。其中,应当理解,主播终端A在接收到云服务器B通过媒体传输模块21c所返回的游戏编码流时,可以对其进行解码处理,以得到该游戏编码流所对应的音视频序列,进而可以在该主播终端A的云游戏显示界面上显示该用户U1所直播的目标云游戏的云游戏画面。
进一步的,可以理解的是,用户U1在玩上述目标云游戏的过程中,可以通过运行该云游戏客户端的主播终端A实时检测该用户U1的语音输入操作,进而可以将该语音输入操作所对应的用户U1的语音数据通过前述游戏服务连接发送给媒体传输模块21c。基于此,当该媒体传输模块21c接收到该用户U1的语音数据时,可以将该用户U1的语音数据统称为主播对象的待处理音频数据,并可以通过该媒体传输模块21c所对应的媒体传输进程将该待处理音频数据转发到图2所示的媒体编码模块21b,以使该媒体编码模块21b将该待处理音频数据注入到上述云游戏实例中。
此外,可以理解的是,在云游戏直播场景下,前述媒体编码模块21b还会按照云直播编码标准开启另一路视频编码,以按照云直播编码标准所指示的固定帧率、帧组长度等编码得到另一路视频流,该另一路视频流为不同于按照前述云游戏编码标准所编码得到的视频流。比如,这里的帧组长度用于描述两个I帧之间的间隔,比如,帧组长度可以为120帧,这里的固定帧率可以为60帧,这意味着在每2秒就会出现一次I帧。
其中,应当理解,如图2所示,在云游戏直播场景下,该媒体传输模块21c还可以在接收到该用户U1的语音数据(即前述待处理音频数据)时,将该待处理音频数据和由媒体编码模块21b所抓取的音频(即上述游戏音频数据)进行实时混音处理,以得到混音音频数据。其中,应当理解,由于用于采集前述待处理音频数据的主播终端A与用于采集该游戏音频数据的云服务器B可能使用的是不同参考系,以至于会导致不同参考系下所采集到的游戏音频数据的时间戳与待处理音频数据的时间戳之间存在一定的时间间隔。所以,为确保后续在观众终端(例如,图2所示的观众终端D1和观众终端D2)所播放的音视频的同步,本申请实施例提出可以在云游戏直播场景下,将该媒体编码模块21b所抓取的音频(即该媒体编码模块21b按照固定音频采集时间间隔所定时采集到的游戏音频数据)的时间戳(即音频采集时间戳)作为参考时间戳,进而使得混音处理后所得到的混音音频数据的混音时间戳与前述游戏音频数据的音频采集时间戳保持一致。
进一步的,该云服务器B可以通过该媒体传输模块21c将混音处理后的混音音频数据、混音时间戳(即前述音频采集时间戳)、游戏图像数据和图像采集时间戳等转发给图2所示的媒体转发模块22a。如图2所示,该媒体转发模块22a可以部署在用于提供上述云推流服务的云游戏中央集群中,该云游戏中央集群可以包含一个或者多个云游戏中央服务器,每个云游戏中央服务器均可以集成部署有上述媒体转发模块22a,进而可以通过该媒体转发模块22a将媒体传输模块21c所发送的音视频缓存至优先级队列,以便于后续可以按照前述固定时间间隔从该媒体转发模块22a所对应的优先级队列中进行音视频包的获取,进而可以将获取到的音视频包进行音视频编码处理,以编码得到的该目标云游戏的直播数据流。
应当理解,此时,该云服务器B可以通过该媒体转发模块22a将该直播数据流推流至直播服务器C,以使该直播服务器C在接收到与主播对象处于同一虚拟直播间中的观众用户的直播拉流请求的情况下,实时将该直播数据流下发至图2所示的观众终端D1和观众终端D2。此时,该观众终端D1和观众终端D2中所运行的直播客户端均可以基于该直播数据流中的音频采集时间戳和图像采集时间戳,对混音音频数据和游戏图像数据进行同步播放,进而可以在观众终端提升混音后的音视频的同步播放效果。
其中,如图2所示,该直播服务器C具体可以包含图2所示的直播边缘服务器201a、直播源站服务器202a以及直播转发服务器203a。其中,直播边缘服务器201a可以用于接收推送来的直播数据流(支持rtmp,hls,webrtc等协议),并可以将直播数据流转发到直播源站服务器202a。
其中,直播源站服务器202a(例如,OriginServer)可以为源站集群中的一个服务器,该直播源站服务器202a可以用于缓存最近一段时间所收到的直播数据流,并可以用来对该直播数据流进行以下后处理,比如转码处理、录制处理以及鉴黄处理等。此外,该直播源站服务器202a也可以接收图2所示的直播转发服务器203a转发的观众终端(例如,图2所示的观众终端D1)所发送的用于请求拉流的命令。
其中,直播转发服务器203a可以为布署在全国各地的边缘节点(例如,CDN节点),该直播转发服务器203a可以用来缓存一些热门的媒体文件、还可以用来转发直播源站服务器202a进行后处理所得到的媒体流,并可以将该媒体流下发各观众终端所对应的观众对象,这里的观众对象可以为与上述主播对象处于同一虚拟直播间的观众用户(player)。
此外,应当理解,当某个观众用户(例如,观众终端D1所对应的观众对象)请求某个观看某个云游戏的直播视频,但该直播转发服务器203a中没有缓存该云游戏的直播视频时,该直播转发服务器203a会进一步向图2所示的直播源站服务器202a进行拉流,以将拉流到的直播视频缓存到本地,以下发到观众终端D1所对应的观众对象。
其中,云服务器获取游戏图像数据和游戏音频数据,并对游戏音频数据和待处理音频数据进行混音处理的具体过程可以参见如下图3至图8所对应的实施例。
进一步地,请参见图3,图3是本申请实施例提供的一种游戏数据处理方法的流程示意图。如图3所示,该方法可以由计算机设备执行,该计算机设备可以为云服务器,该云服务器可以为上述图2所对应实施例中的云服务器B。可选的,该计算机设备也可以为玩家游戏终端,该玩家游戏终端可以为上述图2所对应实施例中的主播终端A。换言之,可以理解的是,本申请实施例所涉及的方法可以由玩家游戏终端执行,也可以由该玩家游戏终端所对应的云服务器执行,还可以由玩家游戏终端和云服务器共同执行。为便于理解,本实施例以该方法由云服务器执行为例进行说明,以阐述在云服务器中对游戏音频数据和待处理音频数据进行混音处理的具体过程。其中,该方法至少可以包括以下步骤S101-步骤S104:
步骤S101,接收云游戏客户端发送的针对目标云游戏的云游戏直播请求,基于云游戏直播请求建立云服务器与云游戏客户端相关联的直播服务器之间的直播服务连接;
具体的,计算机设备(例如,云服务器)可以在云游戏的直播推流场景(即在云端对目标云游戏进行直播的云游戏场景)下,接收云游戏客户端发送的针对目标云游戏的云游戏直播请求;其中,云游戏直播请求是云游戏客户端响应于主播对象针对直播指示控件执行的触发操作所生成的;进一步的,计算机设备(例如,云服务器)可以基于云游戏直播请求中所携带的游戏启动标识向与云游戏客户端相关联的直播服务器发送直播认证请求,以使直播服务器基于直播认证请求为云游戏客户端配置用于直播目标云游戏的直播推流地址;进一步的,计算机设备(例如,云服务器)可以接收直播服务器返回的直播推流地址,在将直播推流地址返回给云游戏客户端时,触发建立云服务器与直播服务器之间的直播服务连接。
为便于理解,进一步的,请参见图4,图4是本申请实施例提供的一种在云游戏场景下针对目标云游戏进行云直播的场景示意图。其中,如图4所示的游戏显示界面400a为用户U1当前正在玩的目标云游戏的显示界面。应当理解,这里的目标云游戏为用户U1在图4所示的游戏终端41a中所运行的云游戏客户端上所选择的自己感兴趣的云游戏。可以理解的是,在云游戏直播场景下,这里的用户U1可以为需要对该目标云游戏进行直播的主播对象,即此时,这里的主播对象可以理解为通过游戏启动标识(云游戏账号)访问云游戏客户端的游戏对象(即图4所示的用户U1)。
如图4所示,游戏终端41a可以根据用户U1的直播需求,在游戏显示界面400a上输出包含用于指示该主播对象进行云游戏直播的直播指示控件的子页面,比如,这里的子页面可以为独立于该游戏显示界面400a的悬浮窗口;如图4所示,用户U1可以在该悬浮窗口上针对用于开启直播的“直播指示控件”执行触发操作。此时,该游戏终端41a可以响应于该用户U1针对直播指示控件执行的触发操作,生成图4所示的云游戏直播请求,该云游戏直播请求中携带在该用户U1访问该云游戏客户端的云游戏账号,这里的云游戏账号可以为该用户U1通过实名认证后在云服务器42a中所注册得到的账号。
进一步的,如图4所示,云服务器42a在接收到运行有云游戏客户端的游戏终端41a发送的云游戏直播请求的情况下,可以进一步基于该云游戏直播请求中所携带的云游戏账号生成图4所示的直播认证请求,并可以将该直播认证请求发送给图4所示的直播服务器43a,以使直播服务器43a可以基于该直播认证请求在直播***中查找是否存在与该云游戏账号绑定的直播账号。如果存在,则可以基于获取到的该直播认证请求为游戏终端41a中所运行的云游戏客户端配置图4所示的直播推流地址。
其中,应当理解,云服务器42a和直播服务器43a均可以用于存储直播账号与云游戏账号之间的绑定关系。可以理解的是,这里的直播账号为该用户U1通过某个直播客户端在与该直播客户端相关联的该直播服务器43a中所注册用于进行直播的账号。
如图4所示,云服务器42a可以接收直播服务器43a所返回的直播推流地址,并可以将该直播推流地址返回给游戏终端41a中所运行的云游戏客户端,以在该云游戏客户端中对当前运行的目标云游戏进行直播处理。应当理解,在本申请实施例中,云服务器42a还可以在将直播推流地址返回给云游戏客户端时,触发建立云服务器42a与直播服务器43a之间的直播服务连接,以便于后续在用户U1对目标云游戏进行直播的过程中,可以使得云服务器42a基于该直播服务连接与云直播服务器43a进行数据交互。
比如,云服务器42a可以接收用户U1发送的云游戏直播请求(即开始直播云游戏的信息流),也可以接收用户U1发送的云游戏结束请求。如图4所示,当用户U1需要退出云游戏时,可以触发用于退出云游戏的退出控件,此时,游戏终端41a可以响应针对该退出控件的触发操作,以生成能够向云服务器42a发送的用于结束当前正在直播的云游戏的云游戏结束请求。这样,当云服务器42a接收到用户U1针对该目标云游戏发送的云游戏结束请求(即结束直播云游戏的信息流)时,可以中断与云直播服务器43a进行数据交互的直播服务连接。
步骤S102,基于直播服务连接获取目标云游戏的游戏图像数据和游戏音频数据,记录游戏图像数据对应的图像采集时间戳和游戏音频数据对应的音频采集时间戳;
其中,云服务器在通过上述媒体编码进程所指示的数据采集组件实时抓取到游戏画面和音频的情况下,为确保在云游戏的直播推流场景下提供稳定的帧率,本申请实施例提出可以将这些实时抓取到的游戏画面(即上述游戏视频帧数据)和音频(即上述游戏背景音)缓存到云内存(即buffer)中,以便于后续可以从云内存中通过定时器以固定采集间隔抓取相应的数据。比如,本申请实施例可以在采集端将通过定时器所采集到的游戏画面(即缓存在云内存中的游戏视频帧数据)统称为游戏图像数据,并将定时器所记录到的用于采集该游戏图像数据的时间戳统称为图像采集时间戳。同理,本申请实施例可以在采集端将通过定时器所采集到的游戏背景音统称为游戏音频数据,并将定时器所记录到的用于采集该游戏音频数据的时间戳统称为音频采集时间戳。应当理解,为确保后续在观众终端所播放的游戏背景音与游戏画面的音画同步的效果,本申请实施例需要确保图像采集时间戳和音频采集时间戳为同一参考系下的时间戳,以避免数据在云端的多个云服务模块中进行传输所造成的传输延迟。
其中,目标云游戏是由云虚拟容器中的游戏进程运行的;云虚拟容器是由云服务器为云游戏客户端所在的客户端环境***所配置的;应当理解,这里的游戏进程所运行的目标云游戏可以为上述图2所对应实施例中的云游戏实例模块21a所运行的云游戏的云游戏实例。
具体的,云服务器可以基于直播服务连接在云虚拟容器中启动与游戏进程相关联的媒体编码进程;这里的媒体编码进程可以为上述图2所对应实施例中的媒体编码模块21b所提供的与目标云游戏相关联的关联进程。进一步的,云服务器可以通过媒体编码进程所指示的数据采集组件抓取与目标云游戏相关联的游戏背景音频帧数据和游戏视频帧数据,并可以将抓取到的背景音频帧数据和游戏视频帧数据存放至与数据采集组件相关联的云缓存空间;这里的云缓存空间为独立于云虚拟容器的云内存;进一步的,云服务器可以通过媒体编码进程所指示的定时器,从云内存所存储的游戏视频帧数据中采集与第一采集时间间隔所指示的第一帧率相匹配的图像帧,并可以将采集到的图像帧作为目标云游戏的游戏图像数据,并在定时器所指示的参考系下,记录游戏图像数据对应的图像采集时间戳;同理,云服务器也可以通过定时器,从云内存所存储的背景音频帧数据中采集与第二采集时间间隔所指示的第二帧率相匹配的音频帧,将采集到的音频帧作为目标云游戏的游戏音频数据,并在定时器所指示的同一参考系下,记录游戏音频数据对应的音频采集时间戳;第二采集时间间隔记录小于第一采集时间间隔,且第二帧率大于第一帧率。
为便于理解,进一步的,请参见图5,图5是本申请实施例提供的一种通过媒体编码进程抓取游戏画面和音频的场景示意图。如图5所示的云服务器可以为上述图4所对应实施例中的云服务器42a,且图5所示的主播终端可以为上述图4所对应实施例中的游戏终端41a。
其中,如图5所示的云游戏实例51a所对应的游戏进程可以运行在由该云服务器为云游戏客户端所在的客户端环境***所配置的云虚拟容器中。如图5所示,当云服务器与直播服务器之间建立直播服务连接时,该云服务器可以基于该直播服务连接在运行云游戏实例51a的云虚拟容器中一并启动与游戏进程相关联的媒体编码进程51b。其中,应当理解,这里的媒体编码进程51b可以为上述图2所对应实施例中的媒体编码模块21b所提供的与目标云游戏相关联的关联进程。
为便于理解,这类以客户端环境***为上述安卓***为例。如图5所示,这里媒体编码进程51b可以用于通过数据采集组件(例如,Android VirtualDisplay,即Android***提供的一个组件)实时抓取云游戏实例51a的游戏画面(这里的游戏画面指抓取到的目标云游戏的游戏视频帧数据)和音频(这里的音频指目标云游戏的背景音频帧数据,即该背景音频帧数据为实时抓取到的云游戏中的游戏背景音)。应当理解,这里的数据采集组件可以用于抓取云端所提供的虚拟屏幕或者虚拟窗口的画面,即这里的虚拟屏幕或者虚拟窗口可以理解为图5所示的主播终端内的安卓窗口的物理屏幕的拷贝。通过该数据采集组件所抓取到的游戏画面和音频可以存储在与该云虚拟容器相关联的云内存(即云缓存空间)中,即无需在云内存中将其渲染绘制出来。
在本申请实施例中,该媒体编码进程51b可以进行两路编码操作,一路编码操作为按照云游戏编码标准,对抓取到的游戏画面和音频进行音视频编码,以编码得到图5所示的游戏编码流1’。另一路编码操作为按照云直播编码标准,对定时采集到的具有相应帧率的游戏画面和音频进行音视频编码,以编码得到图5所示的直播数据流2’。应当理解,这里之所以需要进行两路编码操作,是因为当媒体传输模块出现传输中断时,会在中断许可时长内暂时中断主播终端侧的游戏服务连接,而并未中断直播服务连接,即观众终端仍可以在中断许可时长内看到主播终端所推流过来的直播视频。这样可以从根本上避免如果玩家出现因为网络异常中断许可时长内暂时断开游戏服务连接,直播也会中断的现象。
如图5所示,云服务器还可以将该编码得到的游戏编码流1’作为前述用户U1针对该主播终端所执行的触摸事件流的响应信息。与此同时,云服务器还可以将编码得到的直播数据流2’推流给图5所示的直播服务器。
其中,应当理解,由于云游戏编码标准无需在玩家玩目标云游戏的过程中,为玩家提供固定帧率和固定帧组长度的音视频数据包。所以,云服务器可以在接收到主播对象针对云游戏客户端执行的触摸事件流时,响应于该触摸事件流在云虚拟容器中运行与该媒体编码进程51b相关联的第一编码线程,并可以通过该第一编码线程所指示的云游戏编码标准对实时抓取到的前述背景音频帧数据进行音频编码,以编码得到目标云游戏的第一音频编码流,与此同时,云服务器还可以通过云游戏编码标准对抓取到的游戏视频帧数据进行视频编码,以得到目标云游戏的第一视频编码流。所以,对于图5的游戏编码流1’而言,可以包含目标云游戏的第一音频编码流和目标云游戏的第一视频编码流。如图5所示,主播终端在接收到该游戏编码流1’时,可以基于快速对该游戏编码流1’ 进行解码处理,以得到用于在云游戏客户端中进行同步播放的背景音频帧数据和游戏视频帧数据。该游戏视频帧数据所对应的游戏画面可以为显示在图5所示的游戏显示界面500a内的直播显示区域中的画面。
其中,可以理解的是,由于直播需要稳定的帧率,所以,本申请实施例提出可以预先将通过上述数据采集组件所抓取到的游戏画面和音频缓存到云内存中,以便于后续可以通过定时器,从云内存中以固定时间间隔抓取相应帧率的音视频数据,以进行编码。具体的,如图5所示,云服务器可以通过该媒体编码进程51b所指示的定时器,从上述云内存所存储的游戏视频帧数据中采集与第一采集时间间隔(例如,每33ms)所指示的第一帧率(例如,30帧/s)相匹配的图像帧,并可以将采集到的图像帧作为目标云游戏的游戏图像数据,并可以在定时器所指示的参考系下,记录游戏图像数据对应的图像采集时间戳;进一步的,云服务器还可以通过定时器,从云内存所存储的背景音频帧数据中采集与第二采集时间间隔(例如,10ms)所指示的第二帧率(例如,100帧/s)相匹配的音频帧,将采集到的音频帧作为目标云游戏的游戏音频数据,并在定时器所指示的同一参考系下,记录游戏音频数据对应的音频采集时间戳。
其中,应当理解,由于编解码设备对视频帧的编码性能的要求会高于编解码设备对音频帧的编码性能的要求,且用户对音频的感知需求较大。所以,为避免定时器采集到过多的视频帧,以及出现音频的卡顿,本申请实施例提出可以在进行音视频的采集过程中,设定该第二采集时间间隔记录小于第一采集时间间隔,这样,该第二采集时间间隔所指示的第二帧率就会大于第一采集时间间隔所指示的第一帧率。基于此,本申请实施例通过在音视频的采集过程中,设置不同的帧率可以从根源上避免在单位采集时间间隔内(即一个第一采集时间间隔内)采集到过多的视频帧,进而可以避免过多的视频帧所造成的视频编码性能的过渡消耗。
其中,如图5所示的云服务器可以用于运行图5所示的云游戏实例51a所对应的游戏进程、媒体编码进程51b和媒体传输进程51c;其中,应当理解,这里的媒体传输进程可以运行在独立于云虚拟容器的辅助虚拟容器中。
可以理解的是,在云游戏直播场景(即上述云游戏的直播推流场景)下,云服务器还可以在云虚拟容器中运行与该媒体编码进程51b相关联的第二编码线程;此时,云服务器可以获取第二编码线程所指示的云直播编码标准,并可以通过云直播编码标准对与第二帧率相关联的游戏音频数据进行音频编码,以得到目标云游戏的第二音频编码流;与此同时,云服务器还可以通过云直播编码标准对与第一帧率相关联的游戏图像数据进行视频编码,以得到目标云游戏的第二视频编码流;这意味着图5所示的直播数据流2’至少可以包含该第二音频编码流和第二视频编码流。
比如,云服务器可以将第二音频编码流和第二视频编码流作为目标云游戏的待处理编码流,进而可以将待处理编码流转发给图5所示的媒体传输进程51c,以使该媒体传输进程51c可以基于待处理编码流在上述辅助云虚拟容器中执行下述步骤S103,以通过该媒体传输进程51c对游戏音频数据和接收到的待处理音频数据进行混音处理,进而可以将混音处理后的混音音频数据、游戏图像数据等转发给图5所示的媒体转发进程52a,进而可以通过媒体转发进程52a对混音音频数据、游戏图像数据等进行音视频编码处理,以得到用于推送给直播服务器的直播数据流2’。
其中,可以理解的是,这里的媒体转发进程可以为上述图2所对应实施例中的媒体转发模块22a所提供的与目标云游戏相关联的其他关联进程。可以理解的是,如上述图2所示,媒体转发模块22a可以在收到start-streaming请求(即上述云游戏直播请求)后,向上述图2所示的媒体编码模块21b请求开启新的一路视频编码(即需要按直播视频的编码要求(即上述云直播编码标准),比如直播的视频要求有固定的帧组长度、固定的帧率),然后,媒体转发模块22a可以开启实时混音(对游戏的声音和主播的声音进行混音),以将(媒体编码模块21b新开的那路)游戏视频流和(混音后)音频流转发到上述媒体转发模块22a。
步骤S103,在获取到云游戏客户端发送的主播对象的待处理音频数据时,对游戏音频数据和待处理音频数据进行混音处理,得到混音音频数据;
其中,混音音频数据对应的混音时间戳与音频采集时间戳保持一致;
具体的,云服务器在获取到云游戏客户端发送的主播对象的待处理音频数据时,可以对待处理音频数据进行解码处理,得到主播对象的待处理音频帧以及待处理音频帧的录制时间戳;进一步的,云服务器可以基于游戏音频数据对应的第二采集时间间隔,获取游戏音频数据中的音频帧,并可以将获取到的音频帧作为参考音频帧,且根据游戏音频数据对应的采集音频时间戳,确定参考音频帧的混音时间戳;进一步的,云服务器可以基于混音时间戳调整录制时间戳,并可以基于调整后的录制时间戳对参考音频帧和待处理音频帧进行混音处理,得到与采集时间戳保持一致的混音时间戳对应的混音音频帧,将得到的混音音频帧和混音音频帧对应的混音时间戳作为目标云游戏的混音音频数据。
可以理解的是,在本申请实施例,用户(例如,上述观众对象)可以感知在观众终端所播放的音画是否同步,机器无法感知是否同步的。所以,在云服务器侧进行云端推流的过程中,需要记录采集到的每个音频帧和视频帧对应的采集时间戳,这样,在进行直播推流的时候,就可以把相应的采集时间戳也一并推送至直播服务器。基于此,在播放端(例如,上述图2所对应实施例中的观众终端D1和观众终端D2),就可以在拉流拿到最近的音频视频帧时,快速根据音频帧和视频帧的采集时间戳做排序和同步(一般是视频向音频同步),进而可以使得在直播客户端中实现音视频的同步播放效果。基于此,本申请实施例着重考虑在云服务器侧进行云端推流时,就预先记录好采集到的音视频帧的采集时间戳,这是音画同步的关键之处,这是因为在多媒体数据(即音视频帧)的传输过程中,每个音视频帧在中转的各个模块中都可能产生延迟,若在媒体转发模发来计算采集时间戳势必是不精确的,所以,本申请实施例提出需要在采集端(比如,媒体编码模块)中预先记录好每个音视频的采集时间戳。
其中,对于运行有直播客户端的播放端而言,播放器对收到的音视频帧的时间戳应满足如下要求:
1)音频的采集时间戳需要单调递增;2)视频的采集时间戳需要单调递增;3)音频和视频的采集时间戳之间的差距不能太大(比如,需要小于1000ms)。
同理,对于云服务器侧的采集端而言,采集端的时间戳应满足如下条件:
1)采集端的音视频帧的到达间隔基本精确。
比如,按上述采集时间间隔,比如音频可以每10ms采集一个音频包,视频可以每33ms采集一个视频包,以保证采集到的音视频帧的帧率的相对稳定。
2)采集端的音视频帧的采集时间戳需要使用同一参考系。
例如:不能音频使用媒体编码模块的时间,而视频使用媒体传输模块的时间。为便于理解,这里以音频和视频均以使用媒体编码模块的时间为例,以记录得到采集到的每个视频帧的视频采集时间戳和每个音频帧的音频采集时间戳。
3)保证交叉输出时的音视频间隔基本精确。
保证编码输出到推流到直播服务器,它们的间隔是稳定的,不然会产生卡顿。
其中,可以理解的是,在本申请实施例中,云服务器可以通过媒体传输进程会对目标云游戏的声音(即上述游戏音频数据)和主播的声音(即上述待处理音频数据)进行混音,但是考虑到用于采集主播的声音的终端(即主播终端)的时间戳不同于用于采集游戏音频数据的时间戳,即两者的时间戳是不一样的,所以,在本申请实施中,云服务器需要选择使用游戏音频数据所对应的音频采集时间戳作为混音后的时间戳,这是因为观众主要关注游戏画面和游戏背景音的同步。
其中,可以理解的是,云服务器在进行混音处理的过程中,可以统计获取到的音频帧的帧数,若音频帧的帧数为M帧,且M为不为零的正整数,则用M表征待进行混音处理的次数;进一步的,云服务器可以基于待进行混音处理的次数,在执行基于混音时间戳调整录制时间戳,基于调整后的录制时间戳对参考音频帧和待处理音频帧进行混音处理的步骤时,对待处理音频帧的音量进行增强处理,且对参考音频帧的音量进行减弱处理。可选的,若音频帧的帧数为空值或者待处理音频帧的帧数为空值,则云服务器还可以不对参考音频帧和待处理音频帧进行混音处理。
其中,可以理解的是,在进行混音的过程中,可以考虑如下几点:
1)若在直播中需要突出主播的声音,则可以在混音时先调低游戏背景音,进而可以在调高主播的声音之后,再进行混音。
2)可以使用WebRTC AudioMixer混音组件进行混音处理,且该混音组件(即WebRTCAudioMixer)在用于进行混音时有个特点:从每个音频流取数据时若所有audio source(即游戏背景音对应的音频帧和直播的声音对应的音频帧)都为空,则混音出来的音频帧是静音数据,而不是返回混音失败。由于静音数据推流到远程会造成播放卡顿。所以在混音前需判断是否所有参与进行混音的音频帧都为空,若是,则不混音。
3)因为音频有固定的采样率的,所以混音的次数不能多、也不能少。多的话声音会乱掉,少的话会有卡顿。所以,这里建议以游戏背景音所对应的固定采集间隔(比如每10ms)来触发进行混音,进而可以避免在一个时间点,因为网络抖动可能造成某路音频流的数据没有来。比如,这样可以避免在T1时间点只混到了其中一路,而在另一个时间点(例如,T2时间点),又只混到了另一路的现象。
基于此,本申请实施例提出可以在混音处理时,选择一个音频流作为主流(主流的输入频率需要是稳定的,比如每秒100个包),进而可以按主流的帧数进行混音。由于游戏背景音的包是稳定输出的,所以可以用它来作为主流,以上述游戏背景音所对应的固定采集间隔(比如每10ms)来触发混音。这样,在进行混音前,可以统计获取到的主流的帧数,如果是0(即前述空值),则不进行混音操作。反之,如果是M(即不为零的正整数),则可以进行M次混音操作。
步骤S104,基于混音音频数据、音频采集时间戳、游戏图像数据和图像采集时间戳,得到目标云游戏对应的直播数据流,将直播数据流通过直播服务器下发至与云游戏客户端相关联的直播客户端,以使直播客户端基于直播数据流中的音频采集时间戳和图像采集时间戳,对混音音频数据和游戏图像数据进行同步播放。
其中,云服务器包含基于云游戏直播请求所启动的媒体转发进程;媒体转发进程用于保持云服务器与直播服务器之间的直播服务连接;可以理解的是,这里的媒体转发进程可以为上述图5所对应实施例中的媒体转发进程52a。
具体的,云服务器可以获取混音音频数据,并可以从混音音频数据中获取混音音频帧以及混音音频帧对应的音频采集时间戳,进而可以基于音频采集时间戳对混音音频帧进行排序处理,将排序处理后的混音音频帧写入与媒体转发进程相关联的音频缓存队列;同理,云服务器可以获取游戏图像数据,并可以从游戏图像数据中获取图像帧以及图像帧对应的图像采集时间戳,进而可以基于图像采集时间戳对图像帧进行排序处理,将排序处理后的图像帧写入与媒体转发进程相关联的视频缓存队列;进一步的,云服务器可以获取与媒体转发进程相关联的平滑获取线程,并可以通过平滑获取线程从视频缓存队列中获取与第一采集时间间隔所指示的第一帧率相匹配的视频数据包,并通过平滑获取线程从音频缓存队列中获取与第二采集时间间隔所指示的第二帧率相匹配的音频数据包;进一步的,云服务器可以将视频数据包和音频数据包进行打包处理,以得到目标云游戏对应的直播数据流,并可以将直播数据流通过直播服务器下发至与云游戏客户端相关联的直播客户端。
其中,云服务器通过平滑获取线程获取视频数据包以及音频数据包的具体过程可以描述为:云服务器可以获取与媒体转发进程相关联的平滑获取线程,且获取与平滑获取线程具有相同采集时间间隔的数据采集组件,并可以基于数据采集组件的采集时间间隔确定与游戏图像数据相关联的第一采集时间间隔和与游戏音频数据相关联的第二采集时间间隔;进一步的,云服务器可以通过平滑获取线程确定与第一采集时间间隔(例如,上述33ms)相匹配的平滑视频获取时间戳,并可以从视频缓存队列中获取图像采集时间戳小于平滑视频获取时间戳的缓存视频帧,进而可以将获取到的缓存视频帧和缓存视频帧对应的图像采集时间戳进行封装处理,得到与第一采集时间间隔所指示的第一帧率相匹配的视频数据包;同理,云服务器可以通过平滑获取线程确定与第二采集时间间隔(例如,10ms)相匹配的平滑音频获取时间戳,从音频缓存队列中获取音频采集时间戳小于平滑音频获取时间戳的缓存音频帧,将获取到的缓存音频帧和缓存音频帧对应的音频采集时间戳进行封装处理,得到与第二采集时间间隔所指示的第二帧率相匹配的音频数据包。
为便于理解,进一步的,请参见图6,图6是本申请实施例提供的一种媒体转发模块的场景示意图。如图6所示的媒体转发模块可以为上述图5所对应实施例中的媒体转发进程所对应的云服务模块。
应当理解,由于在云服务器内部进行多媒体数据传输的过程中,会流经多个模块,且每个模块的处理速度是不同的(比如,每个模块在分别用于处理音频数据和视频数据等多媒体数据时的速度可能存在不同),从而导致在多媒体数据的传输过程中,可能会有丢包、乱序到达、传输拥塞的问题。基于此,若图6所示的媒体转发模块在收到其他模块传来的直播数据流后,直接将该接收到的直播数据流推到直播服务器,势必会造成直播客户端所在的观众终端的卡顿。
综上,本申请实施例为了提升在观众终端进行音视频播放的流程性,本申请实施例提出可以在云服务器侧的媒体转发模块中采用优先级队列+平滑获取线程(即buffer +pacing)的思路来优化这个问题。即云服务器中的媒体转发模块在收到音频帧和视频帧时,无需马上发送出去,比如,可以按照接收到的帧率将其存储至图6所述的优先级队列。
具体的,如图6所示,媒体转发模块可以暂时将收到的音频帧进行音频处理之后,存入到图6所示的优先级队列,并可以暂时将收到的视频帧进行视频处理之后,存入到图6所示的优先级队列。应当理解,这里的优先级队列可以包含用于存储音频帧的音频缓存队列和用于存储视频帧的视频缓存队列。其中,应当理解,在本申请实例中,写入优先级队列中的音频帧和视频帧均需要按照采集时间戳进行排序处理,以便于后续可以通过平滑获取线程从优先级队列中可以优先取采集时间戳较小的数据帧,进而可以尽可能地避免内部传输/处理过程中的抖动和乱序问题。
其中,如图6所示,该媒体转发模块中的另一个pacing线程按(即平滑获取线程)则可以在固定间隔内从优先级队列中尝试获取音视频包,进而可以将在固定间隔内所获取到的带有相应采集时间戳的音视频包(即图6所示的直播数据流)平滑地推送到直播服务器。比如,对于视频数据包而言,可以通过该平滑获取线程(即pacing线程)从前述视频缓存队列中获取与第一采集时间间隔(例如,33ms)所指示的第一帧率相匹配的视频数据包,并可以通过平滑获取线程从前述音频缓存队列中获取与第二采集时间间隔(例如,10ms)所指示的第二帧率相匹配的音频数据包,这样,通过buffer + pacing的平滑策略可以从一定程度上解决接收到的音频帧和视频帧的帧率所出现的抖动,进而可以从根源上确保需要转发出去的音频数据包和视频数据包的稳定性和平滑度。
应当理解,通常情况下,在缓存时长内,当前推入优先级队列的音视频包的时间戳大概率会比之前推入优先级队列的音视频包的时间戳大,但是,不排除偶尔会因为传输抖动而造成一定的乱序问题(例如,当前推入优先级队列的音视频包的时间戳比之前推入优先级队列的音视频包的时间戳小的现象)。
为便于理解,进一步的,请参见图7,图7是本申请实施例提供的一种优先级队列的场景示意图。如图7所示的优先级队列采用双向链表的方式来确保每次推入队列的音视频包的时间戳大概率会比之前推入优先级队列的音视频包的时间戳大。比如,如图7所示的优先级队列的队头节点可以用于存储采集时间戳较小的音视频数据包,且图7所示的优先级队列的队尾节点可以用于存储采集时间戳较大的音视频数据包。应当理解,这里的对头节点和队尾节点以及其他的一些中间节点均存储在云服务器的云内存中。
其中,可以理解的是,在出队列时,该媒体转发模块可以通过上述pacing线程,基于该双向链接所指示的路径(例如,时间戳由小到大的路径)向后移动队头节点的指针。
在本申请实施例中,计算机设备(例如,云服务器)可以在接收到云游戏客户端发送的针对目标云游戏的云游戏直播请求时,基于云游戏直播请求建立云服务器与云游戏客户端相关联的直播服务器之间的直播服务连接;进一步的,计算机设备(例如,云服务器)可以基于直播服务连接获取目标云游戏的游戏图像数据和游戏音频数据,并可以记录游戏图像数据对应的图像采集时间戳和游戏音频数据对应的音频采集时间戳;其中,为避免数据传输延迟过程中音视频同步的不准确性,本申请实施例提出可以在云游戏直播场景下,确保图像采集时间戳和音频采集时间戳为同一参考系下的时间戳,进而可以基于同一参考系下的这些时间戳实现音视频同步的可靠性;进一步的,计算机设备在获取到云游戏客户端发送的主播对象的待处理音频数据时,对游戏音频数据和待处理音频数据进行混音处理,得到混音音频数据;应当理解,在云游戏直播场景下,主播对象的声音(即待处理音频数据)是由云游戏客户端录制得到的,游戏背景音(即游戏音频数据)是由计算机设备(即云服务器)在云端抓取得到的,考虑到云游戏客户端与云服务器之间存在数据传输,且观众用户所能感知到的是游戏画面和游戏背景音的同步,所以,在对主播对象的声音(即待处理音频数据)和游戏背景音(即游戏音频数据)进行混音的过程中,可以将游戏背景音(即游戏音频数据)的音频采集时间戳作为参考,以使得混音后所得到的混音音频数据对应的混音时间戳与音频采集时间戳保持一致;进一步的,计算机设备可以基于混音音频数据、音频采集时间戳、游戏图像数据和图像采集时间戳,得到目标云游戏对应的直播数据流,进而可以将直播数据流通过直播服务器下发至与云游戏客户端相关联的直播客户端,以使直播客户端基于直播数据流中的音频采集时间戳和图像采集时间戳,对混音音频数据和游戏图像数据进行同步播放。由此可见,在云游戏直播场景下,云游戏客户端并不会直接向直播服务器推送直播数据流,而是通过该云服务器来向直播服务器进行直播数据流的推送,从而可以利用云服务器强大的计算能力,从根源上降低对云游戏客户端侧的性能消耗。另外,通过在云服务器侧进行基于音频采集时间戳和图像采集时间戳进行音视频的同步,不仅可以解决直播推流过程中因抖动、乱序等所造成的音视频不同步的现象,还可以实现多路混音的同步及卡顿问题,进而可以实现音视频同步的可靠性,这样,当在直播客户端中基于直播数据流中的音频采集时间戳和图像采集时间戳,对混音音频数据和游戏图像数据进行同步播放时,可以提升混音后的音视频的同步播放效果。
进一步地,请参见图8,图8是本申请实施例提供的一种游戏数据处理方法的流程示意图。如图8所示,该计算机设备可以为上述图3所对应实施例中的云服务器。其中,该方法至少可以包括以下步骤S201-步骤S210:
步骤S201,在获取到云游戏客户端针对目标云游戏发送的游戏访问请求时,基于游戏访问请求对云游戏客户端对应的游戏启动标识进行鉴权处理,得到游戏启动标识对应的鉴权结果;
其中,可以理解的是,在本申请实施例中,玩家游戏终端可以用于作为该云游戏客户端的前端,且该云服务器可以用于作为该云游戏客户端的后台,这样,当云服务器获取到该玩家游戏终端中的游戏对象(例如,游戏用户)发送的游戏访问请求之后,可以提取该游戏访问请求中所携带的该云游戏客户端对应的游戏启动标识(例如,该游戏用户的游戏账号),进而可以对游戏启动标识(例如,该游戏用户的游戏账号)进行鉴权处理,以得到游戏启动标识对应的鉴权结果。应当理解,若云服务器确认鉴权成功,即该游戏用户所对应的云游戏客户端具有通过游戏启动标识访问目标云游戏的权限时,则可以进一步执行下述步骤S202。
其中,游戏访问请求中还可以携带云游戏客户端所在的客户端环境***;这里的客户端环境***可以包含但不限于安卓***,比如,这里的客户端环境***还可以包含在玩家游戏终端中所运行的鸿蒙***、苹果***等。
步骤S202,若鉴权结果指示云游戏客户端具有通过游戏启动标识访问目标云游戏的权限,则建立云服务器与云游戏客户端之间的游戏服务连接,且基于游戏服务连接为云游戏客户端所在的客户端环境***配置用于运行目标云游戏的云虚拟容器;
其中,可以理解的是,在本申请实施例中,该云服务器可以用于运行多个云虚拟容器,每个云虚拟容器均为一个容器实例。其中,可以理解的是,每个容器实例中均可以运行与相应玩家游戏终端(例如,上述图2所示的主播终端A)中的客户端环境***(例如,安卓***)相匹配的远程移动游戏运行环境,比如,本申请实施例可以将在该云服务器中为每个玩家用户终端所虚拟出的远程移动游戏运行环境统称为云游戏环境***,例如,这里的云游戏环境***可以为在该云服务器中为每个用户终端所虚拟出的远程的安卓***,这样,任意一个云虚拟容器均可以用于为对应玩家游戏终端提供基础的安卓运行环境。比如,云服务器在为具有直播功能的前述主播终端A配置好用于运行目标云游戏的云虚拟容器时,可以进一步执行下述步骤S203。
步骤S203,在云虚拟容器中启动目标云游戏的游戏进程,通过游戏进程运行目标云游戏。
此外,应当理解的是,当游戏用户在玩家游戏终端(例如,前述主播终端A)中触发目标云游戏的游戏图标时,可以在该云虚拟容器中启动与该游戏图标相关联的游戏进程,进而可以在该云虚拟容器中为该游戏进程分配相应的帧缓冲区,以利用容器内的渲染技术实现内部渲染,以渲染得到用于显示在玩家游戏终端(例如,前述主播终端A)中的游戏显示界面。该游戏显示界面中可以包含具有操控游戏角色执行相应业务功能的业务控件。
其中,云游戏客户端对应的游戏显示界面上还可以包含用于指示主播对象进行云游戏直播的直播指示控件;此时,主播对象可以为通过游戏启动标识访问(即接入)目标云游戏的游戏对象;
步骤S204,接收云游戏客户端发送的针对目标云游戏的云游戏直播请求,基于云游戏直播请求建立云服务器与云游戏客户端相关联的直播服务器之间的直播服务连接。
具体的,云服务器可以接收云游戏客户端发送的针对目标云游戏的云游戏直播请求;其中,云游戏直播请求是云游戏客户端响应于主播对象针对直播指示控件执行的触发操作所生成的;进一步的,云服务器可以基于云游戏直播请求中所携带的游戏启动标识向与云游戏客户端相关联的直播服务器发送直播认证请求,以使直播服务器基于直播认证请求为云游戏客户端配置用于直播目标云游戏的直播推流地址;进一步的,云服务器可以接收直播服务器返回的直播推流地址,在将直播推流地址返回给云游戏客户端时,触发建立云服务器与直播服务器之间的直播服务连接。
步骤S205,基于直播服务连接获取目标云游戏的游戏图像数据和游戏音频数据,记录游戏图像数据对应的图像采集时间戳和游戏音频数据对应的音频采集时间戳;
其中,图像采集时间戳和音频采集时间戳为同一参考系下的时间戳;
步骤S206,在获取到云游戏客户端发送的主播对象的待处理音频数据时,对游戏音频数据和待处理音频数据进行混音处理,得到混音音频数据;
其中,混音音频数据对应的混音时间戳与音频采集时间戳保持一致。
步骤S207,基于混音音频数据、音频采集时间戳、游戏图像数据和图像采集时间戳,得到目标云游戏对应的直播数据流,将直播数据流通过直播服务器下发至与云游戏客户端相关联的直播客户端,以使直播客户端基于直播数据流中的音频采集时间戳和图像采集时间戳,对混音音频数据和游戏图像数据进行同步播放;
其中,步骤S204-步骤S207的具体实现方式,可以参见上述图3所对应实施例对步骤S101-步骤S104的描述,这里将不再继续进行赘述。
步骤S208,在直播数据流中获取具有最大音频采集时间戳的音频数据包作为辅助音频数据包,且在直播数据流中获取具有最大图像采集时间戳的视频数据包作为辅助视频数据包;
步骤S209,若通过平滑获取线程记录到待发送给直播服务器的下一个音频数据包的音频采集时间戳小于已发送的辅助音频数据包的最大音频采集时间戳,则丢弃待发送给直播服务器的下一个音频数据包;
步骤S210,若通过平滑获取线程记录到待发送给直播服务器的下一个视频数据包的视频采集时间戳小于已发送的辅助视频数据包的最大视频采集时间戳,则丢弃待发送给直播服务器的下一个视频数据包。
应当理解,在本申请实施例中,云服务器还可以在执行完上述步骤S207之后,继续执行前述步骤S208-步骤S210,进而可以从根源上避免因网络抖动所引起的乱序问题,从而可以提升音视频同步播放的流畅性。
应当理解,由于在云服务器内部进行多媒体数据传输的过程中,会流经多个云服务模块,且每个云服务模块的处理速度是不同的(比如,每个云服务模块在分别用于处理音频数据和视频数据等多媒体数据时的速度可能存在不同),从而导致在多媒体数据的传输过程中,可能会有丢包、乱序到达、传输拥塞的问题。基于此,若云服务器中的媒体转发模块在收到其他云服务模块传来的直播数据流后,直接将该接收到的直播数据流推到直播服务器,势必会造成直播客户端所在的观众终端的卡顿。
为便于理解,进一步的,请参见图9,图9是本申请实施例提供的一种通过媒体转发模块对收到的音频帧和视频帧进行平滑处理的场景示意图。如图9所示,媒体转发模块可以用于接收由其他云服务模块(即上述媒体传输模块)转发的混音处理后的音频数据流和由上述第二编码线程所编码得到的视频数据流。具体的,如图9所示的曲线91a可以用于表征该媒体转发模块所接收到的混音处理后的音频数据流中的音频帧的接收帧率,比如,音频帧的接收帧率可以为上述第二采集时间间隔所指示的第二帧率,例如,100帧/s。同理,如图9所示的曲线92a可以用于表征该媒体转发模块所接收到的由上述第二编码线程所编码得到的视频数据流中的视频帧的接收帧率,比如,视频帧的接收帧率可以为上述第一采集时间间隔所指示的第一帧率,例如,30帧/s。
如图9所示,本申请实施例为了提升在观众终端进行音视频播放的流程性,本申请实施例提出在云服务器侧使用优先级队列+平滑获取线程(即buffer + pacing)的思路来优化这个问题。即云服务器中的媒体转发模块在收到音频帧和视频帧时,无需马上发送出去,而是暂时将收到的音频帧和视频帧存入到优先级队列(这里的优先级队列可以包含用于存储音频帧的音频缓存队列和用于存储视频帧的视频缓存队列)中,另一个pacing线程按(即平滑获取线程)则可以在固定间隔内从优先级队列中尝试获取音视频包,进而可以将在固定间隔内所获取到的带有相应采集时间戳的音视频包平滑地发送到直播服务器。
具体的,如图9所示的曲线91b可以用于表征该媒体转发模块按照与前述采集端相同的采集时间间隔从优先级队列中尝试获取到的音频包的发送帧率,比如,此时,待发送的音频帧的发送帧率可以为上述第二采集时间间隔所指示的第二帧率,例如,100帧/s。同理,如图9所示的曲线92b可以用于表征该媒体转发模块按照与前述采集端相同的采集时间间隔从优先级队列中尝试获取到的视频包的发送帧率,比如,此时,待发送的视频帧的发送帧率可以为上述第一采集时间间隔所指示的第一帧率,例如,30帧/s。由此可见,对于图9所示的媒体转发模块而言,在经过上述优先级队列+平滑获取线程(即buffer + pacing)策略来对接收到的音视频流进行平滑处理之后,可以对接收到的存在抖动的音视频帧的曲线进行平滑处理,进而可以在云游戏直播场景下,提升在观众终端播放音视频的稳定性和流畅性。
应当理解,通常情况下,在缓存时长内,当前推入优先级队列的音视频包的时间戳大概率会比之前推入优先级队列的音视频包的时间戳大,但是,不排除偶尔会因为传输抖动而造成一定的乱序问题(例如,当前推入优先级队列的音视频包的时间戳比之前推入优先级队列的音视频包的时间戳小的现象)。
基于此,考虑到上述优先级队列可用于缓存最近一段时间(例如,1~2秒的缓存时长内)的帧数据,所以,若云服务器内部之间的各个模块因为网络传输问题等出现乱序抖动,且乱序抖动的抖动时长超过了该优先级队列的缓存时长,则可以通过pacing线程所记录的最后一个音视频包的时间戳来快速判断是否需要丢弃下一次采集到的音视频包。
比如,本申请实施例所公开的云服务器在通过pacing线程从优先级队列中获取到一个或者多个音视频包,并向直播服务器发送完获取到的每个音视频包后,需要记录发送的这些音视频包中的最后一个音频包的时间戳和视频包的时间戳,这样,如果pacing线程当前从优先级队列中获取到下一个音视频包的时间戳小于前一个音视频包的时间戳(即前述记录的最后一个音频包的时间戳和视频包的时间戳),则可以丢弃当前获取到的下一个音视频包的时间戳。
在本申请实施例中,考虑到在云游戏直播场景下,云游戏客户端并不会直接向直播服务器推送直播数据流,而是通过该云服务器来向直播服务器进行直播数据流的推送,从而可以利用云服务器强大的计算能力,从根源上降低对云游戏客户端侧的性能消耗。另外,通过在云服务器侧进行基于音频采集时间戳和图像采集时间戳进行音视频的同步,不仅可以解决直播推流过程中因抖动、乱序等所造成的音视频不同步的现象,还可以实现多路混音的同步及卡顿问题,进而可以实现音视频同步的可靠性,这样,当在直播客户端中基于直播数据流中的音频采集时间戳和图像采集时间戳,对混音音频数据和游戏图像数据进行同步播放时,可以提升混音后的音视频的同步播放效果。
进一步地,请参见图10,图10是本申请实施例提供的一种游戏数据处理装置的结构示意图。游戏数据处理装置1可以应用于计算机设备,该计算机设备可以为上述图2所对应实施例中的云服务器B。进一步地,游戏数据处理装置1可以包括:直播请求接收模块10,数据获取模块20,混音处理模块30和直播流下发模块40;可选的,在直播请求接收模块10接收云游戏客户端发送的针对目标云游戏的云游戏直播请求之前,游戏数据处理装置1还包括:访问请求获取模块50,游戏服务建立模块60和云游戏运行模块70;
直播请求接收模块10,用于接收云游戏客户端发送的针对目标云游戏的云游戏直播请求,基于云游戏直播请求建立云服务器与云游戏客户端相关联的直播服务器之间的直播服务连接;
访问请求获取模块50,用于在获取到云游戏客户端针对目标云游戏发送的游戏访问请求时,基于游戏访问请求对云游戏客户端对应的游戏启动标识进行鉴权处理,得到游戏启动标识对应的鉴权结果;游戏访问请求中携带云游戏客户端所在的客户端环境***;
游戏服务建立模块60,用于若鉴权结果指示云游戏客户端具有通过游戏启动标识访问目标云游戏的权限,则建立云服务器与云游戏客户端之间的游戏服务连接,且基于游戏服务连接为云游戏客户端所在的客户端环境***配置用于运行目标云游戏的云虚拟容器;
云游戏运行模块70,用于在云虚拟容器中启动目标云游戏的游戏进程,通过游戏进程运行目标云游戏。
其中,云游戏客户端对应的游戏显示界面上包含用于指示主播对象进行云游戏直播的直播指示控件;主播对象为通过游戏启动标识访问目标云游戏的游戏对象;
直播请求接收模块10包括:直播请求接收单元101,认证请求接收单元102,服务连接建立单元103;
直播请求接收单元101,用于接收云游戏客户端发送的针对目标云游戏的云游戏直播请求;云游戏直播请求是云游戏客户端响应于主播对象针对直播指示控件执行的触发操作所生成的;
认证请求接收单元102,用于基于云游戏直播请求中所携带的游戏启动标识向与云游戏客户端相关联的直播服务器发送直播认证请求,以使直播服务器基于直播认证请求为云游戏客户端配置用于直播目标云游戏的直播推流地址;
服务连接建立单元103,用于接收直播服务器返回的直播推流地址,在将直播推流地址返回给云游戏客户端时,触发建立云服务器与直播服务器之间的直播服务连接。
其中,直播请求接收单元101,认证请求接收单元102,服务连接建立单元103的具体实现方式,可以参见上述图3所对应实施例中对步骤S101的描述,这里将不再继续进行赘述。
数据获取模块20,用于基于直播服务连接获取目标云游戏的游戏图像数据和游戏音频数据,记录游戏图像数据对应的图像采集时间戳和游戏音频数据对应的音频采集时间戳;图像采集时间戳和音频采集时间戳为同一参考系下的时间戳;
其中,目标云游戏是由云虚拟容器中的游戏进程运行的;云虚拟容器是由云服务器为云游戏客户端所在的客户端环境***所配置的;
数据获取模块20包括:编码进程启动单元201,数据抓取单元202,图像数据采集单元203和音频数据采集单元204;可选的,数据获取模块20还包括:第一编码线程运行单元205,第一音频编码单元206,第一视频编码单元207,游戏流返回单元208,第二编码线程运行单元209,第二音频编码单元210,第二视频编码单元211和编码流转发单元212;
编码进程启动单元201,用于基于直播服务连接在云虚拟容器中启动与游戏进程相关联的媒体编码进程;
数据抓取单元202,用于通过媒体编码进程所指示的数据采集组件抓取与目标云游戏相关联的背景音频帧数据和游戏视频帧数据,将抓取到的背景音频帧数据和游戏视频帧数据存放至与数据采集组件相关联的云缓存空间;云缓存空间为独立于云虚拟容器的云内存;
图像数据采集单元203,用于通过媒体编码进程所指示的定时器,从云内存中采集与第一采集时间间隔所指示的第一帧率相匹配的图像帧,将采集到的图像帧作为目标云游戏的游戏图像数据,并在定时器所指示的参考系下,记录游戏图像数据对应的图像采集时间戳;
音频数据采集单元204,用于通过定时器,从云内存中采集与第二采集时间间隔所指示的第二帧率相匹配的音频帧,将采集到的音频帧作为目标云游戏的游戏音频数据,并在定时器所指示的同一参考系下,记录游戏音频数据对应的音频采集时间戳;第二采集时间间隔记录小于第一采集时间间隔,且第二帧率大于第一帧率。
可选的,第一编码线程运行单元205,用于在云虚拟容器中运行与媒体编码进程相关联的第一编码线程;
第一音频编码单元206,用于获取第一编码线程所指示的云游戏编码标准,通过云游戏编码标准对抓取到的背景音频帧数据进行音频编码,得到目标云游戏的第一音频编码流;
第一视频编码单元207,用于通过云游戏编码标准对抓取到的游戏视频帧数据进行视频编码,得到目标云游戏的第一视频编码流;
游戏流返回单元208,用于将第一音频编码流和第一视频编码流作为目标云游戏的游戏编码流,将游戏编码流返回给云游戏客户端,以使云游戏客户端对游戏编码流进行解码处理,得到用于在云游戏客户端中进行同步播放的背景音频帧数据和游戏视频帧数据。
可选的,其中,云服务器用于运行游戏进程、媒体编码进程和媒体传输进程;媒体传输进程运行在独立于云虚拟容器的辅助虚拟容器中;
第二编码线程运行单元209,用于在云虚拟容器中运行与媒体编码进程相关联的第二编码线程;
第二音频编码单元210,用于获取第二编码线程所指示的云直播编码标准,通过云直播编码标准对与第二帧率相关联的游戏音频数据进行音频编码,得到目标云游戏的第二音频编码流;
第二视频编码单元211,用于通过云直播编码标准对与第一帧率相关联的游戏图像数据进行视频编码,得到目标云游戏的第二视频编码流;
编码流转发单元212,用于将第二音频编码流和第二视频编码流作为目标云游戏的待处理编码流,将待处理编码流转发给媒体传输进程,以使媒体传输进程通知混音处理模块30基于待处理编码流在辅助云虚拟容器中执行在获取到云游戏客户端发送的主播对象的待处理音频数据时,对游戏音频数据和待处理音频数据进行混音处理,得到混音音频数据的步骤。
其中,编码进程启动单元201,数据抓取单元202,图像数据采集单元203和音频数据采集单元204的具体实现方式,可以参见上述图3所对应实施例对步骤S102的描述,这里将不再继续进行赘述。可选的,第一编码线程运行单元205,第一音频编码单元206,第一视频编码单元207,游戏流返回单元208,第二编码线程运行单元209,第二音频编码单元210,第二视频编码单元211和编码流转发单元212的具体实现方式,可以参见上述图3所对应实施例中对媒体编码进程的描述,这里将不再继续进行赘述。
混音处理模块30,用于在获取到云游戏客户端发送的主播对象的待处理音频数据时,对游戏音频数据和待处理音频数据进行混音处理,得到混音音频数据;混音音频数据对应的混音时间戳与音频采集时间戳保持一致;
其中,混音处理模块30包括:音频解码单元301,参考音频帧获取单元302,混音处理单元303;可选的,混音处理模块30还包括:音频帧统计单元304,音量调整单元305和空值检测单元306;
音频解码单元301,用于在获取到云游戏客户端发送的主播对象的待处理音频数据时,对待处理音频数据进行解码处理,得到主播对象的待处理音频帧以及待处理音频帧的录制时间戳;
参考音频帧获取单元302,用于基于游戏音频数据对应的第二采集时间间隔,获取游戏音频数据中的音频帧,将获取到的音频帧作为参考音频帧,且根据游戏音频数据对应的采集音频时间戳,确定参考音频帧的混音时间戳;
混音处理单元303,用于基于混音时间戳调整录制时间戳,基于调整后的录制时间戳对参考音频帧和待处理音频帧进行混音处理,得到与采集时间戳保持一致的混音时间戳对应的混音音频帧,将得到的混音音频帧和混音音频帧对应的混音时间戳作为目标云游戏的混音音频数据。
可选的,音频帧统计单元304,用于统计获取到的音频帧的帧数,若音频帧的帧数为M帧;M为不为零的正整数,且M用于表征待进行混音处理的次数;
音量调整单元305,用于基于待进行混音处理的次数,在执行基于混音时间戳调整录制时间戳,基于调整后的录制时间戳对参考音频帧和待处理音频帧进行混音处理的步骤时,对待处理音频帧的音量进行增强处理,且对参考音频帧的音量进行减弱处理。
可选的,空值检测单元306,用于若音频帧的帧数为空值或者待处理音频帧的帧数为空值,则不对参考音频帧和待处理音频帧进行混音处理。
其中,音频解码单元301,参考音频帧获取单元302,混音处理单元303的具体实现方式,可以参见上述图3所对应实施例对获取混音音频帧的具体过程的描述,这里将不再继续进行赘述。可选的,音频帧统计单元304,音量调整单元305和空值检测单元306的具体实现方式,可以参见上述图3所对应实施例对混音处理的具体过程的描述,这里将不再继续进行赘述。
直播流下发模块40,用于基于混音音频数据、音频采集时间戳、游戏图像数据和图像采集时间戳,得到目标云游戏对应的直播数据流,将直播数据流通过直播服务器下发至与云游戏客户端相关联的直播客户端,以使直播客户端基于直播数据流中的音频采集时间戳和图像采集时间戳,对混音音频数据和游戏图像数据进行同步播放。
其中,云服务器包含基于云游戏直播请求所启动的媒体转发进程;媒体转发进程用于保持云服务器与直播服务器之间的直播服务连接;
直播流下发模块40包括:音频排序处理单元401,图像排序处理单元402,数据包获取单元403和打包下发单元404;可选的,直播流下发模块40还包括:辅助包获取单元405,音频包丢弃单元406和视频包丢弃单元407;
音频排序处理单元401,用于获取混音音频数据,从混音音频数据中获取混音音频帧以及混音音频帧对应的音频采集时间戳,基于音频采集时间戳对混音音频帧进行排序处理,将排序处理后的混音音频帧写入与媒体转发进程相关联的音频缓存队列;
图像排序处理单元402,用于获取游戏图像数据,从游戏图像数据中获取图像帧以及图像帧对应的图像采集时间戳,基于图像采集时间戳对图像帧进行排序处理,将排序处理后的图像帧写入与媒体转发进程相关联的视频缓存队列;
数据包获取单元403,用于获取与媒体转发进程相关联的平滑获取线程,通过平滑获取线程从视频缓存队列中获取与第一采集时间间隔所指示的第一帧率相匹配的视频数据包,并通过平滑获取线程从音频缓存队列中获取与第二采集时间间隔所指示的第二帧率相匹配的音频数据包;
其中,数据包获取单元403包括:时间间隔获取子单元4031,视频帧获取子单元4032和音频帧获取子单元4033;
时间间隔获取子单元4031,用于获取与媒体转发进程相关联的平滑获取线程,且获取与平滑获取线程具有相同采集时间间隔的数据采集组件,基于数据采集组件的采集时间间隔确定与游戏图像数据相关联的第一采集时间间隔和与游戏音频数据相关联的第二采集时间间隔;
视频帧获取子单元4032,用于通过平滑获取线程确定第一采集时间间隔相匹配的平滑视频获取时间戳,从视频缓存队列中获取图像采集时间戳小于平滑视频获取时间戳的缓存视频帧,将获取到的缓存视频帧和缓存视频帧对应的图像采集时间戳进行封装处理,得到与第一采集时间间隔所指示的第一帧率相匹配的视频数据包;
音频帧获取子单元4033,用于通过平滑获取线程确定第二采集时间间隔相匹配的平滑音频获取时间戳,从视频缓存队列中获取音频采集时间戳小于平滑音频获取时间戳的缓存音频帧,将获取到的缓存音频帧和缓存音频帧对应的音频采集时间戳进行封装处理,得到与第二采集时间间隔所指示的第二帧率相匹配的音频数据包。
其中,时间间隔获取子单元4031,视频帧获取子单元4032和音频帧获取子单元4033的具体实现方式,可以参见上述图3所对应实施例对平滑获取线程的描述,这里将不再继续进行赘述。
打包下发单元404,用于将视频数据包和音频数据包进行打包处理,得到目标云游戏对应的直播数据流,将直播数据流通过直播服务器下发至与云游戏客户端相关联的直播客户端。
可选的,其中,在直播流下发模块40将直播数据流通过直播服务器下发至与云游戏客户端相关联的直播客户端之后,辅助包获取单元405,用于在直播数据流中获取具有最大音频采集时间戳的音频数据包作为辅助音频数据包,且在直播数据流中获取具有最大图像采集时间戳的视频数据包作为辅助视频数据包;
音频包丢弃单元406,用于若通过平滑获取线程记录到待发送给直播服务器的下一个音频数据包的音频采集时间戳小于已发送的辅助音频数据包的最大音频采集时间戳,则丢弃待发送给直播服务器的下一个音频数据包;
视频包丢弃单元407,用于若通过平滑获取线程记录到待发送给直播服务器的下一个视频数据包的视频采集时间戳小于已发送的辅助视频数据包的最大视频采集时间戳,则丢弃待发送给直播服务器的下一个视频数据包。
其中,音频排序处理单元401,图像排序处理单元402,数据包获取单元403和打包下发单元404的具体实现方式,可以参见上述图3所对应实施例对媒体转发进程的描述,这里将不再继续进行赘述。可选的,辅助包获取单元405,音频包丢弃单元406和视频包丢弃单元407的具体实现方式,可以参见上述图3所对应实施例对优先级队列的描述,这里将不再继续进行赘述。
其中,直播请求接收模块10,数据获取模块20,混音处理模块30和直播流下发模块40的具体实现方式,可以一并参见上述图3所对应实施例中对步骤S101-步骤S104的描述,这里将不再继续进行赘述。可选的,访问请求获取模块50,游戏服务建立模块60和云游戏运行模块70的具体实现方式,可以一并参见上述图8所对应实施例中对步骤S201-步骤S203的描述,这里将不再继续进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
进一步地,请参见图11,图11是本申请实施例提供的一种计算机设备的结构示意图。如图11所示,该计算机设备1000可以为云服务器,该云服务器可以为上述图2所对应实施例中的云服务器B。该计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图11所示,作为一种计算机存储介质的存储器1005中可以包括操作***、网络通信模块、用户接口模块以及设备控制应用程序。
其中,计算机设备1000中的网络接口1004还可以与上述图1所对应实施例中的主播终端集群中的任一主播终端进行网络连接。在图11所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以执行前文图3或图8所对应实施例中对游戏数据处理方法的描述,也可执行前文图10所对应实施例中对游戏数据处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机存储介质,且计算机存储介质中存储有前文提及的游戏数据处理装置1所执行的计算机程序,且计算机程序包括程序指令,当处理器执行程序指令时,能够执行前文图3或图8所对应实施例中对游戏数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。作为示例,程序指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行,分布在多个地点且通过通信网络互连的多个计算设备可以组成区块链***。
本申请一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备可执行前文图3或者图8所对应实施例中对游戏数据处理方法的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (14)
1.一种游戏数据处理方法,其特征在于,包括:
接收云游戏客户端发送的针对目标云游戏的云游戏直播请求,基于所述云游戏直播请求建立云服务器与所述云游戏客户端相关联的直播服务器之间的直播服务连接;
基于所述直播服务连接获取所述目标云游戏的游戏图像数据和游戏音频数据,记录所述游戏图像数据对应的图像采集时间戳和所述游戏音频数据对应的音频采集时间戳;所述图像采集时间戳和所述音频采集时间戳为同一参考系下的时间戳;
在获取到所述云游戏客户端发送的主播对象的待处理音频数据时,对所述游戏音频数据和待处理音频数据进行混音处理,得到混音音频数据;所述混音音频数据对应的混音时间戳与所述音频采集时间戳保持一致;
基于所述混音音频数据、所述音频采集时间戳、所述游戏图像数据和所述图像采集时间戳,得到所述目标云游戏对应的直播数据流,将所述直播数据流通过所述直播服务器下发至与所述云游戏客户端相关联的直播客户端,以使所述直播客户端基于所述直播数据流中的所述音频采集时间戳和所述图像采集时间戳,对所述混音音频数据和所述游戏图像数据进行同步播放;
其中,所述云服务器包含基于所述云游戏直播请求所启动的媒体转发进程;所述媒体转发进程用于保持所述云服务器与所述直播服务器之间的所述直播服务连接;
所述基于所述混音音频数据、所述音频采集时间戳、所述游戏图像数据和所述图像采集时间戳,得到所述目标云游戏对应的直播数据流,将所述直播数据流通过所述直播服务器下发至与所述云游戏客户端相关联的直播客户端,包括:
获取所述混音音频数据,从所述混音音频数据中获取混音音频帧以及所述混音音频帧对应的所述音频采集时间戳,基于所述音频采集时间戳对所述混音音频帧进行排序处理,将排序处理后的混音音频帧写入与所述媒体转发进程相关联的音频缓存队列;
获取所述游戏图像数据,从所述游戏图像数据中获取图像帧以及所述图像帧对应的所述图像采集时间戳,基于所述图像采集时间戳对所述图像帧进行排序处理,将排序处理后的图像帧写入与所述媒体转发进程相关联的视频缓存队列;
获取与媒体转发进程相关联的平滑获取线程,通过所述平滑获取线程从所述视频缓存队列中获取与第一采集时间间隔所指示的第一帧率相匹配的视频数据包,并通过所述平滑获取线程从所述音频缓存队列中获取与第二采集时间间隔所指示的第二帧率相匹配的音频数据包;
将所述视频数据包和所述音频数据包进行打包处理,得到所述目标云游戏对应的直播数据流,将所述直播数据流通过所述直播服务器下发至与所述云游戏客户端相关联的直播客户端。
2.根据权利要求1所述的方法,其特征在于,在所述接收云游戏客户端发送的针对目标云游戏的云游戏直播请求之前,所述方法还包括:
在获取到云游戏客户端针对目标云游戏发送的游戏访问请求时,基于所述游戏访问请求对所述云游戏客户端对应的游戏启动标识进行鉴权处理,得到所述游戏启动标识对应的鉴权结果;所述游戏访问请求中携带所述云游戏客户端所在的客户端环境***;
若所述鉴权结果指示所述云游戏客户端具有通过所述游戏启动标识访问所述目标云游戏的权限,则建立所述云服务器与所述云游戏客户端之间的游戏服务连接,且基于所述游戏服务连接为所述云游戏客户端所在的客户端环境***配置用于运行所述目标云游戏的云虚拟容器;
在所述云虚拟容器中启动所述目标云游戏的游戏进程,通过所述游戏进程运行所述目标云游戏。
3.根据权利要求2所述的方法,其特征在于,所述云游戏客户端对应的游戏显示界面上包含用于指示所述主播对象进行云游戏直播的直播指示控件;所述主播对象为通过所述游戏启动标识访问所述目标云游戏的游戏对象;
所述接收云游戏客户端发送的针对目标云游戏的云游戏直播请求,基于所述云游戏直播请求建立云服务器与所述云游戏客户端相关联的直播服务器之间的直播服务连接,包括:
接收云游戏客户端发送的针对所述目标云游戏的云游戏直播请求;所述云游戏直播请求是所述云游戏客户端响应于所述主播对象针对所述直播指示控件执行的触发操作所生成的;
基于所述云游戏直播请求中所携带的所述游戏启动标识向与所述云游戏客户端相关联的直播服务器发送直播认证请求,以使所述直播服务器基于所述直播认证请求为所述云游戏客户端配置用于直播所述目标云游戏的直播推流地址;
接收所述直播服务器返回的所述直播推流地址,在将所述直播推流地址返回给所述云游戏客户端时,触发建立所述云服务器与所述直播服务器之间的直播服务连接。
4.根据权利要求1所述的方法,其特征在于,所述目标云游戏是由云虚拟容器中的游戏进程运行的;所述云虚拟容器是由所述云服务器为所述云游戏客户端所在的客户端环境***所配置的;
所述基于所述直播服务连接获取所述目标云游戏的游戏图像数据和游戏音频数据,记录所述游戏图像数据对应的图像采集时间戳和所述游戏音频数据对应的音频采集时间戳,包括:
基于所述直播服务连接在所述云虚拟容器中启动与所述游戏进程相关联的媒体编码进程;
通过所述媒体编码进程所指示的数据采集组件抓取与所述目标云游戏相关联的背景音频帧数据和游戏视频帧数据,将抓取到的所述背景音频帧数据和所述游戏视频帧数据存放至与所述数据采集组件相关联的云缓存空间;所述云缓存空间为独立于所述云虚拟容器的云内存;
通过所述媒体编码进程所指示的定时器,从所述云内存所存储的所述游戏视频帧数据中采集与第一采集时间间隔所指示的第一帧率相匹配的图像帧,将采集到的图像帧作为所述目标云游戏的游戏图像数据,并在所述定时器所指示的参考系下,记录所述游戏图像数据对应的图像采集时间戳;
通过所述定时器,从所述云内存所存储的所述背景音频帧数据中采集与第二采集时间间隔所指示的第二帧率相匹配的音频帧,将采集到的音频帧作为所述目标云游戏的游戏音频数据,并在所述定时器所指示的同一参考系下,记录所述游戏音频数据对应的音频采集时间戳;所述第二采集时间间隔记录小于所述第一采集时间间隔,且所述第二帧率大于所述第一帧率。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在所述云虚拟容器中运行与所述媒体编码进程相关联的第一编码线程;
获取所述第一编码线程所指示的云游戏编码标准,通过所述云游戏编码标准对抓取到的所述背景音频帧数据进行音频编码,得到所述目标云游戏的第一音频编码流;
通过所述云游戏编码标准对抓取到的所述游戏视频帧数据进行视频编码,得到所述目标云游戏的第一视频编码流;
将所述第一音频编码流和所述第一视频编码流作为所述目标云游戏的游戏编码流,将所述游戏编码流返回给所述云游戏客户端,以使所述云游戏客户端对所述游戏编码流进行解码处理,得到用于在所述云游戏客户端中进行同步播放的所述背景音频帧数据和所述游戏视频帧数据。
6.根据权利要求4所述的方法,其特征在于,所述云服务器用于运行所述游戏进程、所述媒体编码进程和媒体传输进程;所述媒体传输进程运行在独立于所述云虚拟容器的辅助虚拟容器中;
所述方法还包括:
在所述云虚拟容器中运行与所述媒体编码进程相关联的第二编码线程;
获取所述第二编码线程所指示的云直播编码标准,通过所述云直播编码标准对与所述第二帧率相关联的所述游戏音频数据进行音频编码,得到所述目标云游戏的第二音频编码流;
通过所述云直播编码标准对与所述第一帧率相关联的所述游戏图像数据进行视频编码,得到所述目标云游戏的第二视频编码流;
将所述第二音频编码流和所述第二视频编码流作为所述目标云游戏的待处理编码流,将所述待处理编码流转发给所述媒体传输进程,以使所述媒体传输进程基于所述待处理编码流在所述辅助虚拟容器中执行所述在获取到所述云游戏客户端发送的主播对象的待处理音频数据时,对所述游戏音频数据和待处理音频数据进行混音处理,得到混音音频数据的步骤。
7.根据权利要求1所述的方法,其特征在于,所述在获取到所述云游戏客户端发送的主播对象的待处理音频数据时,对所述游戏音频数据和待处理音频数据进行混音处理,得到混音音频数据,包括:
在获取到所述云游戏客户端发送的主播对象的待处理音频数据时,对所述待处理音频数据进行解码处理,得到所述主播对象的待处理音频帧以及所述待处理音频帧的录制时间戳;
基于所述游戏音频数据对应的第二采集时间间隔,获取所述游戏音频数据中的音频帧,将获取到的音频帧作为参考音频帧,且根据所述游戏音频数据对应的采集音频时间戳,确定所述参考音频帧的混音时间戳;
基于所述混音时间戳调整所述录制时间戳,基于调整后的录制时间戳对所述参考音频帧和待处理音频帧进行混音处理,得到与所述采集时间戳保持一致的混音时间戳对应的混音音频帧,将得到的混音音频帧和所述混音音频帧对应的混音时间戳作为所述目标云游戏的混音音频数据。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
统计获取到的音频帧的帧数,若所述音频帧的帧数为M帧,且M为不为零的正整数,则用M表征待进行混音处理的次数;
基于所述待进行混音处理的次数,在执行所述基于所述混音时间戳调整所述录制时间戳,基于调整后的录制时间戳对所述参考音频帧和待处理音频帧进行混音处理的步骤时,对所述待处理音频帧的音量进行增强处理,且对所述参考音频帧的音量进行减弱处理。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
若所述音频帧的帧数为空值或者所述待处理音频帧的帧数为空值,则不对所述参考音频帧和待处理音频帧进行混音处理。
10.根据权利要求1所述的方法,其特征在于,所述获取与媒体转发进程相关联的平滑获取线程,通过所述平滑获取线程从所述视频缓存队列中采集与第一采集时间间隔所指示的第一帧率相匹配的视频数据包,并通过所述平滑获取线程从所述音频缓存队列中采集与第二采集时间间隔所指示的第二帧率相匹配的音频数据包,包括:
获取与媒体转发进程相关联的平滑获取线程,且获取与所述平滑获取线程具有相同采集时间间隔的数据采集组件,基于所述数据采集组件的采集时间间隔确定与所述游戏图像数据相关联的第一采集时间间隔和与所述游戏音频数据相关联的第二采集时间间隔;
通过所述平滑获取线程确定与所述第一采集时间间隔相匹配的平滑视频获取时间戳,从所述视频缓存队列中获取图像采集时间戳小于所述平滑视频获取时间戳的缓存视频帧,将获取到的缓存视频帧和所述缓存视频帧对应的图像采集时间戳进行封装处理,得到与所述第一采集时间间隔所指示的第一帧率相匹配的视频数据包;
通过所述平滑获取线程确定与所述第二采集时间间隔相匹配的平滑音频获取时间戳,从所述音频缓存队列中获取音频采集时间戳小于所述平滑音频获取时间戳的缓存音频帧,将获取到的缓存音频帧和所述缓存音频帧对应的音频采集时间戳进行封装处理,得到与所述第二采集时间间隔所指示的第二帧率相匹配的音频数据包。
11.根据权利要求10所述的方法,其特征在于,在所述将所述直播数据流通过所述直播服务器下发至与所述云游戏客户端相关联的直播客户端之后,所述方法还包括:
在所述直播数据流中获取具有最大音频采集时间戳的音频数据包作为辅助音频数据包,且在所述直播数据流中获取具有最大图像采集时间戳的视频数据包作为辅助视频数据包;
若通过所述平滑获取线程记录到待发送给所述直播服务器的下一个音频数据包的音频采集时间戳小于已发送的所述辅助音频数据包的所述最大音频采集时间戳,则丢弃所述待发送给所述直播服务器的下一个音频数据包;
若通过所述平滑获取线程记录到待发送给所述直播服务器的下一个视频数据包的视频采集时间戳小于已发送的所述辅助视频数据包的所述最大图像采集时间戳,则丢弃所述待发送给所述直播服务器的下一个视频数据包。
12.一种游戏数据处理装置,其特征在于,包括:
直播请求接收模块,用于接收云游戏客户端发送的针对目标云游戏的云游戏直播请求,基于所述云游戏直播请求建立云服务器与所述云游戏客户端相关联的直播服务器之间的直播服务连接;
数据获取模块,用于基于所述直播服务连接获取所述目标云游戏的游戏图像数据和游戏音频数据,记录所述游戏图像数据对应的图像采集时间戳和所述游戏音频数据对应的音频采集时间戳;所述图像采集时间戳和所述音频采集时间戳为同一参考系下的时间戳;
混音处理模块,用于在获取到所述云游戏客户端发送的主播对象的待处理音频数据时,对所述游戏音频数据和待处理音频数据进行混音处理,得到混音音频数据;所述混音音频数据对应的混音时间戳与所述音频采集时间戳保持一致;
直播流下发模块,用于基于所述混音音频数据、所述音频采集时间戳、所述游戏图像数据和所述图像采集时间戳,得到所述目标云游戏对应的直播数据流,将所述直播数据流通过所述直播服务器下发至与所述云游戏客户端相关联的直播客户端,以使所述直播客户端基于所述直播数据流中的所述音频采集时间戳和所述图像采集时间戳,对所述混音音频数据和所述游戏图像数据进行同步播放;
其中,所述云服务器包含基于所述云游戏直播请求所启动的媒体转发进程;所述媒体转发进程用于保持所述云服务器与所述直播服务器之间的所述直播服务连接;
所述直播流下发模块包括:
音频排序处理单元,用于获取所述混音音频数据,从所述混音音频数据中获取混音音频帧以及所述混音音频帧对应的所述音频采集时间戳,基于所述音频采集时间戳对所述混音音频帧进行排序处理,将排序处理后的混音音频帧写入与所述媒体转发进程相关联的音频缓存队列;
图像排序处理单元,用于获取所述游戏图像数据,从所述游戏图像数据中获取图像帧以及所述图像帧对应的所述图像采集时间戳,基于所述图像采集时间戳对所述图像帧进行排序处理,将排序处理后的图像帧写入与所述媒体转发进程相关联的视频缓存队列;
数据包获取单元,用于获取与媒体转发进程相关联的平滑获取线程,通过所述平滑获取线程从所述视频缓存队列中获取与第一采集时间间隔所指示的第一帧率相匹配的视频数据包,并通过所述平滑获取线程从所述音频缓存队列中获取与第二采集时间间隔所指示的第二帧率相匹配的音频数据包;
打包下发单元,用于将所述视频数据包和所述音频数据包进行打包处理,得到所述目标云游戏对应的直播数据流,将所述直播数据流通过所述直播服务器下发至与所述云游戏客户端相关联的直播客户端。
13.一种计算机设备,其特征在于,包括:处理器和存储器;
所述处理器与所述存储器相连,其中,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使得所述计算机设备执行权利要求1-11任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,该计算机程序适于由处理器加载并执行,以使得具有所述处理器的计算机设备执行权利要求1-11任一项所述的方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110974053.3A CN113423018B (zh) | 2021-08-24 | 2021-08-24 | 一种游戏数据处理方法、装置及存储介质 |
JP2023571192A JP2024519363A (ja) | 2021-08-24 | 2022-08-01 | ゲームデータの処理方法、装置、コンピュータ機器、及びコンピュータプログラム |
PCT/CN2022/109392 WO2023024834A1 (zh) | 2021-08-24 | 2022-08-01 | 一种游戏数据处理方法、装置及存储介质 |
EP22860180.3A EP4287634A1 (en) | 2021-08-24 | 2022-08-01 | Game data processing method and apparatus, and storage medium |
US18/135,562 US20230256345A1 (en) | 2021-02-24 | 2023-04-17 | Game data processing method and apparatus, and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110974053.3A CN113423018B (zh) | 2021-08-24 | 2021-08-24 | 一种游戏数据处理方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113423018A CN113423018A (zh) | 2021-09-21 |
CN113423018B true CN113423018B (zh) | 2021-11-02 |
Family
ID=77719345
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110974053.3A Active CN113423018B (zh) | 2021-02-24 | 2021-08-24 | 一种游戏数据处理方法、装置及存储介质 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20230256345A1 (zh) |
EP (1) | EP4287634A1 (zh) |
JP (1) | JP2024519363A (zh) |
CN (1) | CN113423018B (zh) |
WO (1) | WO2023024834A1 (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113423018B (zh) * | 2021-08-24 | 2021-11-02 | 腾讯科技(深圳)有限公司 | 一种游戏数据处理方法、装置及存储介质 |
CN115883853B (zh) * | 2021-09-26 | 2024-04-05 | 腾讯科技(深圳)有限公司 | 视频帧播放方法、装置、设备以及存储介质 |
CN113923527B (zh) * | 2021-09-30 | 2023-09-05 | 北京爱奇艺科技有限公司 | 云游戏的视频数据解码方法、装置、电子设备及存储介质 |
CN113905266B (zh) * | 2021-10-11 | 2024-04-30 | 杭州萤石软件有限公司 | 音视频数据的处理方法、装置、设备及存储介质 |
CN113709185B (zh) * | 2021-10-22 | 2022-06-28 | 浙江云针信息科技有限公司 | 一种实现Android云串流的方法和*** |
CN113973215A (zh) * | 2021-10-25 | 2022-01-25 | 北京字节跳动网络技术有限公司 | 数据去重方法、装置及存储介质 |
CN114007109B (zh) * | 2021-10-28 | 2023-05-12 | 广州华多网络科技有限公司 | 混流转码处理方法及其装置、设备、介质、产品 |
CN114007102A (zh) * | 2021-10-28 | 2022-02-01 | 深圳市商汤科技有限公司 | 视频处理方法、装置、电子设备以及存储介质 |
CN114007108B (zh) * | 2021-10-28 | 2023-09-19 | 广州华多网络科技有限公司 | 音频流混音控制方法及其装置、设备、介质、产品 |
CN114040219B (zh) * | 2021-11-09 | 2022-09-06 | 腾讯科技(深圳)有限公司 | 游戏直播方法、装置、***、设备及计算机可读存储介质 |
CN114422823A (zh) * | 2021-12-27 | 2022-04-29 | 炫彩互动网络科技有限公司 | 一种改进的云游戏流稳定传输方法 |
CN114390048A (zh) * | 2021-12-31 | 2022-04-22 | 凌宇科技(北京)有限公司 | 一种云vr投屏***和方法 |
CN114615512A (zh) * | 2022-03-03 | 2022-06-10 | 广州博冠信息科技有限公司 | 游戏赛事直播***、游戏赛事直播方法 |
CN114785558B (zh) * | 2022-03-28 | 2024-03-26 | 北京达佳互联信息技术有限公司 | 云游戏认证方法、终端、服务器、设备、介质及程序产品 |
CN114900507A (zh) * | 2022-04-29 | 2022-08-12 | 阿里巴巴(中国)有限公司 | Rtc音频数据的处理方法、装置、设备以及存储介质 |
CN115499673B (zh) * | 2022-08-30 | 2023-10-20 | 深圳市思为软件技术有限公司 | 一种直播方法及装置 |
CN116112736A (zh) * | 2022-12-09 | 2023-05-12 | 上海鱼尔网络科技有限公司 | 音频处理方法、装置、计算机设备、存储介质 |
CN116757707B (zh) * | 2023-06-19 | 2024-05-24 | 深圳市同富信息技术有限公司 | 一种农作物果实生长溯源方法及*** |
CN117579979B (zh) * | 2024-01-15 | 2024-04-19 | 深圳瑞利声学技术股份有限公司 | 游戏全景声的生成方法、装置、设备及存储介质 |
CN118132292A (zh) * | 2024-04-28 | 2024-06-04 | 龙芯中科(合肥)技术有限公司 | 消息处理方法、装置、电子设备及可读存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104967960A (zh) * | 2015-03-25 | 2015-10-07 | 腾讯科技(深圳)有限公司 | 语音数据处理方法、游戏直播中的语音数据处理方法和*** |
CN110034828A (zh) * | 2018-01-12 | 2019-07-19 | 网宿科技股份有限公司 | 云应用的音频采集方法及服务器 |
CN110393921A (zh) * | 2019-08-08 | 2019-11-01 | 腾讯科技(深圳)有限公司 | 云游戏的处理方法、装置、终端、服务器及存储介质 |
CN111314724A (zh) * | 2020-02-18 | 2020-06-19 | 华为技术有限公司 | 云游戏直播方法和装置 |
CN111729293A (zh) * | 2020-08-28 | 2020-10-02 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置及存储介质 |
CN112423095A (zh) * | 2020-11-02 | 2021-02-26 | 广州博冠信息科技有限公司 | 游戏视频录制方法、装置、电子设备和存储介质 |
CN112473133A (zh) * | 2020-12-16 | 2021-03-12 | 杭州雾联科技有限公司 | 一种云游戏响应的方法、***、设备及可读存储介质 |
CN112870711A (zh) * | 2021-04-28 | 2021-06-01 | 腾讯科技(深圳)有限公司 | 一种云游戏的处理方法、装置、设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130062462A (ko) * | 2011-11-25 | 2013-06-13 | 한국전자통신연구원 | 스트리밍 게임 서비스를 위한 분산 서버 시스템 및 방법 |
US10315108B2 (en) * | 2015-08-19 | 2019-06-11 | Sony Interactive Entertainment America Llc | Local application quick start with cloud transitioning |
CN113423018B (zh) * | 2021-08-24 | 2021-11-02 | 腾讯科技(深圳)有限公司 | 一种游戏数据处理方法、装置及存储介质 |
-
2021
- 2021-08-24 CN CN202110974053.3A patent/CN113423018B/zh active Active
-
2022
- 2022-08-01 WO PCT/CN2022/109392 patent/WO2023024834A1/zh active Application Filing
- 2022-08-01 JP JP2023571192A patent/JP2024519363A/ja active Pending
- 2022-08-01 EP EP22860180.3A patent/EP4287634A1/en active Pending
-
2023
- 2023-04-17 US US18/135,562 patent/US20230256345A1/en active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104967960A (zh) * | 2015-03-25 | 2015-10-07 | 腾讯科技(深圳)有限公司 | 语音数据处理方法、游戏直播中的语音数据处理方法和*** |
CN110034828A (zh) * | 2018-01-12 | 2019-07-19 | 网宿科技股份有限公司 | 云应用的音频采集方法及服务器 |
CN110393921A (zh) * | 2019-08-08 | 2019-11-01 | 腾讯科技(深圳)有限公司 | 云游戏的处理方法、装置、终端、服务器及存储介质 |
CN111314724A (zh) * | 2020-02-18 | 2020-06-19 | 华为技术有限公司 | 云游戏直播方法和装置 |
CN111729293A (zh) * | 2020-08-28 | 2020-10-02 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置及存储介质 |
CN112423095A (zh) * | 2020-11-02 | 2021-02-26 | 广州博冠信息科技有限公司 | 游戏视频录制方法、装置、电子设备和存储介质 |
CN112473133A (zh) * | 2020-12-16 | 2021-03-12 | 杭州雾联科技有限公司 | 一种云游戏响应的方法、***、设备及可读存储介质 |
CN112870711A (zh) * | 2021-04-28 | 2021-06-01 | 腾讯科技(深圳)有限公司 | 一种云游戏的处理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113423018A (zh) | 2021-09-21 |
WO2023024834A9 (zh) | 2023-09-07 |
JP2024519363A (ja) | 2024-05-10 |
EP4287634A1 (en) | 2023-12-06 |
US20230256345A1 (en) | 2023-08-17 |
WO2023024834A1 (zh) | 2023-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113423018B (zh) | 一种游戏数据处理方法、装置及存储介质 | |
KR102280134B1 (ko) | 비디오 재생 방법, 장치 및 시스템 | |
US9172979B2 (en) | Experience or “sentio” codecs, and methods and systems for improving QoE and encoding based on QoE experiences | |
CN110876080B (zh) | 视频投屏方法、装置、计算机设备及存储介质 | |
US11516518B2 (en) | Live streaming with live video production and commentary | |
US10887646B2 (en) | Live streaming with multiple remote commentators | |
CN105451071B (zh) | 一种视频流的处理方法、装置和*** | |
CN107819809B (zh) | 对内容进行同步操作的方法及装置 | |
WO2019128800A1 (zh) | 一种内容服务的实现方法、装置及内容分发网络节点 | |
CN111343504B (zh) | 视频处理方法、装置、计算机设备和存储介质 | |
CN103329521A (zh) | 用于暂停视频流传送内容的方法、设备和计算机程序产品 | |
CN113661692B (zh) | 接收媒体数据的方法、装置和非易失性计算机可读存储介质 | |
EP4135312A1 (en) | Video playing method, apparatus and system, and computer storage medium | |
CN108282685A (zh) | 一种音视频同步的方法及监控*** | |
CN113926185A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN112333475A (zh) | 流媒体数据的处理方法、处理***和存储服务器 | |
CN108882010A (zh) | 一种多屏播放的方法及*** | |
CN111866526B (zh) | 一种直播业务处理方法和装置 | |
CN114554277B (zh) | 多媒体的处理方法、装置、服务器及计算机可读存储介质 | |
CN116962179A (zh) | 网络传输优化方法、装置、计算机可读介质及电子设备 | |
CN112073727B (zh) | 转码方法、装置、电子设备及存储介质 | |
CN116264619A (zh) | 资源处理方法、装置、服务器、终端、***及存储介质 | |
CN113396568A (zh) | 用于处理编解码器切换的同步抖动缓冲器 | |
CN115209163B (zh) | 数据处理方法、装置、存储介质及电子设备 | |
CN117499688B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40052278 Country of ref document: HK |