CN112399257A - 云桌面视频播放方法、服务器、终端及存储介质 - Google Patents
云桌面视频播放方法、服务器、终端及存储介质 Download PDFInfo
- Publication number
- CN112399257A CN112399257A CN201910760781.7A CN201910760781A CN112399257A CN 112399257 A CN112399257 A CN 112399257A CN 201910760781 A CN201910760781 A CN 201910760781A CN 112399257 A CN112399257 A CN 112399257A
- Authority
- CN
- China
- Prior art keywords
- cloud desktop
- playing
- stream file
- player
- media stream
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 90
- 230000006870 function Effects 0.000 claims description 28
- 230000008569 process Effects 0.000 claims description 27
- 238000004891 communication Methods 0.000 claims description 16
- 230000005540 biological transmission Effects 0.000 claims description 12
- 230000001360 synchronised effect Effects 0.000 claims description 8
- 238000006243 chemical reaction Methods 0.000 claims description 5
- 230000002159 abnormal effect Effects 0.000 claims description 2
- 238000012544 monitoring process Methods 0.000 claims description 2
- 238000012545 processing Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 13
- 238000009877 rendering Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 239000003086 colorant Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
Classifications
-
- 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/438—Interfacing the downstream path of the transmission network originating from a server, e.g. retrieving encoded video stream packets from an IP network
- H04N21/4385—Multiplex stream processing, e.g. multiplex stream decrypting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
- H04L65/612—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/65—Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
- H04L65/764—Media network packet handling at the destination
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- 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/238—Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
- H04N21/2389—Multiplex stream processing, e.g. multiplex stream encrypting
-
- 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
- H04N21/4307—Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen
-
- 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/434—Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
- H04N21/4341—Demultiplexing of audio and video streams
-
- 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/438—Interfacing the downstream path of the transmission network originating from a server, e.g. retrieving encoded video stream packets from an IP network
- H04N21/4385—Multiplex stream processing, e.g. multiplex stream decrypting
- H04N21/43853—Multiplex stream processing, e.g. multiplex stream decrypting involving multiplex stream decryption
-
- 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/443—OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
-
- 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/443—OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
- H04N21/4431—OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB characterized by the use of Application Program Interface [API] libraries
-
- 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/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/81—Monomedia components thereof
- H04N21/8166—Monomedia components thereof involving executable data, e.g. software
- H04N21/8193—Monomedia components thereof involving executable data, e.g. software dedicated tools, e.g. video decoder software or IPMP tool
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Library & Information Science (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明实施例提供一种云桌面视频播放方法、服务器、终端及存储介质,服务器侧将音频文件流与视频图像文件流包含在目标媒体流文件中一起发送给终端侧,而终端侧可以对目标媒体流文件进行解码后播放,故不会出现音画不同步的问题。同时,因为在客户端播放视频的同时,会让云桌面播放器也对虚假媒体进行播放,避免了云桌面播放器的崩溃。同时,因为本发明实施例提供的播放方案中是在替换原本的云桌面播放器部分架构组件的基础上进行视频播放,无须自研客户端,避免了播放方案受用户习惯限制的问题,有利于提升用户体验。
Description
技术领域
本发明涉及云计算虚拟化技术领域,尤其涉及一种云桌面视频播放方法、服务器、终端及存储介质。
背景技术
近年来,云桌面在国内蓬勃发展,包括众多学校、政府、企业等均陆续采用云桌面技术替代传统PC。云桌面是企业IT架构的一次革命,带来移动计算体验的同时,满足了很多特定行业的需要。
随着云桌面的快速商用,客户对云桌面的需求不仅仅满足于日常办公。能够正常进行本地视频播放也是客户的基本需求。云桌面的视频播放,按照解码方式的不同可以分为服务端解码播放和客户端解码播放两种播放方式。其中,服务端解码方式会大量占用服务器的CPU处理资源,降低了服务器能承载运行的虚机数量,而客户端解码播放方式因为分别向客户端传输音频流与视频图像流,因此,容易导致客户端音画不同步的问题。
发明内容
本发明实施例提供的云桌面视频播放方法、服务器、终端及存储介质,主要解决的技术问题是:相关云桌面视频播放方案中,分别向客户端传输音频流与视频图像流,容易导致客户端音画不同步的问题。
为解决上述技术问题,本发明实施例提供一种云桌面视频播放方法,包括:
监测到对云桌面播放器启动指令后,通过钩子函数用播放架构重构组件替换所述云桌面播放器中的原播放架构组件;
截获待所述云桌面播放器播放的目标媒体流文件,所述目标媒体流中包括音频文件流与视频图像文件流;
将尚未经解码的所述目标媒体流文件传输到终端侧;
向所述终端发送播放开始指令,控制所述终端与所述云桌面播放器进行同步播放,所述终端播放所述目标媒体流文件,所述云桌面播放器播放无需解码的虚假媒体。
本发明实施例还提供一种云桌面视频播放方法,包括:
接收服务器侧传输的未经解码的目标媒体流文件,所述目标媒体流中包括音频文件流与视频图像文件流;
根据所述服务器发送的播放开始指令对所述目标媒体流文件进行解码播放,对所述目标媒体流文件的播放过程与所述服务器侧的云桌面播放器对无需解码的虚假媒体的播放过程同步。
本发明实施例还提供一种服务器,其特征在于,所述服务器包括第一处理器、第一存储器及第一通信总线;
所述第一通信总线用于实现第一处理器和第一存储器之间的连接通信;
所述第一处理器用于执行第一存储器中存储的一个或者多个程序,以实现上述云桌面视频播放方法服务器的步骤。
本发明实施例还提供一种终端,所述终端包括第二处理器、第二存储器及第二通信总线;
所述第二通信总线用于实现第二处理器和第二存储器之间的连接通信;
所述第二处理器用于执行第二存储器中存储的一个或者多个程序,以实现上述云桌面视频播放方法终端侧的步骤。
本发明实施例还提供一种存储介质,所述存储介质存储有第一云桌面视频播放程序和第二云桌面视频播放程序中的至少一个,所述第一云桌面视频播放程序可被一个或者多个处理器执行,以实现上述云桌面视频播放方法的步骤;所述第二云桌面视频播放程序可被一个或者多个处理器执行,以实现上述云桌面视频播放方法的步骤。
本发明的有益效果是:
根据本发明实施例提供的云桌面视频播放方法、服务器、终端及存储介质,服务器侧在监测到对云桌面播放器启动指令后,通过钩子函数用播放架构重构组件替换云桌面播放器中的原播放架构组件,然后截获待云桌面播放器播放的,且尚未解码的目标媒体流文件,并将目标媒体流文件传输到终端侧,然后向终端发送播放开始指令,控制终端与云桌面播放器进行同步播放,其中,终端播放目标媒体流文件,而云桌面播放器播放无需解码的虚假媒体。因为服务器侧是将音频文件流与视频图像文件流包含在目标媒体流文件中一起发送给终端侧,而终端侧可以对目标媒体流文件进行解码后播放,不会出现音画不同步的问题。同时,因为在客户端播放视频的同时,会让云桌面播放器也对虚假媒体进行播放,避免了云桌面播放器的崩溃。同时,因为本发明实施例提供的播放方案中是在替换原本的云桌面播放器部分架构组件的基础上进行视频播放,无须自研客户端,避免了播放方案受用户习惯限制的问题,有利于提升用户体验。
本发明其他特征和相应的有益效果在说明书的后面部分进行阐述说明,且应当理解,至少部分有益效果从本发明说明书中的记载变的显而易见。
附图说明
图1为本发明实施例一中提供的云桌面视频播放方法服务器侧的一种流程图;
图2为本发明实施例一中示出的DirectShow播放架构的一种示意图;
图3为本发明实施例一中示出的Media Foundation播放架构的一种示意图;
图4为本发明实施例一中示出的重构后的DirectShow播放架构的一种示意图;
图5为本发明实施例一中示出的重构后的Media Foundation播放架构的一种示意图;
图6为本发明实施例一中提供的云桌面视频播放方法终端侧的一种流程图;
图7为本发明实施例二中提供的云桌面视频播放方法的一种交互流程图;
图8为本发明实施例三中提供的服务器的一种硬件结构示意图;
图9为本发明实施例三中提供的终端的一种硬件结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面通过具体实施方式结合附图对本发明实施例作进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
实施例一:
云桌面视频的播放方式有服务端解码播放和客户端解码播放两种,下面对这两种播放方式的利弊分别进行说明:
1.服务端解码播放
服务端解码播放是传统的云桌面进行视频播放的方式,视频文件在服务器上进行解封装、解码和播放,视频画面作为桌面画面的一部分,通过某种传输协议投射到客户端。在服务端解码会极大地占用服务器侧的CPU处理资源,这必然就会导致同一服务器能承载的虚机数量减少;同时解码后的数据量是未解码数据量的几十倍甚至上百倍,传输到客户端的时候会占用大量网络带宽资源。为了降低对带宽需求并保证客户端桌面的流畅性,桌面画面必然会被再次压缩传输,因此或导致客户端视频画面不清晰不流畅。
2.客户端解码播放
客户端解码是将原始的音视频数据重定向到客户端进行解码播放的方式。根据实现的方式不同,可以分为截获重定向和文件重定向两种实现方式。
2.1.文件重定向播放
文件重定向播放不需要关注云桌面播放器的播放架构,因为这种方式需要自研播放器,将视频文件进行文件共享或者构建HTTP服务,客户端使用共享文件地址或者HTTP地址进行视频播放。这种播放方式不占网络带宽,不占用服务器CPU,播放清晰流畅。不过,因为文件重定向要自研播放器,限定了用户的使用习惯;并且,不是所有的视频文件都支持流媒体播放,支持的媒体格式有所限制;另外文件重定向播放也存在安全隐患。
2.2.截获重定向播放
截获重定向播放是根据不同播放架构,替换其中的部分组件,截获音频数据和视频数据再重定向到客户端进行解码播放。这种播放方式不占网络带宽,不占用服务器CPU,播放清晰流畅。不过,截获重定向播放是将视频流和音频流分别发送到客户端进行播放,播放过程需要处理音视频同步,对播放器的快进暂停等操作经常会出现音视频不同步问题。
对于上述云桌面播放器存在的问题,本实施例提供一种新的云桌面视频播放方法,请参见图1示出的应用于服务器侧的云桌面视频播放方法的流程图:
S102:监测到对云桌面播放器启动指令后,通过钩子函数用播放架构重构组件替换云桌面播放器中的原播放架构组件。
本实施例中提供的云桌面视频播放方法实际上也是立足于截获重定向播放方式的,所以,在本实施例中,也会采用采用播放架构重构组件替换云桌面播放器中的原播放架构组件。下面对两种比较典型且应用广泛的云桌面播放架构进行说明:
(1)DirectShow(直接展示)播放架构:
图2示出了DirectShow播放架构的一种示意图:基于DirectShow播放架构的云桌面播放器中包括Splitter Filter(分路滤波器)201、解码器和渲染器,其中解码器分为Audio Decoder(音频解码器)202和Video Decoder(视频解码器) 203。渲染器也分为AudioRender(音频渲染器)204以及Video Render(视频渲染器)205。
其中,Splitter Filter 201是云桌面播放器的Source Filter(源滤波器),负责视频文件的读取,以及视频文件的解封装。Splitter Filter 201还会将解封装出来的音频流和视频图像流分别传送到对应的解码器。
Audio Decoder 202,根据音频的编码格式选择相应的解码器,将解码后的音频数据发送到音频渲染器204。
Video Decoder 203,根据视频图像的编码格式选择相应的解码器,将解码后的视频图像数据发送到Video Render 205。
Audio Render204将解码后的音频数据写入声卡。
Video Render205根据视频帧的播放时间将视频画面渲染出来。
DirectShow播放架构和应用程序之间可以进行操作交换,如暂停、快进、停止等。
(2)Media Foundation播放架构:
图3示出了Media Foundation播放架构的一种示意图:Media Foundation播放架构下的云桌面视频播放器中包括Media Source(媒体源)模块301、 MFTransform(MediaFoundation媒体平台转换)模块302、Media Sink(媒体接收器)模块303以及Media Session(媒体会议)模块304。
Media Source模块301用于读取视频文件,并对读取的视频文件进行解封装处理。与DirectShow播放架构不同的是,Media Source模块301解封装后的音频流和视频流不会直接发送到对应的解码模块,而是发送给Media Session模块 304,由Media Session模块304发给对应的解码模块。
MFTransform模块302,该模块实际上就是音视频解码模块,MFTransform 模块302可以根据音视频的编码格式选择相应的解码器进行解码,并将解码后的数据发送给MediaSession模块304,Media Session模块304接收到解码后的音频数据与视频数据之后,可以将这些数据发送给Media Sink模块303。
Media Sink模块303可以将解码后的音频数据写入声卡,将解码后的视频数据写入显卡。
Media Foundation播放架构和应用程序可以进行操作交换,如暂停、快进、停止等。
在本实施例中,针对上述两种播放架构,分别提出了对应的播放架构重构组件替换原播放架构组件的方式:
(1)若云桌面播放器的原播放架构为DirectShow播放架构,则钩子函数包括设置在IGraphBuilder接口处的钩子函数。在云桌面播放器的进程入口Hook IGraphBuilder接口的RenderFile方法和QueryInterface方法。对于Windows系统自带的Wmplayer播放器会智能构建播放架构,只需要把RenderFile方法重新实现,播放组件全部使用自研的组件。如果是针对Wmplayer播放器以外的其他播放器,则还需要在IMediaControl接口处设置钩子函数,也即在Hook IGraphBuilder接口的RenderFile方法和QueryInterface方法之后,再次Hook IMediaControl接口的Run方法,从而实现在云桌面播放器开始播放前将其部分原播放架构组件替换成自研的播放架构重构组件。
请结合图4示出的重构后的DirectShow播放架构示意图:
重构后的DirectShow播放架构分为服务器侧的云桌面播放器40可位于终端侧的客户端41,其中,云桌面播放器40的架构与图2中DirectShow播放架构类似,客户端41的架构也与图2中DirectShow播放架构基本相同:
在云桌面播放器40当中,包括云桌面Splitter Filter 401、云桌面AudioDecoder 402、云桌面Video Decoder 403、云桌面Audio Render 404以及云桌面 VideoRender 405,另外,云桌面播放器40中也还包括云桌面声卡406以及云桌面显卡407。同时,客户端41当中,包括客户端Splitter Filter 411、客户端Audio Decoder 412、客户端Video Decoder 413、客户端Audio Render 414以及客户端 Video Render 415,另外,客户端播放器41中也还包括客户端声卡416以及客户端显卡417。
云桌面Splitter Filter 401仍然是Source Filter,其基于DirectShow播放架构的相应接口开发,使用FFmpeg进行文件信息读取,按照文件码率和播放总时长进行媒体文件读取和发送。FFmpeg是十分强大的多媒体音视频编解码开源框架,可以实现音视频流采集、记录、编码、解码、转换等,它提供了很多开源库,能在多种平台下编译运行。值得注意的是,在图2当中,Splitter Filter读取到视频文件之后,会将视频文件传输给解码器。但在本实施例图4中的云桌面 Splitter Filter 401读取到媒体流文件之后,不会将媒体流文件传输给解码器,而是会将媒体流文件传输给客户端41,让客户端41对媒体流文件进行解码与播放。
客户端41侧的客户端Splitter Filter 411、客户端Audio Decoder 412、客户端Video Decoder 413、客户端Audio Render 414、客户端Video Render 415以及客户端声卡416以及客户端显卡417对媒体流文件中的处理方式与图2中云桌面播放器的处理方式完全一致,这里不再赘述。
下面主要对云桌面播放器40中各组件的工作进行说明:
因为重构后的DirectShow播放架构对应的播放器的工作仍旧依赖于云桌面播放器,因此,为了保证客户端41侧能够正常获取媒体流文件并实现媒体流的解码与视频播放,需要保证云桌面播放器40不能错误崩溃。所以,在云桌面 Splitter Filter 401将读取到的媒体流文件发送到客户端41的情况下,Splitter Filter 401也需要向解码器传输一些虚假的媒体数据。
在本实施例中,为了降低服务器侧的资源占用率,且因为云桌面播放器40 中的解码器与渲染器处理的都是来自Splitter Filter 401的虚假媒体,因此,可以对云桌面播放器40中的解码器与渲染器进行改进,从而使得解码器不必对虚假媒体进行解码处理。在这种情况下,当Splitter Filter 401将虚假媒体中的虚假音频传输给云桌面Audio Decoder402,将其中的虚假视频传输给云桌面Video Decoder 403,云桌面Audio Decoder 402与云桌面Video Decoder 403并不对接收到的虚假音频或虚假视频进行解码操作,而是直接透传给对应的渲染器。云桌面Audio Render 404接收到虚假音频之后,将其写入云桌面声卡406,云桌面 Video Render 405接收到虚假视频图像之后,将其写入云桌面显卡407。
可以理解的是,因为这种重构后的DirectShow播放架构在客户端进行视频播放的过程中,云桌面播放器40也会对虚假媒体进行播放,所以,为了避免虚假媒体的播放影响到客户端41的真正播放过程,故,虚假媒体中的虚假音频为静音音频,而虚假媒体中的虚假视频图像可以是黑色画面。
(2)若云桌面播放器的原播放架构为Media Foundation播放架构,则钩子函数包括设置在IMFMediaSession接口处的钩子函数和设置在IMFTopology接口处的钩子函数。可选地,可以在云桌面播放器进程入口Hook IMFMediaSession 接口的Start方法和SetTopology方法,以及Hook IMFTopology接口的AddNode 方法。
请结合图5示出的重构后的Media Foundation播放架构示意图:
重构后的Media Foundation播放架构分为服务器侧的云桌面播放器50可位于终端侧的客户端51,其中,云桌面播放器50的架构与图3中Media Foundation 播放架构类似,而客户端51的架构与图2中DirectShow播放架构基本相同:
在云桌面视频播放器50中包括Media Source模块501、MFTransform模块502、Media Sink模块503以及Media Session模块504。客户端51当中,包括客户端SplitterFilter 511、客户端Audio Decoder 512、客户端Video Decoder 513、客户端Audio Render514以及客户端Video Render 515。
Media Source模块501基于Media Foundation播放架构的相应接口开发。 MediaSource模块501使用FFmpeg进行文件信息读取,按照文件码率和播放总时长进行文件读取和发送。需要说明的是,在图3当中,Media Source模块读取到视频文件之后,会将视频文件传输给Media Session模块,让Media Session模块将视频文件传输给解码器。但在本实施例图5中的Media Source模块501读取到媒体流文件之后,不会将媒体流文件通过MediaSession模块504传输给 MFTransform模块502,而是会将媒体流文件传输给客户端51,让客户端51对媒体流文件进行解码与播放。
客户端51侧的Splitter Filter 511、Audio Decoder 512、Video Decoder 513、Audio Render 514、Video Render 515以及声卡516以及显卡517对媒体流文件中的处理方式与图2中云桌面播放器的处理方式完全一致,这里不再赘述。
下面主要对云桌面播放器50中各组件的工作进行说明:
因为重构后的Media Foundation播放架构对应的播放器的工作仍旧依赖于云桌面播放器,因此,为了保证客户端51侧能够正常获取媒体流文件并实现媒体流的解码与视频播放,需要保证云桌面播放器50不能错误崩溃。所以,在 Media Source模块501将读取到的媒体流文件发送到客户端41的情况下,Media Source模块501也需要向解码器传输一些虚假的媒体数据。
在本实施例中,为了降低服务器侧的资源占用率,且因为云桌面播放器50 中的解码器与渲染器处理的都是来自Media Source模块501的虚假媒体,因此,可以对云桌面播放器50中的MFTransform模块502进行改进,从而使得 MFTransform模块502不必对虚假媒体进行解码处理直接将虚假媒体透传给 Media Session模块504,然后由Media Session模块504传输给Media Sink模块 503。Media Sink模块503会将虚假媒体中的虚假音频写入云桌面声卡,将虚假媒体中的虚假视频图像写入云桌面显卡。
可以理解的是,因为这种重构后的Media Foundation播放架构在客户端进行视频播放的过程中,云桌面播放器50也会对虚假媒体进行播放,所以,为了避免虚假媒体的播放影响到客户端51的真正播放过程,故,虚假媒体中的虚假音频为静音音频,而虚假媒体中的虚假视频图像可以是黑色画面。
S104:截获待云桌面播放器播放的目标媒体流文件。
在本实施例中,目标媒体流文件是原本需要云桌面播放器播放的媒体流文件,这里所谓的目标媒体流文件是尚未解码的文件。目标媒体流文件中同时包括音频文件流与视频图像文件流。
根据前面的介绍可知,如果云桌面播放器的原播放架构为DirectShow播放架构,如图4所示,则可以由云桌面Splitter Filter 401截获目标媒体流文件。如果云桌面播放器的原播放架构为Media Foundation播放架构,如图5所示,则可以由Media Source模块501来截获目标媒体流文件。
S106:将尚未经解码的目标媒体流文件传输到终端侧。
当截获了目标媒体流文件之后,可以将该未经解码的目标媒体流文件传输到终端侧。在本实施例的一些示例当中,服务器可以通过TCP(Transmission Control Protocol,传输控制协议)连接将目标媒体流文件传输到终端侧。在本实施例的另一些示例当中,服务器侧可以通过UDP(User Datagram Protocol,用户数据报协议)连接将目标媒体流文件传输到终端侧。还有一些示例当中,服务器可以根据当前的网络状况自适应选择TCP连接和UDP连接中的某一个向终端侧的客户端传输目标媒体流文件。
在本实施例的一些示例当中,服务器可以直接将目标媒体流文件传输给终端。在本实施例的另外一些示例当中,服务器还可以对目标媒体流文件中的部分信息进行加密处理,从而能够利用加密在目标媒体流文件的传输过程中对这些信息进行保护。
S108:向终端发送播放开始指令,控制终端与云桌面播放器进行同步播放。
在本实施例中,终端侧的客户端对目标媒体流文件进行播放,实际上就是在云桌面播放器中新增了一个新的播放窗口。也即经过对云桌面播放器部分播放架构组件的替换,在新的云桌面播放器中实际上同时存在新、旧两个播放窗口,新的播放窗口用于对目标媒体流文件进行播放。而旧的播放窗口则用于对虚假媒体进行播放。同时,新的播放窗口遮挡了旧的播放窗口。所以,除了播放的内容的来源不同以外,新、旧播放窗口在播放进度等其他方面是一致的。故,在控制客户端开始对目标媒体流文件进行播放的时候,应当同时也让云桌面播放器开始对虚假媒体进行播放。
所以,在本实施例的一种示例当中,服务器会在控制云桌面播放器开始播放的同时向终端侧发送播放开始指令,该播放开始指令用于让客户端侧启动对目标媒体流文件的播放。例如,如果云桌面播放器的原播放架构为DirectShow 播放架构,则服务器向终端发送播放开始指令的同时,也会控制Splitter filter通过云桌面播放器的解码器向云桌面播放器渲染器透传虚假媒体,并在渲染器渲染虚假媒体后通过声卡与显卡进行输出。如果云桌面播放器的原播放架构为 Media Foundation播放架构,则服务器向终端发送播放开始指令的同时,也会控制Media source通过云桌面播放器的媒体会议Media Session和媒体平台转换 MFTransform向云桌面播放器的媒体接收器Media Sink透传虚假媒体,由Media Sink将虚假媒体写入声卡与显卡进行输出。
在一些示例当中,服务器可以开始向终端侧传输目标媒体流文件的时候就向终端发送播放开始指令,让客户端和云桌面播放器立即开始进行播放。但在本实施例的另外一些示例当中,服务器可以自向终端侧传输目标媒体流文件的时刻开始等待预设时长之后再控制两端开始播放。假定预设时长为T0,T0大于 0,服务器开始向终端侧传输目标媒体流文件的时刻为t1时刻,则服务器将在 t1+T0时刻向终端侧发送播放开始指令,并同时控制云桌面播放器也开始对虚假媒体进行播放。这种做法主要是想要避免网络延迟给终端侧客户端的播放带来的影响,因为在服务器等待的T0时间内,终端侧可以缓存一定的目标媒体流文件。在一些示例当中,T0的取值可以为3s,但本领域技术人员可以理解的是, T0的取值可以为其他值,这里不再列举。
在本实施例的一些示例当中,服务器在控制客户端和云桌面播放器开始播放了之后,可以对实时网络状况进行监测,如果检测到当前网络异常甚至网络终端以后,服务器可以控制由云桌面播放器对目标媒体流文件进行解码播放。可以理解的是,由于在网络异常或网络中断以前,目标媒体流文件的播放是通过终端侧的客户端进行的,云桌面播放器仅仅是截获并向客户端传输目标媒体流文件,以及保证自身不崩溃而已,所以,当网络异常或网络中断以后,服务器应当切换采用云桌面播放器的原播放架构组件,停止通过Hook服务采用播放架构重构组件。
对于终端侧而言,其在云桌面视频播放方案中的流程可以参见图6:
S602:接收服务器侧传输的未经解码的目标媒体流文件。
终端可能是通过TCP连接自服务器处接收目标媒体流文件的,也可能是通过UDP连接接收目标流文件的。
S604:根据服务器发送的播放开始指令对目标媒体流文件进行解码播放。
需要注意的是,在本实施例中,客户端并不一定是在接收到目标媒体流文件的时候就立即对其进行解码播放,而是需要等待服务器发送的播放开始指令,只有在接收到播放开始指令之后,终端侧的客户端才会开始对目标媒体流文件进行解码播放,这样可以保证客户端对目标媒体流文件的播放进度与云桌面播放器对虚假媒体的播放进度一致。
请接续结合图4与图5示出的重构后的DirectShow播放架构和重构后的 MediaFoundation播放架构的示意图:无论是哪一种,因为重构之后,客户端侧都是基于DirectShow播放架构的,因此,在对目标媒体流文件进行播放的过程中,Splitter Filter将会从目标媒体流文件中分离出音频流文件与视频图像流文件,然后将音频流文件传输给Audio Decoder,由Audio Decoder对音频流文件进行解码之后传输给Audio Render进行渲染,然后写入客户端侧的声卡。另一方面Splitter Filter会将视频图像流文件传输给Video Decoder,Video Decoder对视频图像流文件解码之后将解码过的文件传输给VideoRender进行渲染,随后写入客户端侧的显卡。通过声卡与显卡的配合输出,实现目标媒体流文件的传输。
可以理解的是,如果服务器侧在发送目标媒体流文件的时候有对其中部分信息或全部信息进行加密,则终端侧在目标媒体流文件后应当先对目标媒体流文件中的加密信息进行解密处理。
本实施例提供的云桌面视频播放方法,在云桌面播放器原播放架构的基础上,通过Hook服务采用自研的播放架构重构组件替换云桌面播放器中的原播放架构组件,然后使得云桌面播放器能够截获自己原本要播放的目标媒体流文件,并传输到终端侧,让终端侧对其进行解码播放。由于目标媒体流文件中同时包含音频流文件与视频图像流文件,因此,音频流文件与视频图像流文件是一同发送的,不会因为分别发送而导致终端侧在解码播放的过程中出现音画不同步,影响用户体验的问题。
同时,因为本实施例提供的云桌面视频播放方案基于云桌面播放器,只是对云桌面播放器播放架构中的部分云播放架构组件进行了替代,所以,并不需要完全重新研发新的播放器,不仅降低了研发成本,而且,用户在有视频播放需求的时候,无须安装特定的自研播放器,避免了未被用户习惯的问题。
更重要的是,本实施例提供的云桌面视频播放方案,在网络状况良好的情况下,可以通过播放架构重构组件替换云桌面播放器中的原播放架构组件,从而实现目标媒体流文件在客户端侧的解码与播放,并且,在网络状况不好的情况下,还能切换回云桌面播放器原本的播放方式,有利于提升播放的稳定性。
实施例二:
本实施例将结合一些示例继续对前述云桌面视频播放方法进行阐述,从而使本领域技术人员更清楚云桌面视频播放方法的优点与细节,请参见图7示出的云桌面视频播放方法的一种交互流程图:
S702:云桌面操作系统启动;
S704:Hook服务启动;
在云桌面操作系统启动后,会让Hook服务启动。可以理解的是,Hook服务可以是自启动的。
S706:用户选择需要播放的媒体文件;
S708:启动云桌面播放器;
因为用户选择了要播放的媒体文件,因此,当前有了进行云桌面视频播放的需求,故,云桌面操作系统会控制启动云桌面播放器。
S710:Hook服务向云桌面播放器进程注入播放架构重构组件;
S712:开始播放之前替换云桌面播放器的原播放架构组件;
在本实施例中,因为在云桌面播放器的程序中设置了钩子函数,因此,当程序运行至对应位置时,会发生跳转,从而不再按照云桌面播放器原播放架构组件实现视频播放,而是会按照播放架构重构组件进行视频播放,故,通过这种方式,可以实现用播放架构重构组件替换云桌面播放器中的原播放架构组件的效果。
下面先结合图4示出的重构后的DirectShow播放架构的示意图对云桌面视频播放方法进行说明:
云桌面Splitter Filter 401使用FFmpeg对用户选择的媒体文件进行读取,得到目标媒体流文件。因为云桌面播放器中的原播放架构组件已经被播放架构重构组件替换,因此,云桌面Splitter Filter 401不会将读取的目标媒体流文件分离成音频流文件和视频流文件之后分别传输给云桌面Audio Decoder 402与云桌面 Video Decoder 403,而是会将目标媒体流文件传输给客户端41。
在本实施例的一种示例当中,云桌面Splitter Filter 401向客户端SplitterFilter 411传输的目标媒体流文件中的关键信息是经过加密的。在客户端SplitterFilter 411接收到目标媒体流文件之后,会采用与加密方式对应的解密方式对目标媒体流文件进行解密。
在一些示例当中,服务器侧在云桌面Splitter Filter 401向客户端41传输目标媒体流文件3s之后,会向客户端发送播放开始指令,让客户端对目标媒体流文件进行解码播放。与此同时,服务器也会控制Splitter Filter 401向云桌面Audio Decoder 402发送虚假音频文件,向云桌面Video Decoder 403发送虚假视频图像文件,云桌面AudioDecoder 402不会对接收到的虚假音频文件进行解码,只会将其透传给云桌面AudioRender 404。而云桌面Video Decoder 403也不会对接收到的视频图像流文件进行解码,而是直接将其透传给云桌面Video Render 405。云桌面Audio Render 404直接将静音数据进行写声卡,并获取用户调节播放器和系统音量信息发送客户端处理。云桌面Video Render405会向显卡绘制云客户端当前播放窗口尺寸一致的黑色图片,让显卡进行显示。不过,需要说明的是,云桌面Video Render 405并不实时绘制黑色图片,仅仅是在客户端播放窗口移动或者播放窗口大小发生变化时,才会重新绘制,这主要是为了防止Video Render405的处理占用云桌面侧CPU。
应当理解的是,客户端的虚假视频图像文件也不一定是黑色图片,还可以是其他颜色的图片。
客户端Splitter Filter 411将会从目标媒体流文件中分离出音频流文件与视频图像流文件,然后将音频流文件传输给客户端Audio Decoder 412,由客户端 AudioDecoder 412对音频流文件进行解码之后传输给客户端Audio Render 414 进行渲染,然后写入客户端声卡416。另一方面客户端Splitter Filter 411会将视频图像流文件传输给客户端Video Decoder 413,客户端Video Decoder 413对视频图像流文件解码之后将解码过的文件传输给客户端Video Render415进行渲染,随后写入客户端显卡417。通过客户端声卡416与客户端显卡417的配合输出,实现目标媒体流文件的传输。
下面结合图5示出的重构后的Media Foundation播放架构的示意图对云桌面视频播放方法进行说明:
Media Source模块501使用FFmpeg对用户选择的媒体文件进行读取,得到目标媒体流文件。因为云桌面播放器中的原播放架构组件已经被播放架构重构组件替换,因此,Media Source模块501不会将读取的目标媒体流文件传输给 Media Session模块504,而是会将目标媒体流文件传输给客户端51。
在本实施例的一种示例当中,Media Source模块501向Splitter Filter 511传输的目标媒体流文件中的关键信息是经过加密的。在Splitter Filter 511接收到目标媒体流文件之后,会采用与加密方式对应的解密方式对目标媒体流文件进行解密。
在一些示例当中,服务器侧在Media Source模块501向客户端51传输目标媒体流文件3s之后,会向客户端51发送播放开始指令,让客户端51对目标媒体流文件进行解码播放。与此同时,服务器也会控制Media Source模块501通过Media Session模块504向MFTransform模块502发送虚假媒体,MFTransform 模块502接收到虚假媒体之后,不对其进行处理,直接通过Media Session模块 504透传给Media Sink模块503。Media Sink模块503中的音频处理模块直接将静音数据进行写入声卡,同时获取用户调节播放器和系统音量信息发送客户端处理。Media Sink模块503中的视频处理模块向显卡绘制云客户端当前播放窗口尺寸一致的黑色图片,让显卡进行显示。不过,需要说明的是,Media Sink模块 503并不实时绘制黑色图片,仅仅是在客户端播放窗口移动或者播放窗口大小发生变化时,才会重新绘制,这主要是为了防止Media Sink模块503的处理占用云桌面侧CPU。
应当理解的是,客户端的虚假视频图像文件也不一定是黑色图片,还可以是其他颜色的图片。
客户端Splitter Filter 411将会从目标媒体流文件中分离出音频流文件与视频图像流文件,然后将音频流文件传输给客户端Audio Decoder 412,由客户端 AudioDecoder 412对音频流文件进行解码之后传输给客户端Audio Render 414 进行渲染,然后写入客户端声卡416。另一方面客户端Splitter Filter 411会将视频图像流文件传输给客户端Video Decoder 413,客户端Video Decoder 413对视频图像流文件解码之后将解码过的文件传输给客户端Video Render415进行渲染,随后写入客户端显卡417。通过客户端声卡416与客户端显卡417的配合输出,实现目标媒体流文件的传输。
S714:网络中断恢复使用云桌面播放器的原播放架构组件。
在网络中断的情况下,需要发送消息到播放架构重构组件,使用系统默认组件进行带内播放,继续采用云桌面播放器的原播放架构组件。
本实施例提供的云桌面视频播放方案可以高效地满足本地视频领域对云桌面的使用要求,节省用户资源,满足用户,提升用户体验等要求,同时不限制播放器类型,对云桌面领域的推广,起到了很好的示范作用。
实施例三:
本实施例提供一种存储介质,该存储介质中可以存储有一个或多个可供一个或多个处理器读取、编译并执行的计算机程序,在本实施例中,该存储介质可以存储有第一云桌面视频播放程序和第二第一云桌面视频播放程序中的至少一个,其中,第一云桌面视频播放程序可供一个或多个处理器执行实现前述实施例介绍的任意一种云桌面视频播放方法服务器侧的流程,第二云桌面视频播放程序可供一个或多个处理器执行实现前述实施例介绍的任意一种云桌面视频播放方法终端侧的流程。
另外,本实施例提供一种服务器,如图8所示:服务器80包括第一处理器 81、第一存储器82以及用于连接第一处理器81与第一存储器82的第一通信总线83,其中第一存储器82可以为前述存储有第一云桌面视频播放程序,第一处理器81可以读取软件包传输程序,进行编译并执行实现前述实施例中介绍的软件包传输方法服务器侧的流程:
第一处理器81监测到对云桌面播放器启动指令后,通过钩子函数用播放架构重构组件替换云桌面播放器中的原播放架构组件,然后截获待云桌面播放器播放的目标媒体流文件,该目标媒体流中包括音频文件流与视频图像文件流。第一处理器81可以将截获的尚未经解码的目标媒体流文件传输到终端侧,然后向终端发送播放开始指令,控制终端与云桌面播放器进行同步播放,终端播放目标媒体流文件,云桌面播放器播放无需解码的虚假媒体。
在本实施例的一种示例中,如果云桌面播放器的原播放架构为DirectShow 播放架构,则钩子函数包括设置在IGraphBuilder接口处的钩子函数。
可选地,如果云桌面播放器为Wmplayer播放器之外的播放器,则钩子函数还包括设置在IMediaControl接口处的钩子函数。
在本实施例的一种示例中,第一处理器81在截获待云桌面播放器播放的目标媒体流文件时,可以控制云桌面播放器的分路滤波器Splitter filter截获目标媒体流文件。在控制终端与云桌面播放器进行同步播放时,第一处理器81向终端发送播放开始指令,同时,控制Splitter filter通过云桌面播放器的解码器向云桌面播放器渲染器透传虚假媒体,并在渲染器渲染虚假媒体后通过声卡与显卡进行输出。
在本实施例的一种示例中,如果云桌面播放器的原播放架构为Media Foundation播放架构,则钩子函数包括设置在IMFMediaSession接口处的钩子函数和设置在IMFTopology接口处的钩子函数。
在本实施例的一种示例中,第一处理器81在截获待云桌面播放器播放的目标媒体流文件时,可以控制云桌面播放器的媒体源Media source截获目标媒体流文件;在控制终端与云桌面播放器进行同步播放时,第一处理器81向终端发送播放开始指令,同时,控制Media source通过云桌面播放器的媒体会议Media Session和媒体平台转换MFTransform向云桌面播放器的媒体接收器Media Sink 透传虚假媒体,由Media Sink将虚假媒体写入声卡与显卡进行输出。
可选地,第一处理器81可以对目标媒体流文件中的至少部分信息进行加密处理,然后将加密处理后的目标媒体流文件发送给终端。
可选地,向终端发送播放开始指令之后,第一处理器81还会监测实时的网络状况。如果确定当前网络异常或网络中断,则采用云桌面播放器对目标媒体流文件进行解码播放。
在本实施例的一种示例中,第一处理器81控制终端与云桌面播放器进行同步播放之前,还会先确保已经向终端进行了预设时长的目标媒体流文件传输,预设时长大于0。
在本实施例的一种示例中,音频文件流为静音音频文件流,和/或,视频图像文件流为黑色图像文件流。
另外,本实施例提供一种终端,如图9所示:服务器90包括第二处理器91、第二存储器92以及用于连接第二处理器91与第二存储器92的第二通信总线93,其中第二存储器92可以为前述存储有第二云桌面视频播放程序,第二处理器91 可以读取软件包传输程序,进行编译并执行实现前述实施例中介绍的软件包传输方法服务器侧的流程:
第二处理器91可以接收服务器侧传输的未经解码的目标媒体流文件,然后根据服务器发送的播放开始指令对目标媒体流文件进行解码播放,第二处理器 91对目标媒体流文件的播放过程与服务器侧的云桌面播放器对无需解码的虚假媒体的播放过程同步。
可选地,如果目标媒体流文件中有至少部分信息经过加密,则第二处理器 91根据服务器发送的播放开始指令对目标媒体流文件进行解码播放之前,还需要先对目标媒体流文件中加密部分的信息进行解密处理。
本实施例提供的服务器与终端,在云桌面播放器原播放架构的基础上,通过Hook服务采用自研的播放架构重构组件替换云桌面播放器中的原播放架构组件,然后使得云桌面播放器能够截获自己原本要播放的目标媒体流文件,并传输到终端侧,让终端侧对其进行解码播放。由于目标媒体流文件中同时包含音频流文件与视频图像流文件,因此,音频流文件与视频图像流文件是一同发送的,不会因为分别发送而导致终端侧在解码播放的过程中出现音画不同步,影响用户体验的问题。
可以理解的是,本发明各实施例中的内容在不冲突的情况下可以相互结合使用。
显然,本领域的技术人员应该明白,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件(可以用计算装置可执行的程序代码来实现)、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质 (或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM,ROM,EEPROM、闪存或其他存储器技术、CD-ROM,数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。所以,本发明不限制于任何特定的硬件和软件结合。
以上内容是结合具体的实施方式对本发明实施例所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (15)
1.一种云桌面视频播放方法,包括:
监测到对云桌面播放器启动指令后,通过钩子函数用播放架构重构组件替换所述云桌面播放器中的原播放架构组件;
截获待所述云桌面播放器播放的目标媒体流文件,所述目标媒体流中包括音频文件流与视频图像文件流;
将尚未经解码的所述目标媒体流文件传输到终端侧;
向所述终端发送播放开始指令,控制所述终端与所述云桌面播放器进行同步播放,所述终端播放所述目标媒体流文件,所述云桌面播放器播放无需解码的虚假媒体。
2.如权利要求1所述的云桌面视频播放方法,其特征在于,若所述云桌面播放器的原播放架构为直接展示DirectShow播放架构,则所述钩子函数包括设置在IGraphBuilder接口处的钩子函数。
3.如权利要求2所述的云桌面视频播放方法,其特征在于,若所述云桌面播放器为Wmplayer播放器之外的播放器,则所述钩子函数还包括设置在IMediaControl接口处的钩子函数。
4.如权利要求2所述的云桌面视频播放方法,其特征在于,所述截获待所述云桌面播放器播放的目标媒体流文件包括:
控制所述云桌面播放器的分路滤波器Splitter filter截获目标媒体流文件;
所述控制所述终端与所述云桌面播放器进行同步播放包括:
向所述终端发送播放开始指令,同时,控制所述Splitter filter通过所述云桌面播放器的解码器向所述云桌面播放器渲染器透传虚假媒体,并在所述渲染器渲染所述虚假媒体后通过声卡与显卡进行输出。
5.如权利要求1所述的云桌面视频播放方法,其特征在于,若所述云桌面播放器的原播放架构为Media Foundation播放架构,则所述钩子函数包括设置在IMFMediaSession接口处的钩子函数和设置在IMFTopology接口处的钩子函数。
6.如权利要求5所述的云桌面视频播放方法,其特征在于,所述截获待所述云桌面播放器播放的目标媒体流文件包括:
控制所述云桌面播放器的媒体源Media source截获目标媒体流文件;
所述控制所述终端与所述云桌面播放器进行同步播放包括:
向所述终端发送播放开始指令,同时,控制所述Media source通过所述云桌面播放器的媒体会议Media Session和媒体平台转换MFTransform向所述云桌面播放器的媒体接收器Media Sink透传虚假媒体,由所述Media Sink将虚假媒体写入声卡与显卡进行输出。
7.如权利要求1-6任一项所述的云桌面视频播放方法,其特征在于,所述将所述目标媒体流文件传输到终端侧包括:
对所述目标媒体流文件中的至少部分信息进行加密处理;
将加密处理后的所述目标媒体流文件发送给所述终端。
8.如权利要求1-6任一项所述的云桌面视频播放方法,其特征在于,所述向所述终端发送播放开始指令之后,还包括:
监测实时的网络状况;
若确定当前网络异常或网络中断,则采用所述云桌面播放器对目标媒体流文件进行解码播放。
9.如权利要求1-6任一项所述的云桌面视频播放方法,其特征在于,控制所述终端与所述云桌面播放器进行同步播放之前,还包括:
确保已经向所述终端进行了预设时长的目标媒体流文件传输,所述预设时长大于0。
10.如权利要求1-6任一项所述的云桌面视频播放方法,其特征在于,所述虚假媒体中的音频文件流为静音音频,和/或,所述虚假媒体中的视频图像文件为黑色图像。
11.一种云桌面视频播放方法,包括:
接收服务器侧传输的未经解码的目标媒体流文件,所述目标媒体流中包括音频文件流与视频图像文件流;
根据所述服务器发送的播放开始指令对所述目标媒体流文件进行解码播放,对所述目标媒体流文件的播放过程与所述服务器侧的云桌面播放器对无需解码的虚假媒体的播放过程同步。
12.如权利要求11所述的云桌面视频播放方法,其特征在于,所述目标媒体流文件中有至少部分信息经过加密,所述根据所述服务器发送的播放开始指令对所述目标媒体流文件进行解码播放之前,还包括:
对所述目标媒体流文件中加密部分的信息进行解密处理。
13.一种服务器,其特征在于,所述服务器包括第一处理器、第一存储器及第一通信总线;
所述第一通信总线用于实现第一处理器和第一存储器之间的连接通信;
所述第一处理器用于执行第一存储器中存储的一个或者多个程序,以实现如权利要求1至10中任一项所述的云桌面视频播放方法的步骤。
14.一种终端,其特征在于,所述终端包括第二处理器、第二存储器及第二通信总线;
所述第二通信总线用于实现第二处理器和第二存储器之间的连接通信;
所述第二处理器用于执行第二存储器中存储的一个或者多个程序,以实现如权利要求11或12所述的云桌面视频播放方法的步骤。
15.一种存储介质,其特征在于,所述存储介质存储有第一云桌面视频播放程序和第二云桌面视频播放程序中的至少一个,所述第一云桌面视频播放程序可被一个或者多个处理器执行,以实现如权利要求1至10中任一项所述的云桌面视频播放方法的步骤;所述第二云桌面视频播放程序可被一个或者多个处理器执行,以实现如权利要求11或12所述的云桌面视频播放方法的步骤。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910760781.7A CN112399257B (zh) | 2019-08-16 | 2019-08-16 | 云桌面视频播放方法、服务器、终端及存储介质 |
PCT/CN2020/101297 WO2021031739A1 (zh) | 2019-08-16 | 2020-07-10 | 云桌面视频播放方法、服务器、终端及存储介质 |
EP20853891.8A EP4009648A4 (en) | 2019-08-16 | 2020-07-10 | CLOUD DESKTOP VIDEO PLAYBACK METHOD, SERVER, TERMINAL AND STORAGE MEDIUM |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910760781.7A CN112399257B (zh) | 2019-08-16 | 2019-08-16 | 云桌面视频播放方法、服务器、终端及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112399257A true CN112399257A (zh) | 2021-02-23 |
CN112399257B CN112399257B (zh) | 2024-03-05 |
Family
ID=74603085
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910760781.7A Active CN112399257B (zh) | 2019-08-16 | 2019-08-16 | 云桌面视频播放方法、服务器、终端及存储介质 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP4009648A4 (zh) |
CN (1) | CN112399257B (zh) |
WO (1) | WO2021031739A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114390313A (zh) * | 2021-12-01 | 2022-04-22 | 湖南麒麟信安科技股份有限公司 | 一种浏览器HTML5 Video标签音视频重定向的方法及系统 |
CN116301707A (zh) * | 2023-05-18 | 2023-06-23 | 北京庭宇科技有限公司 | 一种基于虚拟声卡的云桌面声音采集方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115914671A (zh) * | 2021-09-22 | 2023-04-04 | 广州开得联智能科技有限公司 | 云录播交互系统及方法 |
CN113923473A (zh) * | 2021-09-28 | 2022-01-11 | 安徽听见科技有限公司 | 影音播放方法、装置、电子设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103534679A (zh) * | 2012-12-12 | 2014-01-22 | 华为终端有限公司 | 媒体流共享的方法及终端 |
WO2015196590A1 (zh) * | 2014-06-23 | 2015-12-30 | 中兴通讯股份有限公司 | 桌面云视频的播放处理方法及装置 |
CN105791892A (zh) * | 2016-03-02 | 2016-07-20 | 汉柏科技有限公司 | 一种基于桌面云的视频重定向方法、云服务器及系统 |
CN106572361A (zh) * | 2016-11-15 | 2017-04-19 | 中兴通讯股份有限公司 | 一种视频文件的处理方法、装置和系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104168486A (zh) * | 2013-05-20 | 2014-11-26 | 上海范氏科技投资发展集团有限公司 | 基于云计算的虚拟机与客户端间视频重定向方法 |
CN104301742A (zh) * | 2013-07-16 | 2015-01-21 | 上海国富光启云计算科技有限公司 | 虚拟机和客户端间视频重定向装置及其使用方法 |
-
2019
- 2019-08-16 CN CN201910760781.7A patent/CN112399257B/zh active Active
-
2020
- 2020-07-10 EP EP20853891.8A patent/EP4009648A4/en active Pending
- 2020-07-10 WO PCT/CN2020/101297 patent/WO2021031739A1/zh unknown
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103534679A (zh) * | 2012-12-12 | 2014-01-22 | 华为终端有限公司 | 媒体流共享的方法及终端 |
WO2015196590A1 (zh) * | 2014-06-23 | 2015-12-30 | 中兴通讯股份有限公司 | 桌面云视频的播放处理方法及装置 |
CN105791892A (zh) * | 2016-03-02 | 2016-07-20 | 汉柏科技有限公司 | 一种基于桌面云的视频重定向方法、云服务器及系统 |
CN106572361A (zh) * | 2016-11-15 | 2017-04-19 | 中兴通讯股份有限公司 | 一种视频文件的处理方法、装置和系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114390313A (zh) * | 2021-12-01 | 2022-04-22 | 湖南麒麟信安科技股份有限公司 | 一种浏览器HTML5 Video标签音视频重定向的方法及系统 |
CN114390313B (zh) * | 2021-12-01 | 2024-02-13 | 湖南麒麟信安科技股份有限公司 | 一种浏览器HTML5 Video标签音视频重定向的方法及系统 |
CN116301707A (zh) * | 2023-05-18 | 2023-06-23 | 北京庭宇科技有限公司 | 一种基于虚拟声卡的云桌面声音采集方法 |
CN116301707B (zh) * | 2023-05-18 | 2023-10-24 | 北京庭宇科技有限公司 | 一种基于虚拟声卡的云桌面声音采集方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112399257B (zh) | 2024-03-05 |
WO2021031739A1 (zh) | 2021-02-25 |
EP4009648A4 (en) | 2022-11-23 |
EP4009648A1 (en) | 2022-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7284906B2 (ja) | メディアコンテンツの配信および再生 | |
CN112399257B (zh) | 云桌面视频播放方法、服务器、终端及存储介质 | |
CN110740363B (zh) | 投屏方法和系统、电子设备 | |
CN111221491A (zh) | 交互控制方法及装置、电子设备、存储介质 | |
WO2017075956A1 (zh) | 内容投射方法及移动终端 | |
CN104685873B (zh) | 编码控制设备以及编码控制方法 | |
US10803903B2 (en) | Method for capturing and recording high-definition video and audio output as broadcast by commercial streaming service providers | |
KR101931514B1 (ko) | 웹 브라우저에서 미디어의 재생과 백업을 동시에 수행하는 장치 및 방법 | |
US9674255B1 (en) | Systems, devices and methods for presenting content | |
KR20200146007A (ko) | 동영상 시스템 및 동영상 처리 방법, 장치 및 컴퓨터 판독 가능 매체 | |
CN108881801B (zh) | 视频会议的码流传输方法、系统、电子设备、存储介质 | |
KR102299615B1 (ko) | 컨텐트 분산 네트워크들에서 엠펙 미디어 전송 통합을 위한 방법 및 장치 | |
US9055272B2 (en) | Moving image reproduction apparatus, information processing apparatus, and moving image reproduction method | |
KR20140117889A (ko) | 클라이언트 장치, 서버 장치, 멀티미디어 리디렉션 시스템 및 그 방법 | |
JP2012257196A (ja) | 画面の共有に基づくストリーミングメディア転送システム及びその方法 | |
US9635424B2 (en) | Virtual high definition video player | |
US10812549B1 (en) | Techniques for secure screen, audio, microphone and camera recording on computer devices and distribution system therefore | |
US9386059B2 (en) | Apparatus and method for providing time shift function in cloud computing system | |
WO2023273772A1 (zh) | 数据处理方法、云服务器、终端及存储介质 | |
CN117834982A (zh) | 视频播放处理方法、装置、电子设备及存储介质 | |
CN114286193A (zh) | 嵌入式web的视频播放方法、装置、设备及可读存储介质 | |
CN115604496A (zh) | 一种显示设备、直播切台方法及存储介质 | |
CN117812387A (zh) | 一种显示设备及流媒体播放方法 | |
CN118301376A (zh) | 一种基于m3u8切片的实时视频播放解决方法 | |
CN117915150A (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 |