CN110248192B - 编码器切换、解码器切换、屏幕分享方法和屏幕分享系统 - Google Patents
编码器切换、解码器切换、屏幕分享方法和屏幕分享系统 Download PDFInfo
- Publication number
- CN110248192B CN110248192B CN201910505999.8A CN201910505999A CN110248192B CN 110248192 B CN110248192 B CN 110248192B CN 201910505999 A CN201910505999 A CN 201910505999A CN 110248192 B CN110248192 B CN 110248192B
- Authority
- CN
- China
- Prior art keywords
- encoder
- encoding
- available
- target
- decoder
- 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
- 238000000034 method Methods 0.000 title claims abstract description 122
- 230000003044 adaptive effect Effects 0.000 claims description 67
- 238000001514 detection method Methods 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 6
- 230000008685 targeting Effects 0.000 claims description 3
- 230000008859 change Effects 0.000 description 28
- 238000010586 diagram Methods 0.000 description 23
- 238000012545 processing Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 9
- 238000005266 casting Methods 0.000 description 5
- 230000000903 blocking effect Effects 0.000 description 4
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 208000003028 Stuttering Diseases 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
- G06F3/1454—Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- 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/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
- H04N21/234309—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4 or from Quicktime to Realvideo
-
- 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/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
- H04N21/4402—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
- H04N21/440218—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请涉及一种编码器切换、解码器切换、屏幕分享方法和屏幕分享系统,所述方法包括:确定编码端中的可用编码器;所述编码端应用初始编码器执行编码操作;确定解码端中的可用解码器;在所述可用编码器中,将与所述可用解码器匹配的、且编码效率高于所述初始编码器的可用编码器,作为目标编码器;通知所述编码端从所述初始编码器切换至所述目标编码器。本申请提供的方案可以充分利用所具有的编码器执行编码操作,提升了编码端的编码效率。
Description
技术领域
本申请涉及视频处理领域,特别是涉及一种编码器切换方法和装置、一种解码器切换方法和装置、一种屏幕分享方法和装置、一种屏幕分享系统、计算机可读存储介质和计算机设备。
背景技术
随着视频处理领域的发展,出现了屏幕分享技术。屏幕分享技术是将发送端的屏幕内容分享至接收端的技术。具体地,发送端采集屏幕内容形成视频,然后通过编码器对视频执行编码操作,将编码得到的数据传输至服务器,服务器将数据转发至接收端,接收端则通过相应的解码器执行解码操作,得到屏幕内容的视频并显示。由此实现了发送端将屏幕内容分享至接收端的效果。
然而,在进行屏幕分享的过程中,当确定了发送端使用初始编码器执行编码操作之后,即使发送端具备编码效率更高的编码器,为了避免解码端出现解码失败的情况,发送端也会继续使用初始编码器,从而,由于无法利用编码效率更高的编码器,影响了屏幕分享中的编码效率。
因此,目前的传统方法,存在着在屏幕分享时编码效率较低的问题。
发明内容
基于此,有必要针对屏幕分享时编码效率较低的问题,提供一种编码器切换方法和装置、一种解码器切换方法和装置、一种屏幕分享方法和装置、一种屏幕分享系统、计算机可读存储介质和计算机设备。
一种编码器切换方法,包括:
确定编码端中的可用编码器;所述编码端应用初始编码器执行编码操作;
确定解码端中的可用解码器;
在所述可用编码器中,将与所述可用解码器匹配的、且编码效率高于所述初始编码器的可用编码器,作为目标编码器;
通知所述编码端从所述初始编码器切换至所述目标编码器。
一种编码器切换方法,应用于编码端,所述编码端应用初始编码器执行编码操作;所述方法包括:
检测所述编码端的可用编码器;
上报所述可用编码器至服务器;所述服务器用于确定解码端的可用解码器;所述服务器还用于确定目标编码器,并通知所述编码端切换至所述目标编码器;所述目标编码器为与所述可用解码器匹配的、且编码效率高于所述初始编码器的可用编码器;
从所述初始编码器切换至所述目标编码器,以应用所述目标编码器执行编码操作。
一种解码器切换方法,应用于解码端,所述解码端应用初始解码器执行解码操作;所述方法包括:
检测所述解码端的可用解码器;
上报所述可用解码器至服务器;所述服务器用于确定编码端的可用编码器;所述编码端应用初始编码器执行编码操作;所述服务器还用于确定目标编码器,并通知所述编码端从所述初始编码器切换至所述目标编码器;所述目标编码器为与所述可用解码器匹配的、且编码效率高于所述初始编码器的可用编码器;
接收所述服务器的已编码数据;所述已编码数据为所述编码端应用所述目标编码器执行编码操作得到的数据;所述服务器用于将所述编码端的已编码数据转发至所述解码端;
根据所述已编码数据,确定目标解码器;所述目标解码器与所述目标编码器匹配;
从所述初始解码器切换至所述目标解码器,以应用所述目标解码器对所述已编码数据执行解码操作。
一种编码器切换方法,应用于编码端,所述编码端应用初始编码器执行编码操作,所述初始编码器具有编码方式;所述方法包括:
检测所述编码端的可用编码器,并上报所述可用编码器至服务器;所述服务器用于确定解码端的可用解码器;
检测所述编码端的运行信息,当所述初始编码器的编码方式不适配所述运行信息,生成切换请求;所述切换请求记录有适配编码方式;所述适配编码方式适配于所述运行信息;所述运行信息包括运行状况和/或运行场景;
发送所述切换请求至所述服务器,以供所述服务器响应于所述切换请求确定目标编码器,并通知所述编码端切换至所述目标编码器;所述目标编码器为与所述可用解码器匹配的、所述编码方式符合所述适配编码方式的、且编码效率高于所述初始编码器的可用编码器;
从所述初始编码器切换至所述目标编码器,以应用所述目标编码器执行编码操作。
一种屏幕分享方法,应用于发送端,所述发送端用于将屏幕内容分享至接收端,所述发送端应用初始编码器对所述屏幕内容执行编码操作;所述方法包括:
检测所述发送端的可用编码器;
上报所述可用编码器至服务器;所述服务器用于确定接收端的可用解码器;所述服务器还用于确定目标编码器,并通知所述发送端切换至所述目标编码器;所述目标编码器为与所述可用解码器匹配的、且编码效率高于所述初始编码器的可用编码器;
从所述初始编码器切换至所述目标编码器;
应用所述目标编码器对所述屏幕内容执行编码操作,得到已编码数据;
发送所述已编码数据至所述服务器,以供所述服务器将所述已编码数据发送至所述接收端,所述接收端应用目标解码器对所述已编码数据执行解码操作,得到所述屏幕内容;所述目标解码器与所述目标编码器匹配。
一种屏幕分享系统,包括:
发送端、接收端和服务器;
所述发送端用于将屏幕内容分享至所述接收端,所述发送端应用初始编码器对所述屏幕内容执行编码操作;所述接收端应用初始解码器执行解码操作;
所述发送端,用于检测可用编码器,并上报所述可用编码器至所述服务器;
所述接收端,用于检测可用解码器,并上报所述可用解码器至所述服务器;
所述服务器,用于确定目标编码器,并通知所述发送端从所述初始编码器切换至所述目标编码器;所述目标编码器为与所述可用解码器匹配的、且编码效率高于所述初始编码器的可用编码器;
所述发送端,还用于从所述初始编码器切换至所述目标编码器,应用所述目标编码器对所述屏幕内容执行编码操作,得到已编码数据,并发送所述已编码数据至所述服务器;
所述服务器,还用于将所述已编码数据发送至所述接收端;
所述接收端,还用于从所述初始解码器切换至目标解码器,应用所述目标解码器对所述已编码数据执行解码操作,得到所述屏幕内容;所述目标解码器与所述目标编码器匹配。
一种编码器切换装置,包括:
编码器确定模块,用于确定编码端中的可用编码器;所述编码端应用初始编码器执行编码操作;
解码器确定模块,用于确定解码端中的可用解码器;
目标确定模块,用于在所述可用编码器中,将与所述可用解码器匹配的、且编码效率高于所述初始编码器的可用编码器,作为目标编码器;
通知模块,用于通知所述编码端从所述初始编码器切换至所述目标编码器。
一种编码器切换装置,应用于编码端,所述编码端应用初始编码器执行编码操作;所述装置包括:
检测模块,用于检测所述编码端的可用编码器;
上报模块,用于上报所述可用编码器至服务器;所述服务器用于确定解码端的可用解码器;所述服务器还用于确定目标编码器,并通知所述编码端切换至所述目标编码器;所述目标编码器为与所述可用解码器匹配的、且编码效率高于所述初始编码器的可用编码器;
切换模块,用于从所述初始编码器切换至所述目标编码器,以应用所述目标编码器执行编码操作。
一种解码器切换装置,应用于解码端,所述解码端应用初始解码器执行解码操作;所述装置包括:
检测模块,用于检测所述解码端的可用解码器;
上报模块,用于上报所述可用解码器至服务器;所述服务器用于确定编码端的可用编码器;所述编码端应用初始编码器执行编码操作;所述服务器还用于确定目标编码器,并通知所述编码端从所述初始编码器切换至所述目标编码器;所述目标编码器为与所述可用解码器匹配的、且编码效率高于所述初始编码器的可用编码器;
接收模块,用于接收所述服务器的已编码数据;所述已编码数据为所述编码端应用所述目标编码器执行编码操作得到的数据;所述服务器用于将所述编码端的已编码数据转发至所述解码端;
解码器确定模块,用于根据所述已编码数据,确定目标解码器;所述目标解码器与所述目标编码器匹配;
切换模块,用于从所述初始解码器切换至所述目标解码器,以应用所述目标解码器对所述已编码数据执行解码操作。
一种编码器切换装置,应用于编码端,所述编码端应用初始编码器执行编码操作,所述初始编码器具有编码方式;所述装置包括:
编码能力检测模块,用于检测所述编码端的可用编码器,并上报所述可用编码器至服务器;所述服务器用于确定解码端的可用解码器;
运行信息检测模块,用于检测所述编码端的运行信息,当所述初始编码器的编码方式不适配所述运行信息,生成切换请求;所述切换请求记录有适配编码方式;所述适配编码方式适配于所述运行信息;所述运行信息包括运行状况和/或运行场景;
请求发送模块,用于发送所述切换请求至所述服务器,以供所述服务器响应于所述切换请求确定目标编码器,并通知所述编码端切换至所述目标编码器;所述目标编码器为与所述可用解码器匹配的、所述编码方式符合所述适配编码方式的、且编码效率高于所述初始编码器的可用编码器;
切换模块,用于从所述初始编码器切换至所述目标编码器,以应用所述目标编码器执行编码操作。
一种屏幕分享装置,应用于发送端,所述发送端用于将屏幕内容分享至接收端,所述发送端应用初始编码器对所述屏幕内容执行编码操作;所述装置包括:
检测模块,用于检测所述发送端的可用编码器;
上报模块,用于上报所述可用编码器至服务器;所述服务器用于确定接收端的可用解码器;所述服务器还用于确定目标编码器,并通知所述发送端切换至所述目标编码器;所述目标编码器为与所述可用解码器匹配的、且编码效率高于所述初始编码器的可用编码器;
切换模块,用于从所述初始编码器切换至所述目标编码器;
编码模块,用于应用所述目标编码器对所述屏幕内容执行编码操作,得到已编码数据;
发送模块,用于发送所述已编码数据至所述服务器,以供所述服务器将所述已编码数据发送至所述接收端,所述接收端应用目标解码器对所述已编码数据执行解码操作,得到所述屏幕内容;所述目标解码器与所述目标编码器匹配。
一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行以下步骤:
确定编码端中的可用编码器;所述编码端应用初始编码器执行编码操作;
确定解码端中的可用解码器;
在所述可用编码器中,将与所述可用解码器匹配的、且编码效率高于所述初始编码器的可用编码器,作为目标编码器;
通知所述编码端从所述初始编码器切换至所述目标编码器。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行以下步骤:
确定编码端中的可用编码器;所述编码端应用初始编码器执行编码操作;
确定解码端中的可用解码器;
在所述可用编码器中,将与所述可用解码器匹配的、且编码效率高于所述初始编码器的可用编码器,作为目标编码器;
通知所述编码端从所述初始编码器切换至所述目标编码器。
上述编码器切换、解码器切换、屏幕分享方法和装置、屏幕分享系统、计算机可读存储介质和计算机设备,首先确定编码端中的可用编码器和解码端中的可用解码器,然后将与可用解码器匹配的、且编码效率高于初始编码器的可用编码器作为目标编码器,并通知编码端从初始编码器切换至目标编码器,供编码端应用目标编码器执行编码操作,从而,通过与编码端、解码端进行协商的方式,在编码端具有编码效率更高的编码器、且解码端具有相应的解码器的情况下,编码器可以充分利用所具有的编码器执行编码操作,提升了编码端的编码效率。
附图说明
图1为一个实施例中编码器切换方法的应用环境图;
图2为一个实施例中一种编码器切换方法的流程示意图;
图3为一个编码端新接入服务器的场景示意图;
图4为一个解码端新接入服务器的场景示意图;
图5为一个实施例中另一种编码器切换方法的流程示意图;
图6为一个实施例中一种解码器切换方法的流程示意图;
图7为一个实施例中又一种编码器切换方法的流程示意图;
图8为一个实施例中一种屏幕分享方法的流程示意图;
图9为一个实施例中一种屏幕分享系统的结构框图;
图10A为一个实施例中一种屏幕分享场景的示意图;
图10B为一个实施例中一种无线投屏应用的界面示意图;
图10C为一个实施例中一种具体的屏幕分享场景的示意图;
图11为一个实施例中一种屏幕分享场景中实时动态切换编码器的流程图;
图12为一个实施例中一种屏幕分享场景中实时动态切换编码器的时序图;
图13为一个实施例中一种编码器切换装置的结构框图;
图14为一个实施例中另一种编码器切换装置的结构框图;
图15为一个实施例中一种解码器切换装置的结构框图;
图16为一个实施例中又一种编码器切换装置的结构框图;
图17为一个实施例中一种屏幕分享装置的结构框图;
图18为一个实施例中计算机设备的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图1为一个实施例中编码器切换方法的应用环境图。在该应用环境中,可以包括编码端110、服务器120和解码端130。
其中,编码端110和服务器120通过网络连接,解码端130和服务器120通过网络连接。编码端110和解码端130具体可以是台式终端或移动终端,移动终端具体可以手机、平板电脑、笔记本电脑等中的至少一种。服务器120可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
其中,编码端110可以用于进行视频播放、幻灯片播放、文档演示等操作,并在编码端110的屏幕上显示相应的内容。编码端110可以用于采集屏幕内容,得到视频数据格式的屏幕内容。编码端110可以应用编码器对该屏幕内容执行编码操作,将编码后的数据发送至服务器120。服务器120可以用于接收编码端发送的数据,并转发至解码端130。解码端130可以用于接收服务器120的数据,并应用解码器对数据执行解码操作,得到视频数据格式的屏幕内容,并在解码端130的屏幕上显示屏幕内容。
例如,在一个远程会议的应用场景中,用户A通过编码端110进入一个会议房间,用户B通过解码端130进入同一个会议房间。即,编码端110和解码端130均建立了与服务器120的连接。用户A可以通过编码端110进行文档演示,编码端110进行采集屏幕内容、编码并发送数据至服务器120,服务器120将数据转发至解码端130,解码端130接收到数据后进行解码并显示,于此,用户B则可以通过解码端130观看到编码端110正在演示的文档,从而实现了远程会议的屏幕内容分享。
需要说明的是,未经编码的视频数据的数据量较大,如直接通过网络传输视频数据,需要较长的传输时间,难以满足屏幕分享对时效性的需求。因此,需要通过编码器对视频数据进行压缩,以减少传输时间,保证屏幕分享的时效性。
目前用于屏幕分享的编码器,主要包括H.262编码器、H.263编码器、H.264编码器、H.265编码器、H.265/SCC编码器等。相应地,解码器可以包括H.262解码器、H.263解码器、H.264解码器、H.265解码器、H.265/SCC解码器等。当然,在实际应用中,编码器、解码器还可以包括MPEG-1、MPEG-2、MPEG-4等,本实施例对具体的编码器、解码器不作限定。需要说明的是,在实际应用中,还具有编解码一体的编解码器。编解码器即既可以执行编码操作,也可以执行解码操作。在执行编码操作时,该编解码器可以理解为本实施例的编码器,而在执行解码操作时,该编解码器可以理解为本实施例的解码器。
解码端130在执行解码操作时,需要先确定所接收到的数据的编码类型,即,执行编码操作时所采用的编码器。然后,采用与该编码器匹配的解码器进行解码。
例如,编码端110应用H.264编码器执行编码操作,解码端130根据接收到的数据,应用H.264解码器执行解码操作。
然而,如果编码端110切换至H.265/SCC编码器执行编码操作,而解码端130又并不具备相应的H.265/SCC解码器时,解码端130则无法正常地执行解码操作,导致解码失败。
因此,在传统方法中,编码端110会采用预设的初始编码器进行编码,预设的初始编码器通常是较为早期、且较为通用的编码器,以保证解码端130也具有相应的解码器。同时,编码端110保持应用初始编码器进行编码,从而保证解码端130可以正常解码。但是,如果编码端110具有可用的、编码效率更高的编码器时,则无法有效利用编码端110的编码能力,影响了编码效率。
如图2所示,在一个实施例中,提供了一种编码器切换方法。本实施例主要以该方法应用于上述图1中的服务器120来举例说明。参照图2,该编码器切换方法具体包括如下步骤:
S202,确定编码端中的可用编码器;编码端应用初始编码器执行编码操作。
其中,可用编码器为编码端110上的可以用于执行编码操作的编码器。
其中,初始编码器为编码端110当前所应用于执行编码操作的编码器。初始编码器为可用编码器中的正在用于执行编码操作的编码器。
具体实现中,编码端110在接入服务器120之后,可以检测编码能力,即,检测本地所具有的可用的编码器。编码端110检测编码能力后,生成用于标识可用的编码器的编码能力信息,并将该编码能力信息发送至服务器120。
服务器120接收到编码端110的编码能力信息,即可以相应确定编码端110上可用于执行编码操作的编码器。由此,通过编码端110检测编码能力并上报的方式,服务器120可以确定编码端中的可用编码器。
具体实现中,还可以通过实时更新的方式确定可用编码器。具体地,在编码端110首次连接至服务器120时,编码端110检测可用编码器并上报,服务器120记录编码端110的可用编码器。在下次连接时,如果编码端110未检测到新的可用编码器,则不上报,服务器120通过查询历史记录的可用编码器,作为本次的可用编码器;如果编码端110检测到新的可用编码器,则上报新检测到的可用编码器,服务器120采用新检测到的可用编码器,更新历史记录的可用编码器,得到编码端110最新的可用编码器。
当然,上述说明仅作为确定可用编码器的具体示例,本领域技术人员还可以采用其他方式确定编码端110的可用编码器,本实施例对确定可用编码器的具体方式不作限制。
实际应用中,可能存在有多个编码端110,因此,服务器120可以相应确定多个编码端110的可用编码器。
S204,确定解码端中的可用解码器。
其中,可用解码器可以为解码端130上的可用于执行解码操作的解码器。
具体实现中,解码端130在接入服务器120之后,可以检测解码能力,即,检测本地所具有的可用的解码器。解码端130检测解码能力后,生成用于标识可用的解码器的解码能力信息,并将该解码能力信息发送至服务器120。
服务器120接收到解码端110的解码能力信息,即可以相应确定解码端130上可用于执行解码操作的解码器。由此,通过解码端130检测解码能力并上报的方式,服务器120可以确定解码端中的可用解码器。
具体实现中,还可以通过实时更新的方式确定可用解码器。由于实时更新的方式类似于实时更新的方式确定可用编码器,参考上文内容即可,在此不再赘述。
当然,上述说明仅作为确定可用解码器的具体示例,本领域技术人员还可以采用其他方式确定解码端130的可用解码器,本实施例对确定可用解码器的具体方式不作限制。
实际应用中,可能存在有多个解码端130,因此,服务器120可以相应确定多个解码端130的可用解码器。
S206,在所述可用编码器中,将与可用解码器匹配的、且编码效率高于初始编码器的可用编码器,作为目标编码器。
其中,目标编码器为在多个可用编码器中的、与任意一个可用解码器匹配的、且编码效率高于初始编码器的编码效率的可用编码器。
其中,编码效率(coding efficiency)可以为编码器进行编码的压缩性能。
具体实现中,服务器120可以首先在多个可用编码器中,确定与可用解码器匹配的可用编码器。更体地,可以将编码器的编码类型与解码器的解码类型进行匹配,当可用编码器的编码类型,与某个可用解码器的解码类型相同,可以确定该可用编码器与该解码器匹配。
例如,可用编码器为H.265编码器,其编码类型为H.265,可用解码器包括H.263解码器、H.264解码器、H.265解码器,其中,H.265解码器的解码类型为H.265,与H.265编码器的编码类型H.265相同,因此,确定H.265编码器与H.265解码器匹配。
需要说明的是,编码类型与解码类型匹配,是指编码器的编码协议类型的与解码器的解码协议类型匹配。当编码器的编码类型与解码器的解码类型匹配时,编码器基于特定的编码协议进行编码后得到的数据,可以被解码器通过相应的解码协议进行正确的解码,反之,则会导致解码失败。
在实际应用中,可用编码器可以具有多个,可用解码器也可以具有多个,在匹配之后,可以在多个可用编码器中,得到编码类型与任意一个可用解码器的解码类型所匹配的可用编码器。为了便于说明,编码类型与可用解码器的解码类型匹配的可用编码器,命名为类型匹配编码器。
在确定与可用解码器匹配的多个可用编码器之后,可以在该多个可用编码器之中,确定编码效率高于初始编码器的编码器,作为目标编码器。
例如,确定与可用解码器匹配的可用编码器为H.263编码器、H.265编码器和H.265/SCC编码器,初始编码器为H.263编码器,而H.265编码器和H.265/SCC编码器的编码效率高于H.263编码器,因此,将H.265编码器或H.265/SCC编码器,作为上述的目标编码器。
需要说明的是,编码器、解码器的研发人员可以对编码协议、解码协议进行改进,基于改进后的新的编码协议、解码协议形成新的编码器、解码器。新的编码器、解码器,在保证相同画质、码率的情况下,压缩率等的压缩性能指标可以有较大提高,即提升了编码效率。在编码效率提高的情况下,数据的码率下降,所要通过网络传输的数据量则较小,节省了网络带宽。
实际应用中,本领域技术人员还可以通过其他方式确定目标编码器,本实施例对目标编码器的具体确定方式不作限制。例如,还可以首先在多个可用编码器中,确定编码效率高于初始编码器的可用编码器,然后,在编码效率高于初始编码器的可用编码器之中,确定与可用解码器匹配的可用编码器,作为上述的目标编码器。
S208,通知编码端从初始编码器切换至目标编码器。
具体实现中,服务器120可以根据所确定的目标编码器,生成编码参数,将编码参数下发至编码端110。编码参数可以记录有标识编码类型的编码器标识,例如,编码参数可以包含有H.265该编码器标识。
编码端110接收到编码参数之后,根据编码参数中的编码器标识,可以确定对应的编码器,为目标编码器,并从初始编码器切换至目标编码器,应用目标编码器,对视频数据格式的屏幕内容执行编码操作,得到编码后的数据,并发送该数据至服务器120。服务器120在接收到数据后,转发至解码端130,解码端130根据数据确定相应的目标解码器,并应用目标解码器对数据执行解码操作,得到解码后的数据,即视频数据格式的屏幕内容,并向用户进行展示。
当然,上述说明仅作为通知编码端110切换编码器的具体示例,本领域技术人员还可以采用其他方式通知编码端110切换编码器,本实施例对编码端110切换编码器的具体通知方式不作限制。
上述的编码器切换方法,首先确定编码端中的可用编码器和解码端中的可用解码器,然后将与可用解码器匹配的、且编码效率高于初始编码器的可用编码器作为目标编码器,并通知编码端从初始编码器切换至目标编码器,供编码端应用目标编码器执行编码操作,从而,通过与编码端、解码端进行协商的方式,在编码端具有编码效率更高的编码器、且解码端具有相应的解码器的情况下,编码器可以充分利用所具有的编码器执行编码操作,提升了编码端的编码效率。
而且,编码端切换至编码效率更优的编码器,编码效率提高,从而降低了码率,通过网络传输的数据量则较小,在屏幕分享时节省了网络带宽,可以有效降低由于网络卡顿、延迟等因素对屏幕分享时效性的影响。
在一个实施例中,可用编码器具有编码类型,可用解码器具有解码类型,步骤S206可以具体包括:
将编码类型与可用解码器的解码类型匹配的可用编码器,作为类型匹配编码器;将编码效率高于初始编码器的类型匹配编码器,作为高效编码器;根据高效编码器,确定目标编码器。
其中,编码类型为编码器进行编码所使用的编码协议的类型。
其中,解码类型为解码器进行解码所使用的解码协议的类型。
其中,类型匹配编码器为可用编码器中编码类型与特定的解码类型匹配的编码器。
其中,高效编码器为类型匹配编码器中的编码效率高于初始编码器的编码效率的编码器。
具体实现中,服务器120可以确定可用编码器的编码类型和可用解码器的解码类型,然后,将在可用编码器中,查找编码类型与可用解码器的解码类型匹配的编码器,作为类型匹配编码器。
例如,可用编码器包括H.262编码器、H.263编码器、H.264编码器和H.265编码器。其编码类型分别为H.262、H.263、H.264和H.265,可用解码器包括H.262解码器、H.264解码器、H.265解码器和H.265/SCC解码器。查找到H.262编码器、H.264编码器和H.265编码器的编码类型,分别与H.262解码器、H.264解码器、H.265解码器的解码类型匹配,因此,H.262编码器、H.264编码器和H.265编码器,为类型匹配编码器。
得到类型匹配编码器之后,服务器120可用在类型匹配编码器中,选取编码效率高于初始编码器的编码器,作为高效编码器。
在上述例子的基础上,类型匹配编码器H.262编码器、H.264编码器和H.265编码器中,初始编码器为H.262编码器,而H.264编码器和H.265编码器的编码效率,高于H.262编码器,因此,可用将H.264编码器或H.265编码器,作为高效编码器。
得到高效编码器之后,可用进一步确定目标编码器。具体地,如果高效编码器有多个,可用选取任意一个高效编码器作为目标编码器,或者,选取编码效率最优的高效编码器作为目标编码器。
需要说明的是,如果首先确定编码效率高于初始编码器的可用编码器,再进一步匹配编码类型与解码类型,所以,匹配的处理效率较低。
上述的编码器切换方法,通过首先确定编码类型与解码类型匹配的编码器作为类型匹配编码器,然后在类型匹配编码器中确定编码效率高于初始编码器的编码器作为高效编码器,最后根据高效编码器确定目标编码器,从而可用在较小的编码器范围内确定高效编码器,无须将每个可用编码器与初始编码器的编码效率进行比较,提升了匹配的处理效率。
在另一个实施例中,可用编码器具有编码方式;本申请的编码器切换方法还包括:接收所述编码端的切换请求;所述切换请求记录有所述编码端的适配编码方式;所述适配编码方式适配于所述编码端的运行状况和/或运行场景;所述根据所述高效编码器,确定所述目标编码器,包括:将所述编码方式与所述适配编码方式符合的高效编码器,作为所述目标编码器。
其中,编码方式可以为编码器进行编码所使用的工具。编码方式主要包括硬件编码方式和软件编码方式。硬件编码方式可以为编码器基于硬件设备进行编码的方式。软件编码方式可以为编码器基于软件程序进行编码的方式。
其中,切换请求可以为编码端110检测编码端110的运行状况和/或运行场景后生成的、请求服务器120选取符合编码端110的运行状况和/或运行场景的编码器的信息。
其中,适配编码方式可以为适配于编码端110的运行状况和/或运行场景的编码方式。
其中,运行状况可以为编码端110运行时硬件、软件的状况。例如,编码端110的CPU利用率,电池电量、编码速度、内存使用率等状况。
其中,运行场景可以为编码端110所要编码的画面内容的场景。例如,运行场景可以包括文档演示、幻灯片播放等的简单场景,也可以包括视频播放等的复杂场景。
具体实现中,编码端110可以检测自身CPU利用率,电池电量、编码速度、内存使用率等的运行状况。然后,编码端110判断检测的运行状况是否适配于初始编码器的编码方式。当检测的运行状况不适配于初始编码器的编码方式,则确定与检测的运行状况适配的编码方式,作为适配编码方式,并生成记录适配编码方式的切换请求,发送该切换请求至服务器120。
例如,编码端110的初始编码器的编码方式为软件编码方式,编码端110可以实时检测自身的CPU利用率,当CPU利用率高于设定的利用率阈值,则判定初始编码器的软件编码方式不适配于当前的CPU利用率,确定硬件编码方式为适配于当前的运行状况的适配编码方式,生成切换请求,发送切换请求至服务器120。
具体实现中,编码端110还可以检测自身的运行场景。然后,编码端110判断检测的运行场景是否适配于初始编码器的编码方式。当检测的运行场景不适配于初始编码器的编码方式,则确定与检测的运行场景适配的编码方式,作为适配编码方式,并生成记录适配编码方式的切换请求,发送该切换请求至服务器120。
例如,编码端110的初始编码器的编码方式为软件编码方式,编码端110可以实时检测自身的运行场景,当检测到编码端110正在播放视频,即,编码端110的运行场景为复杂场景,则判定初始编码器的软件编码方式不适配于当前的复杂场景,确定硬件编码方式为适配于当前的复杂场景的适配编码方式,生成切换请求,发送切换请求至服务器120。
服务器120接收到编码端110的切换请求之后,可以结合切换请求所记录的适配编码方式,确定目标编码器。具体地,服务器120可以在确定多个高效编码器之后,将各个高效编码器的编码方式于适配编码方式进行匹配,将编码方式符合适配编码方式的高效编码器,作为目标编码器。
例如,当前的适配编码方式为硬件编码方式,在H.264编码器-软件编码方式、H.265编码器-硬件编码方式、H.265编码器-软件编码方式、H.265/SCC编码器-硬件编码方式该多个编码器中,H.265编码器-硬件编码方式或H.265/SCC编码器-硬件编码方式与适配编码方式符合,因此,可以作为上述的目标编码器。
需要说明的是,相对于硬件编码方式,软件编码方式具有较好的编码质量,但可能会占用编码端较多的处理资源,严重时可能会导致编码端运行速度下降,出现画面卡顿、延迟的情况,影响用户进行屏幕分享的体验。相对地,硬件编码方式是通过独立的硬件进行编码,无须占用编码端的处理资源,并不会导致编码端运行速度下降,但是编码质量则不如软件编码方式。
当编码端110出现CPU利用率较高、电池电量较低、或者编码速度较低等的运行状况时,如果继续应用软件编码方式的编码器进行编码,则会由于编码端的处理资源不足,导致画面卡顿、延时的情况,不符合屏幕分享场景对实时性的要求。
因此,如果编码端110当前的编码方式为软件编码方式,当出现CPU利用率较高、电池电量较低、编码速度较低等的运行状况时,则可以切换至硬件编码方式的编码器,减少对编码端110的处理资源的占用,避免画面卡顿、延时等的情况,满足屏幕分享场景对实时性的要求。
反之,如果编码端110当前的编码方式为硬件编码方式,而编码端处于CPU利用率较低、电池电量较高、或者编码速度较高的运行状况,则可以切换至软件编码方式的编码器,可以在避免画面卡顿、延时的同时,提高编码质量。
需要进一步说明的是,编码端的运行场景也会影响到编码端编码所消耗的处理资源。对于文档演示、幻灯片播放等的画面内容变化较简单的简单场景,由于需要编码的屏幕内容较少,因此,编码端110的编码操作对处理资源的占用较少。而对于视频播放等的画面内容变化较复杂的复杂场景,由于需要编码的屏幕内容较多,因此,编码端110的编码操作对处理资源的占用较多。
因此,如果编码端110当前的编码方式为软件编码方式,而编码端实时的运行场景为视频播放等的复杂场景,则可以切换至硬件编码方式的编码器,避免画面卡顿、延时等的情况。
反之,如果编码端110当前的编码方式为硬件编码方式,而编码端实时的运行场景为文档演示、幻灯片播放等的简单场景,则可以切换至软件编码方式的编码器,可以在避免画面卡顿、延时的同时,提高编码质量。
上述的编码器切换方法,通过根据编码端的运行状况和/或运行场景确定适配编码方式,以供编码端切换至编码方式适配于当前的运行状况和/或运行场景的编码器进行编码器,在提升编码端的编码效率的同时,使得编码方式适配于运行状况和/或运行场景。
在另一个实施例中,步骤S208,可以具体包括:
生成编码参数;所述编码参数包括所述目标编码器的编码类型和编码方式;下发所述编码参数至所述编码端,以供所述编码端根据所述目标编码器的编码类型和编码方式,切换至所述目标编码器。
其中,编码参数可以为记录目标编码器的编码类型、编码方式等信息的参数。例如,编码参数可以具体包括:编码类型H.265/硬件编码方式/码率/GOP类型(Group ofPictures,画面组)。
具体实现中,服务器120可以通过下发编码参数的方式通知编码端110切换编码器。服务器120可以生成编码参数,该编码参数记录有目标编码器的编码类型和编码方式,然后,服务器120将编码参数下发至编码端110。编码端110在接收到编码参数后,可以根据编码参数中的编码类型和编码方式,切换至相应的目标编码器。
在另一个实施例中,还包括:
确定新接入编码端的可用编码器;当新接入编码端的可用编码器不包含有目标编码器,更新目标编码器,得到更新编码器;更新编码器为与编码端的可用编码器匹配的、且与解码端的可用解码器匹配的、且与新接入编码端的可用编码器匹配的编码器;通知编码端从目标编码器切换至更新编码器,以及,通知新接入编码端切换至更新编码器。
其中,新接入编码端可以为新接入至服务器120的编码端。
在图1的基础上,图3是一个编码端新接入服务器的场景示意图。如图所示,编码端140与服务器120建立了连接,编码端140可以通过服务器120将屏幕分享至解码端130。例如,在一个远程会议的应用场景中,一个会议房间中已经存在有用户A和用户B,用户C通过编码端140进入该会议房间,以参与该远程会议。
具体实现中,当存在有新接入服务器120的编码端140,服务器120确定新接入的编码端140的可用编码器,判断编码端140是否具有目标编码器,若否,则确定与编码端110的可用编码器匹配的、且与解码端130的可用解码器匹配的、且与新接入的编码端140的可用编码器匹配的编码器,作为更新编码器。然后,服务器120通知编码端110和编码端140切换至更新编码器。
上述的编码器切换方法,通过根据新接入的编码端的可用编码器,实时更新原编码端和新接入编码端当前需要切换的编码器,保证了各个编码端可以充分利用所具有的编码器执行编码操作,提升了编码端的编码效率的同时,避免了解码端无法对新接入编码端所编码的数据正常解码的问题。
在另一个实施例中,还包括:
确定新接入解码端的可用解码器;当新接入解码端的可用解码器与目标编码器不匹配,更新目标编码器,得到更新编码器;更新编码器为与解码端的可用解码器匹配的、且与新接入解码端的可用解码器匹配的可用编码器;通知编码端从目标编码器切换至更新编码器。
其中,新接入解码端可以为新接入至服务器120的解码端。
在图1的基础上,图4是一个解码端新接入服务器的场景示意图。如图所示,解码端150与服务器120建立了连接,编码端110可以通过服务器120将屏幕分享至解码端130和新接入的解码端150。例如,在一个远程会议的应用场景中,一个会议房间中已经存在有用户A和用户B,用户C通过解码端150进入该会议房间,以参与该远程会议。
具体实现中,当存在有新接入服务器120的解码端150,服务器120确定新接入的解码端150的可用解码器,判断解码端150的可用解码器是否与目标编码器匹配,若不匹配,则确定与解码端130的可用解码器匹配的、且与新接入的解码端150的可用解码器匹配的可用编码器,作为更新编码器。然后,服务器120通知编码端110从目标编码器切换至更新编码器。
上述的编码器切换方法,通过根据新接入的解码端的可用解码器,实时更新编码端当前需要切换的编码器,保证了编码端在充分利用所具有的编码器执行编码操作、提升了编码端的编码效率的同时,避免了新接入的解码端无法正常解码的问题。
如图5所示,在一个实施例中,提供了一种编码器切换方法,本实施例主要以该方法应用于上述图1中的编码端110来举例说明。参照图5,该编码器切换方法具体包括如下步骤:
S502,检测编码端的可用编码器。
S504,上报可用编码器至服务器;服务器用于确定解码端的可用解码器;服务器还用于确定目标编码器,并通知编码端切换至目标编码器;目标编码器为与可用解码器匹配的、且编码效率高于初始编码器的可用编码器。
S506,从初始编码器切换至目标编码器,以应用目标编码器执行编码操作。
具体实现中,编码端110在接入服务器120之后,可以检测编码能力,即,检测本地所具有的可用的编码器。例如,编码端110可以检测自身各个编码器的编码类型和编码方式,从而确定可用编码器。
编码端110检测编码能力后,生成用于标识可用的编码器的编码能力信息,并将该编码能力信息发送至服务器120。服务器120可以确定解码端130的可用解码器,根据编码端110的可用编码器和解码端130的可用解码器,确定出目标编码器,并通知编码端110切换编码器。由于服务器120确定目标编码器的详细过程已经在上述实施例中有说明,在此不再赘述。
编码端110可以根据服务器120的通知,从初始编码器切换至目标编码器,并应用目标编码器对屏幕内容进行编码操作。
上述的编码器切换方法,编码端检测自身的可用编码器,并向服务器上报,供服务器通过根据编码端的可用编码器与解码端的可用解码器确定目标编码器,并根据服务器的通知切换至目标编码器,从而,编码端可用利用与解码端的可用解码器匹配的、且编码效率更高的编码器,以执行编码操作,提升了编码端的编码效率。
而且,编码端切换至编码效率更优的编码器,编码效率提高,从而降低了码率,通过网络传输的数据量则较小,在屏幕分享时节省了网络带宽,可以有效降低由于网络卡顿、延迟等因素对屏幕分享时效性的影响。
在另一个实施例中,初始编码器和可用编码器均具有编码方式,编码器切换方法还包括:
检测所述编码端的运行状况,和/或,检测所述编码端的运行场景;当所述初始编码器的编码方式不适配所述运行状况和/或所述运行场景,生成切换请求;所述切换请求记录有适配编码方式;所述适配编码方式适配于所述运行状况和/或所述运行场景;发送所述切换请求至所述服务器,以供所述服务器将所述编码方式符合所述适配编码方式的可用编码器确定为所述目标编码器。
具体实现中,码端110可以检测自身CPU利用率,电池电量、编码速度、内存使用率等的运行状况。然后,编码端110判断检测的运行状况是否适配于初始编码器的编码方式。当检测的运行状况不适配于初始编码器的编码方式,则确定与检测的运行状况适配的编码方式,作为适配编码方式。编码端110还可以检测自身的运行场景。然后,编码端110判断检测的运行场景是否适配于初始编码器的编码方式。当检测的运行场景不适配于初始编码器的编码方式,则确定与检测的运行场景适配的编码方式,作为适配编码方式。
编码端110可用生成记录适配编码方式的切换请求,发送该切换请求至服务器120。服务器120接收到编码端110的切换请求之后,可以结合切换请求所记录的适配编码方式,确定目标编码器。由于服务器120结合适配编码方式确定目标编码器的详细过程已经在上述实施例中有说明,在此不再赘述。
上述的编码器切换方法,通过根据编码端的运行状况和/或运行场景确定适配编码方式,以供编码端切换至编码方式适配于当前的运行状况和/或运行场景的编码器进行编码器,在提升编码端的编码效率的同时,使得编码方式适配于运行状况和/或运行场景。
在另一个实施例中,运行状况包括CPU利用率,编码器切换方法还包括:
当所述CPU利用率高于预设的利用率阈值、且初始编码器的编码方式为软件编码方式,判定初始编码器的编码方式不适配运行状况,并确定适配编码方式为硬件编码方式;
当所述CPU利用率低于所述利用率阈值、且所述初始编码器的编码方式为所述硬件编码方式,判定所述初始编码器的编码方式不适配所述运行状况,并确定所述适配编码方式为所述软件编码方式。
其中,CPU利用率可用为当前所利用的CPU资源与CPU可用资源的比值。
具体实现中,编码端110的初始编码器的编码方式为软件编码方式,编码端110可以实时检测自身的CPU利用率,当CPU利用率高于设定的利用率阈值,则判定初始编码器的软件编码方式不适配于当前的CPU利用率,确定硬件编码方式为适配于当前的运行状况的适配编码方式。
编码端110的初始编码器的编码方式为硬件编码方式,编码端110可以实时检测自身的CPU利用率,当CPU利用率低于设定的利用率阈值,则判定初始编码器的硬件编码方式不适配于当前的CPU利用率,确定软件编码方式为适配于当前的运行状况的适配编码方式。
实际应用中,可以检测连续N1秒的CPU利用率,判断连续N1秒的CPU利用率于是否高于设定的利用率阈值,基于连续N1秒的CPU利用率作为判断依据,可以更准确地判断当前的运行状况是否适配于编码方式。
上述的编码器切换方法,当检测到CPU利用率较高的运行状况时,可以切换至硬件编码方式的编码器,避免画面卡顿、延时等的情况,满足屏幕分享场景对实时性的要求。当编码端处于CPU利用率较低的运行状况,则可以切换至软件编码方式的编码器,可以在避免画面卡顿、延时的同时,提高编码质量。
在另一个实施例中,运行状况包括电池电量,编码器切换方法还包括:
当所述电池电量低于预设的电量阈值时、且所述初始编码器的编码方式为软件编码方式,判定所述初始编码器的编码方式不适配所述运行状况,并确定所述适配编码方式为硬件编码方式;
当所述电池电量高于所述电量阈值时、且所述初始编码器的编码方式为所述硬件编码方式,判定所述初始编码器的编码方式不适配所述运行状况,并确定所述适配编码方式为所述软件编码方式。
具体实现中,编码端110的初始编码器的编码方式为软件编码方式,编码端110可以实时检测自身的电池电量,当电池电量低于设定的电量阈值,则判定初始编码器的软件编码方式不适配于当前的电池电量,确定硬件编码方式为适配于当前的运行状况的适配编码方式。
编码端110的初始编码器的编码方式为硬件编码方式,编码端110可以实时检测自身的电池电量,当电池电量高于设定的电量阈值,则判定初始编码器的硬件编码方式不适配于当前的电池电量,确定软件编码方式为适配于当前的运行状况的适配编码方式。
上述的编码器切换方法,当检测到电池电量较高的运行状况时,可以切换至硬件编码方式的编码器,避免画面卡顿、延时等的情况,满足屏幕分享场景对实时性的要求。当编码端处于电池电量较低的运行状况,则可以切换至软件编码方式的编码器,可以在避免画面卡顿、延时的同时,提高编码质量。
在另一个实施例中,运行状况包括编码速度,编码器切换方法还包括:
当所述编码速度低于预设的速度阈值、且所述初始编码器的编码方式为软件编码方式,判定所述初始编码器的编码方式不适配所述运行状况,并确定所述适配编码方式为硬件编码方式;
当所述编码速度高于所述速度阈值、且所述初始编码器的编码方式为所述硬件编码方式,判定所述初始编码器的编码方式不适配所述运行状况,并确定所述适配编码方式为所述软件编码方式。
具体实现中,编码端110的初始编码器的编码方式为软件编码方式,编码端110可以实时检测自身的编码速度,当编码速度低于设定的速度阈值,则判定初始编码器的软件编码方式不适配于当前的编码速度,确定硬件编码方式为适配于当前的运行状况的适配编码方式。
编码端110的初始编码器的编码方式为硬件编码方式,编码端110可以实时检测自身的编码速度,当编码速度高于设定的速度阈值,则判定初始编码器的硬件编码方式不适配于当前的编码速度,确定软件编码方式为适配于当前的运行状况的适配编码方式。
实际应用中,可以根据对连续N2帧的数据进行编码的编码时间,计算得到编码速度,判断编码速度是否低于m/FPS,其中,m可以为根据经验值设定的缩放因子,FPS可以为当前编码的帧率。
上述的编码器切换方法,当检测到电池电量较高的运行状况时,可以切换至硬件编码方式的编码器,避免画面卡顿、延时等的情况,满足屏幕分享场景对实时性的要求。当编码端处于电池电量较低的运行状况,则可以切换至软件编码方式的编码器,可以在避免画面卡顿、延时的同时,提高编码质量。
在一个实施例中,检测编码端的运行场景,具体包括:
计算编码端的图像变化度;
当图像变化度大于预设的变化度阈值,则确定运行场景为复杂场景;
当图像变化度小于变化度阈值,则确定运行场景为简单场景;
上述的编码器切换方法,还包括:
当运行场景为复杂场景、且初始编码器的编码方式为软件编码方式,判定初始编码器的编码方式不适配运行场景,并确定适配编码方式为硬件编码方式;
当运行场景为简单场景、且初始编码器的编码方式为硬件编码方式,判定初始编码器的编码方式不适配运行场景,并确定适配编码方式为软件编码方式
其中,图像变化度可以为连续多帧图像的特定图像特征发生变化的程度。例如,图像变化度可以为前后两帧图像之间在图像灰度值上发生变化的程度。
其中,复杂场景可以为图像变化度较大的场景。例如,视频播放场景。
其中,简单场景可以为图像变化度较小的场景。例如,文档演示场景、幻灯片播放场景。
具体实现中,编码端110可以计算图像变化度。例如,可以对当前图像帧的图像灰度值于上一帧图像帧的图像灰度值计算特征差异,将特征差异作为图像变化度。
然后,编码端110可以将计算出的图像变化度与预设的变化度阈值进行比较。当图像变化度大于预设的变化度阈值,则确定运行场景为复杂场景;当图像变化度小于变化度阈值,则确定运行场景为简单场景。
编码端110的初始编码器的编码方式为软件编码方式,编码端110的运行场景为复杂场景,则判定初始编码器的软件编码方式不适配于当前的运行场景,确定硬件编码方式为适配于当前的运行场景的适配编码方式。
编码端110的初始编码器的编码方式为硬件编码方式,编码端110的运行场景为简单场景,则判定初始编码器的软件编码方式不适配于当前的运行场景,确定软件编码方式为适配于当前的运行场景的适配编码方式。
上述的编码器切换方法,当检测到复杂场景时,可以切换至硬件编码方式的编码器,避免画面卡顿、延时等的情况,满足屏幕分享场景对实时性的要求。当检测到简单场景时,则可以切换至软件编码方式的编码器,可以在避免画面卡顿、延时的同时,提高编码质量。
在一个实施例中,计算编码端的图像变化度,具体包括:
获取待编码的连续图像帧;获取连续图像帧的图像特征;图像特征包括图像灰度值和图像像素值;统计连续图像帧的图像特征之间的特征差异,得到图像变化度。
其中,连续图像帧可以为编码端110待编码的至少两张的图像帧。
其中,图像特征可以为图像帧的图像灰度值、图像像素值等的特征。
具体实现中,编码端110可以对当前待编码的连续帧图像帧提取图像特征。例如,提取第N帧图像帧和第N+1帧图像帧的灰度值。
然后,统计连续图像帧在图像特征之间的特征差异,作为图像变化度。例如,统计第N帧图像帧和第N+1帧图像帧的灰度值差异,作为图像变化度。
具体实现中,还可以提取当前待编码的连续帧图像帧的图像像素值,统计连续图像帧在图像像素值之间的特征差异,作为图像变化度。
需要说明的是,当连续的多帧图像在图像灰度值、图像像素值等图像特征发生的变化较大,表明编码端110在播放视频,编码端110的运行场景为复杂场景。当连续的多帧图像在图像特征发生的变化较小,表明编码端110在文档演示或者在播放幻灯片,编码端110的运行场景为简单场景。
上述的编码器切换方法,根据连续图像帧的图像灰度值、图像像素值的特征差异计算图像变化度,从而可以更准确地判断编码端的运行场景是简单场景还是复杂场景。
如图6所示,在一个实施例中,提供了一种解码器切换方法,本实施例主要以该方法应用于上述图1中的解码端130来举例说明。参照图6,解码端130应用初始解码器执行解码操作,该解码器切换方法具体包括如下步骤:
S602,检测解码端的可用解码器。
S604,上报可用解码器至服务器;服务器用于确定编码端的可用编码器;编码端应用初始编码器执行编码操作;服务器还用于确定目标编码器,并通知编码端从初始编码器切换至目标编码器;目标编码器为与可用解码器匹配的、且编码效率高于初始编码器的可用编码器。
具体实现中,解码端130在接入服务器120之后,可以检测解码能力,即,检测本地所具有的可用的解码器。例如,解码端130可以检测自身各个解码器的解码类型,从而确定可用解码器。
解码端130检测解码能力后,生成用于标识可用的解码器的解码能力信息,并将该解码能力信息发送至服务器120。服务器120可以确定编码端110的可用编码器,根据编码端110的可用编码器和解码端130的可用解码器,确定出目标编码器,并通知编码端110从初始编码器切换至目标编码器。由于服务器120确定目标编码器的详细过程已经在上述实施例中有说明,在此不再赘述。
S606,接收服务器的已编码数据;已编码数据为所述编码端应用目标编码器执行编码操作得到的数据;服务器用于将编码端的已编码数据转发至解码端。
其中,已编码数据为经编码端110对屏幕内容执行编码操作后得到的数据。
具体实现中,编码端110应用目标编码器对视频数据格式的屏幕内容执行编码操作,得到编码后的已编码数据,并发送该已编码数据至服务器120。服务器120在接收到已编码数据后,转发至解码端130。由此,解码端130接收到服务器120的已编码数据。
S608,根据已编码数据,确定目标解码器;目标解码器与目标编码器匹配。
具体实现中,解码端130根据已编码数据,确定对已编码数据进行编码所使用的目标编码器,并在可用解码器中,确定与目标编码器相匹配的可用解码器,作为目标解码器。
S610,从所述初始解码器切换至所述目标解码器,以应用所述目标解码器对所述已编码数据执行解码操作。
具体实现中,解码端130应用目标解码器对已编码数据执行解码操作,得到解码后的数据,即视频数据格式的屏幕内容。解码端130可以向用户进行展示解码后的屏幕内容,从而解码端130分享了编码端110的屏幕内容。
上述的解码器切换方法,解码端检测自身的可用解码器,并向服务器上报,供服务器通过根据编码端的可用编码器与解码端的可用解码器确定目标编码器,并根据服务器的通知切换至目标编码器,从而,编码端可用利用与解码端的可用解码器匹配的、且编码效率更高的编码器,以执行编码操作,提升了编码端的编码效率。
而且,编码端切换至编码效率更优的编码器,编码效率提高,从而降低了码率,通过网络传输的数据量则较小,在屏幕分享时节省了网络带宽,可以有效降低由于网络卡顿、延迟等因素对屏幕分享时效性的影响。
在另一个实施例中,上述的步骤S608,具体包括:
提取已编码数据的帧头信息;从帧头信息中提取已编码数据的编码类型;当已编码数据的编码类型与初始解码器的解码类型不符合,确定解码类型与已编码数据的编码类型符合的可用解码器,作为目标解码器。
其中,帧头信息可以为按照特定协议形成的数据帧序列头部的信息。一帧数据帧通常由帧头信息和数据信息组成。帧头信息可以记录编码类型等的信息。
具体实现中,解码端130可以查询当前是否存在待解码的已编码数据,当存在待解码的已编码数据,则从已编码数据提取出帧头信息,并从帧头信息中提取已编码数据的编码类型。然后,判断初始解码器的解码类型与已编码数据的编码类型是否符合,若符合,则表明编码端110的编码器已经发生改变,需要相应切换编码器。解码端130确定解码类型与已编码数据的编码类型符合的可用解码器,作为目标解码器。
如图7所示,在一个实施例中,提供了一种编码器切换方法,本实施例主要以该方法应用于上述图1中的编码端110来举例说明,编码端110应用初始编码器执行编码操作,初始编码器具有编码方式。参照图7,上述的编码器切换包括以下步骤:
S702,检测编码端的可用编码器,并上报可用编码器至服务器;服务器用于确定解码端的可用解码器。
具体实现中,编码端110在接入服务器120之后,可以检测编码能力,即,检测本地所具有的可用的编码器。例如,编码端110可以检测自身各个编码器的编码类型和编码方式,从而确定可用编码器。
编码端110检测编码能力后,生成用于标识可用的编码器的编码能力信息,并将该编码能力信息发送至服务器120。
此外,服务器120可以通过解码端130上报的方式确定解码端130的可用解码器。具体地,解码端130在接入服务器120之后,可以检测解码能力,即,检测本地所具有的可用的解码器。例如,解码端130可以检测自身各个解码器的解码类型,从而确定可用解码器。
S704,检测编码端的运行信息,当初始编码器的编码方式不适配运行信息,生成切换请求;切换请求记录有适配编码方式;适配编码方式适配于运行信息;运行信息包括运行状况和/或运行场景。
具体实现中,编码端110可以检测自身CPU利用率,电池电量、编码速度、内存使用率等的运行状况。然后,编码端110判断检测的运行状况是否适配于初始编码器的编码方式。当检测的运行状况不适配于初始编码器的编码方式,则确定与检测的运行状况适配的编码方式,作为适配编码方式。
编码端110还可以检测自身的运行场景。然后,编码端110判断检测的运行场景是否适配于初始编码器的编码方式。当检测的运行场景不适配于初始编码器的编码方式,则确定与检测的运行场景适配的编码方式,作为适配编码方式。
编码端110可用生成记录适配编码方式的切换请求,发送该切换请求至服务器120。
S706,发送切换请求至所述服务器,以供服务器响应于切换请求确定目标编码器,并通知编码端切换至目标编码器;目标编码器为与可用解码器匹配的、编码方式符合适配编码方式的、且编码效率高于初始编码器的可用编码器。
具体实现中,服务器120接收到编码端110的切换请求之后,可以结合切换请求所记录的适配编码方式,确定目标编码器。由于服务器120结合适配编码方式确定目标编码器的详细过程已经在上述实施例中有说明,在此不再赘述。
S708,从初始编码器切换至目标编码器,以应用目标编码器执行编码操作。
具体实现中,编码端110可以根据服务器120的通知,从初始编码器切换至目标编码器,并应用目标编码器对屏幕内容进行编码操作。
上述的编码器切换方法,编码端检测自身的可用编码器,并向服务器上报,当编码端检测到初始编码器的编码方式不适配于当前的运行状况和/或运行场景时,编码端生成切换请求并发送至服务器,服务器根据编码端的可用编码器、解码端的可用解码器和编码端所请求的适配编码方式,确定出适配于编码端的运行状况和/或运行场景、且编码效率更优的目标编码器,编码端根据服务器的通知从初始编码器切换至目标编码器,从而可以利用与解码端的可用解码器匹配的、编码效率更高的编码器,在提升了编码端的编码效率的同时,还可以使得编码器的编码方式适配于编码端运行状况和/或运行场景。
而且,当从软件编码方式切换至适配于编码端运行状况和/或运行场景的硬件编码方式时,则可以避免画面卡顿、延时等的情况,满足屏幕分享场景对实时性的要求。当从硬件编码方式切换至适配于编码端运行状况和/或运行场景的软件编码方式时,则可以在避免画面卡顿、延时的同时,提高编码质量。
如图8所示,在一个实施例中,提供了一种屏幕分享方法,应用于发送端,发送端用于将屏幕内容分享至接收端,发送端应用初始编码器对屏幕内容执行编码操作,上述的屏幕分享方法,具体包括以下步骤:
S802,检测发送端的可用编码器。
S804,上报可用编码器至服务器;服务器用于确定接收端的可用解码器;服务器还用于确定目标编码器,并通知发送端切换至目标编码器;目标编码器为与可用解码器匹配的、且编码效率高于初始编码器的可用编码器。
S806,从初始编码器切换至目标编码器。
S808,应用目标编码器对所述屏幕内容执行编码操作,得到已编码数据。
S810,发送已编码数据至所述服务器,以供服务器将所述已编码数据发送至接收端,接收端应用目标解码器对已编码数据执行解码操作,得到屏幕内容;目标解码器与目标编码器匹配。
需要首先说明的是,在屏幕分享场景中,发送端可以用于进行视频播放、幻灯片播放、文档演示等操作,并在发送端的屏幕上显示相应的内容。发送端可以用于对屏幕进行采集屏幕内容,得到视频数据格式的屏幕内容。发送端可以应用编码器对该屏幕内容执行编码操作,将编码后的数据发送至服务器。服务器可以用于接收编码端发送的数据,并转发至接收端。接收端可以用于接收服务器的数据,并应用解码器对数据执行解码操作,得到视频数据格式的屏幕内容,并在接收端的屏幕上显示屏幕内容。
具体实现中,发送端进入屏幕分享房间之后,即在接入服务器之后,可以检测编码能力,即,检测本地所具有的可用的编码器。
发送端检测编码能力后,生成用于标识可用的编码器的编码能力信息,并将该编码能力信息发送至服务器。
服务器可以确定接收端的可用解码器,根据发送端的可用编码器和接收端的可用解码器,确定出目标编码器,并通知发送端切换编码器。由于服务器确定目标编码器的详细过程已经在上述实施例中有说明,在此不再赘述。
服务器可以根据所确定的目标编码器,生成编码参数,将编码参数下发至发送端。
发送端接收到编码参数之后,可以确定目标编码器,并从初始编码器切换至目标编码器,应用目标编码器,对视频数据格式的屏幕内容执行编码操作,得到已编码数据,并发送已编码数据至服务器。服务器在接收到已编码数据后,转发至接收端,接收端根据已编码数据确定相应的目标解码器,并应用目标解码器对数据执行解码操作,得到解码后的数据,即视频数据格式的屏幕内容。
接收端可以向用户进行展示解码后的屏幕内容,从而接收端分享了发送端的屏幕内容。
上述的屏幕分享方法,发送端检测自身的可用编码器,并向服务器上报,供服务器通过根据发送端的可用编码器与接收端的可用解码器确定目标编码器,并根据服务器的通知切换至目标编码器,从而,发送端可用利用与接收端的可用解码器匹配的、且编码效率更高的编码器,以执行编码操作,提升了编码效率,在进行屏幕分享时,由于编码效率提高,从而降低了码率,通过网络传输的数据量则较小,在屏幕分享时节省了网络带宽,可以有效降低由于网络卡顿、延迟等因素对屏幕分享时效性的影响。
如图9所示,在一个实施例中,提供了一种屏幕分享系统900,该屏幕分享系统,可以具体包括发送端910、服务器920和接收端930;其中:
发送端910用于将屏幕内容分享至接收端930,发送端910应用初始编码器对屏幕内容执行编码操作;接收端930应用初始解码器执行解码操作;
发送端910,用于检测可用编码器,并上报可用编码器至服务器920;
接收端930,用于检测可用解码器,并上报可用解码器至服务器920;
服务器920,用于确定目标编码器,并通知发送端910从初始编码器切换至目标编码器;目标编码器为与可用解码器匹配的、且编码效率高于初始编码器的可用编码器;
发送端910,还用于从初始编码器切换至目标编码器,应用目标编码器对屏幕内容执行编码操作,得到已编码数据,并发送已编码数据至服务器920;
服务器920,还用于将已编码数据发送至接收端930;
接收端930,还用于从初始解码器切换至目标解码器,应用目标解码器对已编码数据执行解码操作,得到屏幕内容;目标解码器与目标编码器匹配。
为了便于本领域技术人员理解本实施例,以下将结合附图的具体示例进行说明。
在图9的基础上,图10A示出了一种屏幕分享场景的示意图。参考图10A,发送端910进行视频播放、幻灯片播放、文档演示等操作,发送端910的屏幕上显示有视频、幻灯片或文档等的屏幕内容。发送端910可以将屏幕内容进行采集屏幕内容,得到视频数据格式的屏幕内容,发送端910可以应用编码器对该屏幕内容执行编码操作,将编码后的数据发送至服务器920。服务器920可以将数据转发至接收端930。接收端930应用解码器对数据执行解码操作,得到视频数据格式的屏幕内容,并在接收端930的屏幕上显示屏幕内容,从而,通过服务器920,发送端910将屏幕内容实时分享至接收端930。
需要说明的是,屏幕分享技术也称为无线投屏,实现屏幕分享的应用通常称为无线投屏应用。发送端910上可以安装有无线投屏应用,在需要进行屏幕分享时,用户可以启动无线投屏应用。在图10A的基础上,图10B示出了一种无线投屏应用的界面示意图。无线投屏应用启动之后,弹出无线投屏应用的主界面,当用户点击“开始投屏”的虚拟按钮之后,发送端910则开始采集发送端910的显示屏上的屏幕内容,并对采集的屏幕内容进行编码和发送。
在图10A和图10B的基础上,图10C示出了一种具体的屏幕分享场景的示意图。如图10C所示,发送端910显示屏上所显示的屏幕内容,可以在接收端930的显示屏上同步显示。
图11是一个屏幕分享场景中实时动态切换编码器的流程图。参考图11,发送端和接收端均接入了服务器,在接入了服务器之后,发送端检测编码能力,将检测到的可用编码器上报至服务器。同样地,在接入了服务器之后,接收端检测解码能力,将检测到的可用解码器上报至服务器。发送端与接收端之间开始进行屏幕分享,发送端应用初始编码器,对屏幕内容执行编码操作,将编码后的数据帧分享至接收端。
在屏幕分享的过程中,发送端可以实时检测自身的运行状况和运行场景。判断初始编码器的编码方式是否适配于当前的运行状况和运行场景,若是,则应用当前的编码器执行编码操作;若否,发送端向服务器上报切换请求。服务器根据发送端的可用编码器、接收端的可用解码器和发送端所请求的适配编码方式,确定出目标编码器,并下发编码参数至发送端,发送端根据编码参数切换至目标编码器,并应用目标编码器对屏幕内容执行编码操作。
接收端可以向服务器查询是否存在待解码的数据帧,若是,则判断数据帧的帧头是否发生改变,具体可以为判断当前的数据帧的编码类型与历史的数据帧的编码类型是否发生改变。若帧头未发生改变,则继续应用当前的解码器执行解码操作。若帧头发生改变,接收端相应切换至目标解码器,应用目标解码器对数据帧执行解码操作,得到屏幕内容并在接收端上展示。
图12是一个屏幕分享场景中实时动态切换编码器的时序图。在一个具体实施例中,切换编码器方法可以具体包括以下步骤:
步骤S1202,如图12所示,发送端在接入服务器之后检测可用编码器,接收端在接入服务器之后检测可用解码器。
步骤S1204,如图12所示,发送端上报可用编码器至服务器,接收端上报可用解码器至服务器。
步骤S1206,如图12所示,发送端在进行屏幕分享时检测运行状况和/或运行场景。
步骤S1208,如图12所示,发送端判断初始编码器的编码方式是否适配于检测到的运行状况和/或运行场景。
步骤S1210,如图12所示,发送端判定初始编码器的编码方式不适配于检测到的运行状况和/或运行场景,上报切换请求至服务器。
步骤S1212,如图12所示,服务器根据发送端的可用编码器、接收端的可用解码器和发送端所请求的适配编码方式,确定出目标编码器。
步骤S1214,如图12所示,服务器下发编码参数至发送端。
步骤S1216,如图12所示,发送端根据编码参数切换编码器。
步骤S1218,如图12所示,发送端应用切换后的编码器,对屏幕内容执行编码操作。
步骤S1220,如图12所示,发送端将编码后的数据帧发送至服务器。
步骤S1222,如图12所示,服务器将数据帧推送至接收端。
步骤S1224,如图12所示,接收端查询是否存在有待解码的数据帧。
步骤S1226,如图12所示,当查询到待解码的数据帧,接收端判断数据帧的帧头所记录的编码类型是否发生改变。
步骤S1228,如图12所示,当数据帧的帧头所记录的编码类型发生改变,接收端切换解码器。
步骤S1230,如图12所示,接收端应用切换后的解码器对数据帧执行解码操作,得到屏幕内容。
步骤S1232,如图12所示,接收端展示屏幕内容。
应该理解的是,虽然上述流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述流程图的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
如图13所示,在一个实施例中,提供了一种编码器切换装置1300,包括:
编码器确定模块1302,用于确定编码端中的可用编码器;所述编码端应用初始编码器执行编码操作;
解码器确定模块1304,用于确定解码端中的可用解码器;
目标确定模块1306,用于在所述可用编码器中,将与所述可用解码器匹配的、且编码效率高于所述初始编码器的可用编码器,作为目标编码器;
通知模块1308,用于通知所述编码端从所述初始编码器切换至所述目标编码器。
在一个实施例中,所述可用编码器具有编码类型,所述可用解码器具有解码类型,所述目标确定模块1306,具体用于:将所述编码类型与所述可用解码器的解码类型匹配的可用编码器,作为类型匹配编码器;将所述编码效率高于所述初始编码器的类型匹配编码器,作为高效编码器;根据所述高效编码器,确定所述目标编码器。
在一个实施例中,所述可用编码器具有编码方式;编码器切换装置1300还包括:
请求接收模块,接收所述编码端的切换请求;所述切换请求记录有所述编码端的适配编码方式;所述适配编码方式适配于所述编码端的运行状况和/或运行场景;
所述目标确定模块1306,还具体用于:将所述编码方式与所述适配编码方式符合的高效编码器,作为所述目标编码器。
在一个实施例中,通知模块1308,具体用于:生成编码参数;所述编码参数包括所述目标编码器的编码类型和编码方式;下发所述编码参数至所述编码端,以供所述编码端根据所述目标编码器的编码类型和编码方式,切换至所述目标编码器。
在一个实施例中,编码器切换装置1300还包括:
新接入编码端确定模块,用于确定新接入编码端的可用编码器;
第一更新模块,用于当所述新接入编码端的可用编码器不包含有所述目标编码器,更新所述目标编码器,得到更新编码器;所述更新编码器为与所述编码端的可用编码器匹配的、且与所述解码端的可用解码器匹配的、且与所述新接入编码端的可用编码器匹配的编码器;
所述通知模块1308,还具体用于:通知所述编码端从所述目标编码器切换至所述更新编码器,以及,通知所述新接入编码端切换至所述更新编码器。
在一个实施例中,编码器切换装置1300还包括:
新接入解码端确定模块,用于确定新接入解码端的可用解码器;
第二更新模块,用于当所述新接入解码端的可用解码器与所述目标编码器不匹配,更新所述目标编码器,得到更新编码器;所述更新编码器为与所述解码端的可用解码器匹配的、且与所述新接入解码端的可用解码器匹配的可用编码器;
所述通知模块1308,还具体用于:通知所述编码端从所述目标编码器切换至所述更新编码器。
上述的编码器切换装置,首先确定编码端中的可用编码器和解码端中的可用解码器,然后将与可用解码器匹配的、且编码效率高于初始编码器的可用编码器作为目标编码器,并通知编码端从初始编码器切换至目标编码器,供编码端应用目标编码器执行编码操作,从而,通过与编码端、解码端进行协商的方式,在编码端具有编码效率更高的编码器、且解码端具有相应的解码器的情况下,编码器可以充分利用所具有的编码器执行编码操作,提升了编码端的编码效率。
而且,编码端切换至编码效率更优的编码器,编码效率提高,从而降低了码率,通过网络传输的数据量则较小,在屏幕分享时节省了网络带宽,可以有效降低由于网络卡顿、延迟等因素对屏幕分享时效性的影响。
如图14所示,在一个实施例中,提供了一种编码器切换装置1400,应用于编码端,所述编码端应用初始编码器执行编码操作;所述装置编码器切换装置1400,包括:
检测模块1402,用于检测所述编码端的可用编码器;
上报模块1404,用于上报所述可用编码器至服务器;所述服务器用于确定解码端的可用解码器;所述服务器还用于确定目标编码器,并通知所述编码端切换至所述目标编码器;所述目标编码器为与所述可用解码器匹配的、且编码效率高于所述初始编码器的可用编码器;
切换模块1406,用于从所述初始编码器切换至所述目标编码器,以应用所述目标编码器执行编码操作。
在一个实施例中,所述初始编码器和所述可用编码器均具有编码方式,所述编码器切换装置1400,还包括:
编码端检测模块,用于检测所述编码端的运行状况,和/或,检测所述编码端的运行场景;
请求生成模块,用于当所述初始编码器的编码方式不适配所述运行状况和/或所述运行场景,生成切换请求;所述切换请求记录有适配编码方式;所述适配编码方式适配于所述运行状况和/或所述运行场景;
请求发送模块,用于发送所述切换请求至所述服务器,以供所述服务器将所述编码方式符合所述适配编码方式的可用编码器确定为所述目标编码器。
在一个实施例中,所述运行状况包括CPU利用率,所述编码器切换装置1400,还包括:
第一判定模块,用于当所述CPU利用率高于预设的利用率阈值、且所述初始编码器的编码方式为软件编码方式,判定所述初始编码器的编码方式不适配所述运行状况,并确定所述适配编码方式为硬件编码方式;当所述CPU利用率低于所述利用率阈值、且所述初始编码器的编码方式为所述硬件编码方式,判定所述初始编码器的编码方式不适配所述运行状况,并确定所述适配编码方式为所述软件编码方式。
在一个实施例中,所述运行状况包括电池电量,所述编码器切换装置1400,还包括:
第二判定模块,用于当所述电池电量低于预设的电量阈值时、且所述初始编码器的编码方式为软件编码方式,判定所述初始编码器的编码方式不适配所述运行状况,并确定所述适配编码方式为硬件编码方式;当所述电池电量高于所述电量阈值时、且所述初始编码器的编码方式为所述硬件编码方式,判定所述初始编码器的编码方式不适配所述运行状况,并确定所述适配编码方式为所述软件编码方式。
在一个实施例中,所述运行状况包括编码速度,所述编码器切换装置1400,还包括:
第三判定模块,用于当所述编码速度低于预设的速度阈值、且所述初始编码器的编码方式为软件编码方式,判定所述初始编码器的编码方式不适配所述运行状况,并确定所述适配编码方式为硬件编码方式;当所述编码速度高于所述速度阈值、且所述初始编码器的编码方式为所述硬件编码方式,判定所述初始编码器的编码方式不适配所述运行状况,并确定所述适配编码方式为所述软件编码方式。
在一个实施例中,所述检测模块1402,具体用于:计算所述编码端的图像变化度;当所述图像变化度大于预设的变化度阈值,则确定所述运行场景为复杂场景;当所述图像变化度小于所述变化度阈值,则确定所述运行场景为简单场景;
所述编码器切换装置1400,还包括:
第四判定模块,用于当所述运行场景为所述复杂场景、且所述初始编码器的编码方式为软件编码方式,判定所述初始编码器的编码方式不适配所述运行场景,并确定所述适配编码方式为硬件编码方式;当所述运行场景为所述简单场景、且所述初始编码器的编码方式为所述硬件编码方式,判定所述初始编码器的编码方式不适配所述运行场景,并确定所述适配编码方式为所述软件编码方式。
在一个实施例中,所述检测模块1402,还具体用于:获取待编码的连续图像帧;获取所述连续图像帧的图像特征;所述图像特征包括图像灰度值和图像像素值;统计所述连续图像帧的图像特征之间的特征差异,得到所述图像变化度。
上述的编码器切换装置,通过根据编码端的运行状况和/或运行场景确定适配编码方式,以供编码端切换至编码方式适配于当前的运行状况和/或运行场景的编码器进行编码器,在提升编码端的编码效率的同时,使得编码方式适配于运行状况和/或运行场景。
如图15所示,在一个实施例中,提供了一种解码器切换装置1500,应用于解码端,所述解码端应用初始解码器执行解码操作,所述解码器切换装置1500,包括:
检测模块1502,用于检测所述解码端的可用解码器;
上报模块1504,用于上报所述可用解码器至服务器;所述服务器用于确定编码端的可用编码器;所述编码端应用初始编码器执行编码操作;所述服务器还用于确定目标编码器,并通知所述编码端从所述初始编码器切换至所述目标编码器;所述目标编码器为与所述可用解码器匹配的、且编码效率高于所述初始编码器的可用编码器;
接收模块1506,用于接收所述服务器的已编码数据;所述已编码数据为所述编码端应用所述目标编码器执行编码操作得到的数据;所述服务器用于将所述编码端的已编码数据转发至所述解码端;
解码器确定模块1508,用于根据所述已编码数据,确定目标解码器;所述目标解码器与所述目标编码器匹配;
切换模块1510,用于从所述初始解码器切换至所述目标解码器,以应用所述目标解码器执行解码操作。
在一个实施例中,所述解码器确定模块1508,具体用于:提取所述已编码数据的帧头信息;从所述帧头信息中提取所述已编码数据的编码类型;当所述已编码数据的编码类型与所述初始解码器的解码类型不符合,确定解码类型与所述已编码数据的编码类型符合的可用解码器,作为所述目标解码器。
上述的解码器切换方法,解码端检测自身的可用解码器,并向服务器上报,供服务器通过根据编码端的可用编码器与解码端的可用解码器确定目标编码器,并根据服务器的通知切换至目标编码器,从而,编码端可用利用与解码端的可用解码器匹配的、且编码效率更高的编码器,以执行编码操作,提升了编码端的编码效率。
如图16所示,在一个实施例中,提供了一种编码器切换装置1600,应用于编码端,所述编码端应用初始编码器执行编码操作,所述初始编码器具有编码方式;所述编码器切换装置1600,包括:
编码能力检测模块1602,用于检测所述编码端的可用编码器,并上报所述可用编码器至服务器;所述服务器用于确定解码端的可用解码器;
运行信息检测模块1604,用于检测所述编码端的运行信息,当所述初始编码器的编码方式不适配所述运行信息,生成切换请求;所述切换请求记录有适配编码方式;所述适配编码方式适配于所述运行信息;所述运行信息包括运行状况和/或运行场景;
请求发送模块1606,用于发送所述切换请求至所述服务器,以供所述服务器响应于所述切换请求确定目标编码器,并通知所述编码端切换至所述目标编码器;所述目标编码器为与所述可用解码器匹配的、所述编码方式符合所述适配编码方式的、且编码效率高于所述初始编码器的可用编码器;
切换模块1608,用于从所述初始编码器切换至所述目标编码器,以应用所述目标编码器执行编码操作。
上述的编码器切换装置,编码端检测自身的可用编码器,并向服务器上报,当编码端检测到初始编码器的编码方式不适配于当前的运行状况和/或运行场景时,编码端生成切换请求并发送至服务器,服务器根据编码端的可用编码器、解码端的可用解码器和编码端所请求的适配编码方式,确定出适配于编码端的运行状况和/或运行场景、且编码效率更优的目标编码器,编码端根据服务器的通知从初始编码器切换至目标编码器,从而可以利用与解码端的可用解码器匹配的、编码效率更高的编码器,在提升了编码端的编码效率的同时,还可以使得编码器的编码方式适配于编码端运行状况和/或运行场景。
而且,当从软件编码方式切换至适配于编码端运行状况和/或运行场景的硬件编码方式时,则可以避免画面卡顿、延时等的情况,满足屏幕分享场景对实时性的要求。当从硬件编码方式切换至适配于编码端运行状况和/或运行场景的软件编码方式时,则可以在避免画面卡顿、延时的同时,提高编码质量。
如图17所示,在一个实施例中,提供了一种屏幕分享装置1700,应用于发送端,所述发送端用于将屏幕内容分享至接收端,所述发送端应用初始编码器对所述屏幕内容执行编码操作,所述屏幕分享装置1700,包括:
检测模块1702,用于检测所述发送端的可用编码器;
上报模块1704,用于上报所述可用编码器至服务器;所述服务器用于确定接收端的可用解码器;所述服务器还用于确定目标编码器,并通知所述发送端切换至所述目标编码器;所述目标编码器为与所述可用解码器匹配的、且编码效率高于所述初始编码器的可用编码器;
切换模块1706,用于从所述初始编码器切换至所述目标编码器;
编码模块1708,用于应用所述目标编码器对所述屏幕内容执行编码操作,得到已编码数据;
发送模块1710,用于发送所述已编码数据至所述服务器,以供所述服务器将所述已编码数据发送至所述接收端,所述接收端应用目标解码器对所述已编码数据执行解码操作,得到所述屏幕内容;所述目标解码器与所述目标编码器匹配。
上述的屏幕分享装置,发送端检测自身的可用编码器,并向服务器上报,供服务器通过根据发送端的可用编码器与接收端的可用解码器确定目标编码器,并根据服务器的通知切换至目标编码器,从而,发送端可用利用与接收端的可用解码器匹配的、且编码效率更高的编码器,以执行编码操作,提升了编码效率,在进行屏幕分享时,由于编码效率提高,从而降低了码率,通过网络传输的数据量则较小,在屏幕分享时节省了网络带宽,可以有效降低由于网络卡顿、延迟等因素对屏幕分享时效性的影响。
图18示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的编码端110、服务器120或解码端130。如图18所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现相应的编码器切换、解码器切换或屏幕分享方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行编码器切换、解码器切换或屏幕分享方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图18中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的编码器切换、解码器切换或屏幕分享装置可以实现为一种计算机程序的形式,计算机程序可在如图18所示的计算机设备上运行。计算机设备的存储器中可存储组成该编码器切换、解码器切换或屏幕分享装置的各个程序模块,比如,图13所示的编码器确定模块1302、解码器确定模块1304、目标确定模块1306和通知模块1308。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的编码器切换方法中的步骤。
例如,图18所示的计算机设备可以通过如图13所示的编码器切换装置1300中的编码器确定模块1302执行步骤S202。计算机设备可通过解码器确定模块1304执行步骤S204。计算机设备可通过目标确定模块1306执行步骤S206。计算机设备可通过通知模块1308执行步骤S208。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述编码器切换、解码器切换或屏幕分享方法的步骤。此处编码器切换、解码器切换或屏幕分享方法的步骤可以是上述各个实施例的编码器切换、解码器切换或屏幕分享方法中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述编码器切换、解码器切换或屏幕分享方法的步骤。此处编码器切换、解码器切换或屏幕分享方法的步骤可以是上述各个实施例的编码器切换、解码器切换或屏幕分享方法中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (17)
1.一种编码器切换方法,其特征在于,应用于服务器,包括:
确定编码端中的多个可用编码器;所述编码端应用初始编码器执行编码操作;
确定解码端中的多个可用解码器;
所述编码端请求切换所述初始编码器时,在所述多个可用编码器中,将与任一可用解码器匹配的、且编码效率高于所述初始编码器的可用编码器,作为目标编码器;
通知所述编码端从所述初始编码器切换至所述目标编码器,以及将所述编码端应用所述目标编码器执行编码操作得到的已编码数据发送至所述解码端;其中,所述解码端,用于根据所述已编码数据,从应用初始解码器切换为应用目标解码器执行解码操作;所述目标解码器为所述多个可用解码器中与所述目标编码器相匹配的可用解码器。
2.根据权利要求1所述的方法,其特征在于,所述可用编码器具有编码类型,所述可用解码器具有解码类型,所述在所述多个可用编码器中,将与任一可用解码器匹配的、且编码效率高于所述初始编码器的可用编码器,作为目标编码器,包括:
将所述编码类型与所述可用解码器的解码类型匹配的可用编码器,作为类型匹配编码器;
将所述编码效率高于所述初始编码器的类型匹配编码器,作为高效编码器;
根据所述高效编码器,确定所述目标编码器。
3.根据权利要求2所述的方法,其特征在于,所述可用编码器具有编码方式;
所述方法还包括:
接收所述编码端的切换请求;所述切换请求记录有所述编码端的适配编码方式;所述适配编码方式适配于所述编码端的运行状况和/或运行场景;
所述根据所述高效编码器,确定所述目标编码器,包括:
将所述编码方式与所述适配编码方式符合的高效编码器,作为所述目标编码器。
4.一种编码器切换方法,其特征在于,应用于编码端,所述编码端应用初始编码器执行编码操作;所述方法包括:
检测所述编码端的多个可用编码器;
上报所述多个可用编码器至服务器;所述服务器用于确定解码端的多个可用解码器;所述服务器还用于所述编码端请求切换所述初始编码器时,确定目标编码器,并通知所述编码端切换至所述目标编码器;所述目标编码器为所述多个可用编码器中,与任一可用解码器匹配的、且编码效率高于所述初始编码器的可用编码器;
从所述初始编码器切换至所述目标编码器,以应用所述目标编码器执行编码操作得到已编码数据并发送至所述服务器;所述服务器,用于将所述已编码数据发送至所述解码端;所述解码端用于根据所述已编码数据,从应用初始解码器切换为应用目标解码器执行解码操作;所述目标解码器为所述多个可用解码器中与所述目标编码器相匹配的可用解码器。
5.一种解码器切换方法,其特征在于,应用于解码端,所述解码端应用初始解码器执行解码操作;所述方法包括:
检测所述解码端的多个可用解码器;
上报所述多个可用解码器至服务器;所述服务器用于确定编码端的多个可用编码器;所述编码端应用初始编码器执行编码操作;所述服务器还用于所述编码端请求切换所述初始编码器时,确定目标编码器,并通知所述编码端从所述初始编码器切换至所述目标编码器;所述目标编码器为所述多个可用编码器中,与任一可用解码器匹配的、且编码效率高于所述初始编码器的可用编码器;
接收所述服务器的已编码数据;所述已编码数据为所述编码端应用所述目标编码器执行编码操作得到的数据;所述服务器用于将所述编码端的已编码数据转发至所述解码端;
根据所述已编码数据,确定目标解码器;所述目标解码器为所述多个可用解码器中与所述目标编码器匹配的可用解码器;
从所述初始解码器切换至所述目标解码器,以应用所述目标解码器对所述已编码数据执行解码操作。
6.一种编码器切换方法,其特征在于,应用于编码端,所述编码端应用初始编码器执行编码操作,所述初始编码器具有编码方式;所述方法包括:
检测所述编码端的多个可用编码器,并上报所述多个可用编码器至服务器;所述服务器用于确定解码端的多个可用解码器;
检测所述编码端的运行信息,当所述初始编码器的编码方式不适配所述运行信息,生成切换请求;所述切换请求记录有适配编码方式;所述适配编码方式适配于所述运行信息;所述运行信息包括运行状况和/或运行场景;
发送所述切换请求至所述服务器,以供所述服务器响应于所述切换请求确定目标编码器,并通知所述编码端切换至所述目标编码器;所述目标编码器为所述多个可用编码器中,与任一可用解码器匹配的、所述编码方式符合所述适配编码方式的、且编码效率高于所述初始编码器的可用编码器;
从所述初始编码器切换至所述目标编码器,以应用所述目标编码器执行编码操作得到已编码数据并发送至所述服务器;所述服务器,用于将所述已编码数据发送至所述解码端;所述解码端用于根据所述已编码数据,从应用初始解码器切换为应用目标解码器执行解码操作;所述目标解码器为所述多个可用解码器中与所述目标编码器相匹配的可用解码器。
7.一种屏幕分享方法,其特征在于,应用于发送端,所述发送端用于将屏幕内容分享至接收端,所述发送端应用初始编码器对所述屏幕内容执行编码操作;所述方法包括:
检测所述发送端的多个可用编码器;
上报所述多个可用编码器至服务器;所述服务器用于确定接收端的多个可用解码器;所述服务器还用于所述发送端请求切换所述初始编码器时,确定目标编码器,并通知所述发送端切换至所述目标编码器;所述目标编码器为所述多个可用编码器中,与任一可用解码器匹配的、且编码效率高于所述初始编码器的可用编码器;
从所述初始编码器切换至所述目标编码器;
应用所述目标编码器对所述屏幕内容执行编码操作,得到已编码数据;
发送所述已编码数据至所述服务器,以供所述服务器将所述已编码数据发送至所述接收端;所述接收端,用于根据所述已编码数据,从应用初始解码器切换为应用目标解码器对所述已编码数据执行解码操作,得到所述屏幕内容;所述目标解码器为所述多个可用解码器中与所述目标编码器匹配的可用解码器。
8.一种屏幕分享系统,其特征在于,包括:
发送端、接收端和服务器;
所述发送端用于将屏幕内容分享至所述接收端,所述发送端应用初始编码器对所述屏幕内容执行编码操作;所述接收端应用初始解码器执行解码操作;
所述发送端,用于检测多个可用编码器,并上报所述多个可用编码器至所述服务器;
所述接收端,用于检测多个可用解码器,并上报所述多个可用解码器至所述服务器;
所述服务器,用于所述发送端请求切换所述初始编码器时,确定目标编码器,并通知所述发送端从所述初始编码器切换至所述目标编码器;所述目标编码器为所述多个可用编码器中,与任一可用解码器匹配的、且编码效率高于所述初始编码器的可用编码器;
所述发送端,还用于从所述初始编码器切换至所述目标编码器,应用所述目标编码器对所述屏幕内容执行编码操作,得到已编码数据,并发送所述已编码数据至所述服务器;
所述服务器,还用于将所述已编码数据发送至所述接收端;
所述接收端,还用于根据所述已编码数据,从所述初始解码器切换至目标解码器,应用所述目标解码器对所述已编码数据执行解码操作,得到所述屏幕内容;所述目标解码器所述多个可用解码器中与所述目标编码器匹配的可用解码器。
9.一种编码器切换装置,其特征在于,应用于服务器,包括:
编码器确定模块,用于确定编码端中的多个可用编码器;所述编码端应用初始编码器执行编码操作;
解码器确定模块,用于确定解码端中的多个可用解码器;
目标确定模块,用于所述编码端请求切换所述初始编码器时,在所述多个可用编码器中,将与任一可用解码器匹配的、且编码效率高于所述初始编码器的可用编码器,作为目标编码器;
通知模块,用于通知所述编码端从所述初始编码器切换至所述目标编码器,以及将所述编码端应用所述目标编码器执行编码操作得到的已编码数据发送至所述解码端;其中,所述解码端,用于根据所述已编码数据,从应用初始解码器切换为应用目标解码器执行解码操作;所述目标解码器为所述多个可用解码器中与所述目标编码器相匹配的可用解码器。
10.根据权利要求9所述的装置,其特征在于,所述可用编码器具有编码类型,所述可用解码器具有解码类型,所述目标确定模块,具体用于:将所述编码类型与所述可用解码器的解码类型匹配的可用编码器,作为类型匹配编码器;将所述编码效率高于所述初始编码器的类型匹配编码器,作为高效编码器;根据所述高效编码器,确定所述目标编码器。
11.根据权利要求10所述的装置,其特征在于,所述可用编码器具有编码方式;所述装置还包括:请求接收模块,接收所述编码端的切换请求;所述切换请求记录有所述编码端的适配编码方式;所述适配编码方式适配于所述编码端的运行状况和/或运行场景;所述目标确定模块,还具体用于:将所述编码方式与所述适配编码方式符合的高效编码器,作为所述目标编码器。
12.一种编码器切换装置,其特征在于,应用于编码端,所述编码端应用初始编码器执行编码操作;所述装置包括:
检测模块,用于检测所述编码端的多个可用编码器;
上报模块,用于上报所述多个可用编码器至服务器;所述服务器用于确定解码端的多个可用解码器;所述服务器还用于所述编码端请求切换所述初始编码器时,确定目标编码器,并通知所述编码端切换至所述目标编码器;所述目标编码器为所述多个可用编码器中,与任一可用解码器匹配的、且编码效率高于所述初始编码器的可用编码器;
切换模块,用于从所述初始编码器切换至所述目标编码器,以应用所述目标编码器执行编码操作得到已编码数据并发送至所述服务器;所述服务器,用于将所述已编码数据发送至所述解码端;所述解码端用于根据所述已编码数据,从应用初始解码器切换为应用目标解码器执行解码操作;所述目标解码器为所述多个可用解码器中与所述目标编码器相匹配的可用解码器。
13.一种解码器切换装置,其特征在于,应用于解码端,所述解码端应用初始解码器执行解码操作;所述装置包括:
检测模块,用于检测所述解码端的多个可用解码器;
上报模块,用于上报所述多个可用解码器至服务器;所述服务器用于确定编码端的多个可用编码器;所述编码端应用初始编码器执行编码操作;所述服务器还用于所述编码端请求切换所述初始编码器时,确定目标编码器,并通知所述编码端从所述初始编码器切换至所述目标编码器;所述目标编码器为所述多个可用编码器中,与任一可用解码器匹配的、且编码效率高于所述初始编码器的可用编码器;
接收模块,用于接收所述服务器的已编码数据;所述已编码数据为所述编码端应用所述目标编码器执行编码操作得到的数据;所述服务器用于将所述编码端的已编码数据转发至所述解码端;
解码器确定模块,用于根据所述已编码数据,确定目标解码器;所述目标解码器为所述多个可用解码器中与所述目标编码器匹配的可用解码器;
切换模块,用于从所述初始解码器切换至所述目标解码器,以应用所述目标解码器对所述已编码数据执行解码操作。
14.一种编码器切换装置,其特征在于,应用于编码端,所述编码端应用初始编码器执行编码操作,所述初始编码器具有编码方式;所述装置包括:
编码能力检测模块,用于检测所述编码端的多个可用编码器,并上报所述多个可用编码器至服务器;所述服务器用于确定解码端的多个可用解码器;
运行信息检测模块,用于检测所述编码端的运行信息,当所述初始编码器的编码方式不适配所述运行信息,生成切换请求;所述切换请求记录有适配编码方式;所述适配编码方式适配于所述运行信息;所述运行信息包括运行状况和/或运行场景;
请求发送模块,用于发送所述切换请求至所述服务器,以供所述服务器响应于所述切换请求确定目标编码器,并通知所述编码端切换至所述目标编码器;所述目标编码器为所述多个可用编码器中,与任一可用解码器匹配的、所述编码方式符合所述适配编码方式的、且编码效率高于所述初始编码器的可用编码器;
切换模块,用于从所述初始编码器切换至所述目标编码器,以应用所述目标编码器执行编码操作得到已编码数据并发送至所述服务器;所述服务器,用于将所述已编码数据发送至所述解码端;所述解码端用于根据所述已编码数据,从应用初始解码器切换为应用目标解码器执行解码操作;所述目标解码器为所述多个可用解码器中与所述目标编码器相匹配的可用解码器。
15.一种屏幕分享装置,其特征在于,应用于发送端,所述发送端用于将屏幕内容分享至接收端,所述发送端应用初始编码器对所述屏幕内容执行编码操作;所述装置包括:
检测模块,用于检测所述发送端的多个可用编码器;
上报模块,用于上报所述多个可用编码器至服务器;所述服务器用于确定接收端的可用解码器;所述服务器还用于所述发送端请求切换所述初始编码器时,确定目标编码器,并通知所述发送端切换至所述目标编码器;所述目标编码器为所述多个可用编码器中,与任一可用解码器匹配的、且编码效率高于所述初始编码器的可用编码器;
切换模块,用于从所述初始编码器切换至所述目标编码器;
编码模块,用于应用所述目标编码器对所述屏幕内容执行编码操作,得到已编码数据;
发送模块,用于发送所述已编码数据至所述服务器,以供所述服务器将所述已编码数据发送至所述接收端;所述接收端,用于根据所述已编码数据,从应用初始解码器切换为应用目标解码器对所述已编码数据执行解码操作,得到所述屏幕内容;所述目标解码器为多个可用解码器中与所述目标编码器匹配的可用解码器。
16.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述方法的步骤。
17.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910505999.8A CN110248192B (zh) | 2019-06-12 | 2019-06-12 | 编码器切换、解码器切换、屏幕分享方法和屏幕分享系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910505999.8A CN110248192B (zh) | 2019-06-12 | 2019-06-12 | 编码器切换、解码器切换、屏幕分享方法和屏幕分享系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110248192A CN110248192A (zh) | 2019-09-17 |
CN110248192B true CN110248192B (zh) | 2021-10-15 |
Family
ID=67886714
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910505999.8A Active CN110248192B (zh) | 2019-06-12 | 2019-06-12 | 编码器切换、解码器切换、屏幕分享方法和屏幕分享系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110248192B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112543165B (zh) * | 2019-09-20 | 2022-11-15 | 浙江宇视科技有限公司 | 一种解码方法、装置、设备和介质 |
CN111182303A (zh) * | 2019-10-08 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 共享屏幕的编码方法、装置、计算机可读介质及电子设备 |
CN110708564B (zh) * | 2019-10-21 | 2021-12-07 | 上海网达软件股份有限公司 | 一种动态切换视频流的直播转码方法及系统 |
CN111131817B (zh) * | 2019-12-31 | 2023-12-01 | 科大讯飞股份有限公司 | 屏幕共享方法、设备、存储介质及屏幕共享系统 |
CN112543374A (zh) * | 2020-11-30 | 2021-03-23 | 联想(北京)有限公司 | 一种转码控制方法、装置及电子设备 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102447906A (zh) * | 2010-12-13 | 2012-05-09 | 微软公司 | 低延时视频解码 |
CN102695052A (zh) * | 2011-03-23 | 2012-09-26 | 索尼公司 | 图像处理设备、图像处理方法和程序 |
CN104219590A (zh) * | 2013-06-05 | 2014-12-17 | 华为终端有限公司 | 一种切换编码方式的方法、发送端和接收端 |
CN104685886A (zh) * | 2012-06-29 | 2015-06-03 | 瑞典爱立信有限公司 | 用于视频处理的装置及其方法 |
CN104853209A (zh) * | 2014-02-16 | 2015-08-19 | 同济大学 | 图像编码、解码方法及装置 |
CN106165419A (zh) * | 2014-01-09 | 2016-11-23 | 高通股份有限公司 | 用于视频译码的自适应运动向量分辨率信令 |
JP2019022225A (ja) * | 2018-10-03 | 2019-02-07 | 株式会社ニコン | 画像圧縮装置およびプログラム |
CN109429068A (zh) * | 2017-09-01 | 2019-03-05 | 成都鼎桥通信技术有限公司 | 视频编解码业务处理方法和设备 |
CN109688410A (zh) * | 2017-10-18 | 2019-04-26 | 安讯士有限公司 | 以支持辅助帧的视频编码格式编码视频流的方法及编码器 |
-
2019
- 2019-06-12 CN CN201910505999.8A patent/CN110248192B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102447906A (zh) * | 2010-12-13 | 2012-05-09 | 微软公司 | 低延时视频解码 |
CN102695052A (zh) * | 2011-03-23 | 2012-09-26 | 索尼公司 | 图像处理设备、图像处理方法和程序 |
CN104685886A (zh) * | 2012-06-29 | 2015-06-03 | 瑞典爱立信有限公司 | 用于视频处理的装置及其方法 |
CN104219590A (zh) * | 2013-06-05 | 2014-12-17 | 华为终端有限公司 | 一种切换编码方式的方法、发送端和接收端 |
CN106165419A (zh) * | 2014-01-09 | 2016-11-23 | 高通股份有限公司 | 用于视频译码的自适应运动向量分辨率信令 |
CN104853209A (zh) * | 2014-02-16 | 2015-08-19 | 同济大学 | 图像编码、解码方法及装置 |
CN109429068A (zh) * | 2017-09-01 | 2019-03-05 | 成都鼎桥通信技术有限公司 | 视频编解码业务处理方法和设备 |
CN109688410A (zh) * | 2017-10-18 | 2019-04-26 | 安讯士有限公司 | 以支持辅助帧的视频编码格式编码视频流的方法及编码器 |
JP2019022225A (ja) * | 2018-10-03 | 2019-02-07 | 株式会社ニコン | 画像圧縮装置およびプログラム |
Also Published As
Publication number | Publication date |
---|---|
CN110248192A (zh) | 2019-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110248192B (zh) | 编码器切换、解码器切换、屏幕分享方法和屏幕分享系统 | |
US10827182B2 (en) | Video encoding processing method, computer device and storage medium | |
US12041264B2 (en) | Method and apparatus for video encoding and decoding | |
US11412229B2 (en) | Method and apparatus for video encoding and decoding | |
US11412228B2 (en) | Method and apparatus for video encoding and decoding | |
US9262986B2 (en) | Reference frame management for screen content video coding using hash or checksum functions | |
JP4900976B2 (ja) | 画像ストリーミング・システム内の圧縮レベルを切り換える方法、並びに、システム、サーバ、及びコンピュータ・プログラム | |
EP3813371B1 (en) | Video encoding/decoding method and apparatus, computer device, and storage medium | |
US8842159B2 (en) | Encoding processing for conferencing systems | |
WO2021057705A1 (zh) | 视频编解码方法和相关装置 | |
CN113794903A (zh) | 视频图像处理方法、装置及服务器 | |
US10536726B2 (en) | Pixel patch collection for prediction in video coding system | |
CN116866604A (zh) | 一种图像处理方法及装置 | |
CN116980662A (zh) | 流媒体播放方法、装置、电子设备、存储介质及程序产品 | |
Salmistraro et al. | A robust fusion method for multiview distributed video coding | |
CN111193926B (zh) | 编码数据处理方法、装置、计算机设备和存储介质 | |
US9451288B2 (en) | Inferred key frames for fast initiation of video coding sessions | |
CN112351282A (zh) | 图像数据的传输方法及装置、非易失性存储介质及处理器 | |
CN112055174A (zh) | 一种视频传输方法、装置及计算机可读存储介质 | |
US6678329B2 (en) | Client-assisted motion estimation for client-server video communication | |
CN115278308B (zh) | 媒体流处理方法、装置、设备及存储介质 | |
KR102323113B1 (ko) | 화질 개선 영상 기반의 원본 영상 저장장치 및 그를 위한 어플리케이션 | |
CN118555395A (zh) | 云游戏的数据处理方法、装置、设备、介质及产品 | |
CN118042139A (zh) | 数据传输方法、数据处理方法、装置及设备 | |
KR20150006465A (ko) | 비디오 스트림들의 비용-효율적이고 저-레이턴시 인코딩을 가능하게 하기 위한 메커니즘 |
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 |