CN116419023A - 一种跨设备采集屏幕图像的***和方法 - Google Patents

一种跨设备采集屏幕图像的***和方法 Download PDF

Info

Publication number
CN116419023A
CN116419023A CN202111679635.5A CN202111679635A CN116419023A CN 116419023 A CN116419023 A CN 116419023A CN 202111679635 A CN202111679635 A CN 202111679635A CN 116419023 A CN116419023 A CN 116419023A
Authority
CN
China
Prior art keywords
screen
camera
image
screen image
application
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111679635.5A
Other languages
English (en)
Inventor
孙伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202111679635.5A priority Critical patent/CN116419023A/zh
Priority to PCT/CN2022/139980 priority patent/WO2023125105A1/zh
Publication of CN116419023A publication Critical patent/CN116419023A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/4302Content synchronisation processes, e.g. decoder synchronisation
    • H04N21/4307Synchronising 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
    • H04N21/43076Synchronising 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 of the same content streams on multiple devices, e.g. when family members are watching the same movie on different devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1454Digital 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2187Live feed
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/414Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/414Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance
    • H04N21/41407Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance embedded in a portable device, e.g. video client on a mobile phone, PDA, laptop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/436Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
    • H04N21/4363Adapting the video stream to a specific local network, e.g. a Bluetooth® network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/436Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
    • H04N21/4363Adapting the video stream to a specific local network, e.g. a Bluetooth® network
    • H04N21/43637Adapting the video stream to a specific local network, e.g. a Bluetooth® network involving a wireless protocol, e.g. Bluetooth, RF or wireless LAN [IEEE 802.11]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/8547Content authoring involving timestamps for synchronizing content
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/222Studio circuitry; Studio devices; Studio equipment
    • H04N5/262Studio circuits, e.g. for mixing, switching-over, change of character of image, other special effects ; Cameras specially adapted for the electronic generation of special effects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/222Studio circuitry; Studio devices; Studio equipment
    • H04N5/262Studio circuits, e.g. for mixing, switching-over, change of character of image, other special effects ; Cameras specially adapted for the electronic generation of special effects
    • H04N5/2628Alteration of picture size, shape, position or orientation, e.g. zooming, rotation, rolling, perspective, translation

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Telephone Function (AREA)
  • User Interface Of Digital Computer (AREA)
  • Telephonic Communication Services (AREA)
  • Studio Devices (AREA)

Abstract

本申请提供一种跨设备采集屏幕图像的***和方法,涉及通信技术领域。该***包括第一设备和第二设备,第一设备安装有第一应用并设置有远端屏幕相机模块;第二设备设置有相机代理模块和屏幕采集模块;其中,第一应用在接收到第一用户操作之后,调用远端屏幕相机模块向相机代理模块发送第一工作指令;相机代理模块根据第一工作指令,通过屏幕采集模块获取第二设备的屏幕图像,并向远端屏幕相机模块发送屏幕图像;远端屏幕相机模块向第一应用发送屏幕图像。通过本申请实施例提供的技术方案,电子设备在进行跨设备屏幕图像采集时无需额外安装第三方流媒体应用,具有较好的用户体验。

Description

一种跨设备采集屏幕图像的***和方法
技术领域
本申请涉及通信技术领域,尤其涉及一种跨设备采集屏幕图像的***和方法。
背景技术
随着通信技术的发展,电子设备不仅能够直播拍摄到的图像,还能够直播屏幕图像。其中,直播屏幕图像包括直播本地屏幕图像(简称本地屏幕直播)和直播其他设备的屏幕图像(简称跨设备屏幕直播)。
在电子设备进行跨设备屏幕直播的过程中,例如在第一设备直播第二设备屏幕上的游戏画面的过程中,第一设备需要从第二设备处采集屏幕图像,并将屏幕图像推送给观看设备,以供观众观看。目前,第二设备在安装第三方流媒体应用之后,第一设备才能通过该流媒体应用控制第二设备采集本地的屏幕图像。可以理解,当第一设备需要通过不同的直播应用采集第二设备的屏幕图像时,第二设备就需要安装该多个直播应用分别对应的流媒体应用,不仅占用第二设备的内存,还导致用户体验不佳。
发明内容
本申请提供一种跨设备采集屏幕图像的***和方法,用于解决现有技术中电子设备进行跨设备屏幕图像采集时,需要额外安装第三方流媒体应用,用户体验不佳的问题。
为达到上述目的,本申请采用如下技术方案:
第一方面,本申请实施例提供一种跨设备采集屏幕图像的***,包括第一设备和第二设备,第一设备安装有第一应用并设置有远端屏幕相机模块;第二设备设置有相机代理模块和屏幕采集模块。其中,第一应用在接收到第一用户操作之后,调用远端屏幕相机模块向相机代理模块发送第一工作指令。相机代理模块根据第一工作指令,通过屏幕采集模块获取第二设备的屏幕图像,并向远端屏幕相机模块发送屏幕图像。远端屏幕相机模块向第一应用发送屏幕图像。
在本申请实施例提供的***中,远端屏幕相机和相机代理模块均是电子设备出厂时预设的,第二设备无需通过第三方流媒体应用即可在第一设备的控制下采集本地的屏幕图像,并将屏幕图像发送给第一设备,具有较好的用户体验。此外,针对软件开发者,其在开发例如直播应用的过程中,无需再配套开发对应的第三方流媒体应用,显著降低了软件开发的成本和复杂度。
在一些实施例中,远端屏幕相机模块向第一应用发送屏幕图像,包括:远端屏幕相机模块根据第一应用的相机流配置信息,对屏幕图像对应的屏幕数据流进行分流处理;远端屏幕相机模块将分流后的屏幕数据流发送给第一应用。
通过本申请实施例提供的***,第一设备可以根据第一应用的需求预先对屏幕数据流进行分类,能够减少第一应用后续对屏幕图像的处理流程。
在一些实施例中,相机流配置信息包括:屏幕图像的图像宽度与图像高度,和/或,图像的数据格式。
在一些实施例中,远端屏幕相机模块向第一应用发送屏幕图像,包括:远端屏幕相机模块对屏幕图像进行缩小或放大处理,获得缩放图像;远端屏幕相机模块将缩放图像发送给第一应用。通过本申请实施例提供的***,第一设备可以根据第一应用的需求预先对屏幕图像的尺寸进行处理,获取第一设备预期大小的屏幕图像,能够减少第一应用后续对屏幕图像的处理流程。
在一些实施例中,第一设备还设置有本地相机模块,第一应用在接收到第二用户操作之后,调用本地相机模块;本地相机模块通过摄像头采集拍摄图像,并向第一应用发送拍摄图像。需要说明的是,第一应用调用本地相机模块和远端屏幕相机模块时,所使用的接口可以是同一接口。
在一些实施例中,远端屏幕相机模块在接收到屏幕图像之后,根据屏幕图像的时延,以及第一设备完成首帧屏幕图像解包时第一设备的***时间,更新首帧屏幕图像的时间戳。
在一些实施例中,屏幕图像的时延包括:第二设备采集屏幕图像产生的时延;第二设备对屏幕图像进行数据打包产生的时延;屏幕图像从第二设备到第一设备的传输时延;第一设备对屏幕图像进行数据解包产生的时延。
在一些实施例中,远端屏幕相机模块在接收到屏幕图像之后,还根据首帧屏幕图像更新后的时间戳、第n帧屏幕图像在第二设备上的采集时间戳、首帧屏幕图像在第二设备上的采集时间戳,重新确定第n帧屏幕图像的时间戳,n为正整数,且n≠1。
通过更新屏幕图像(包括首帧屏幕图像和非首帧屏幕图像)的时间戳,可以缩小本地的拍摄图像和远端的屏幕图像之间,由于时钟***差异带来的时间戳差异。
在一些实施例中,第一设备还设置有相机服务,远端屏幕相机模块通过相机服务向第一应用发送屏幕图像,本地相机模块通过相机服务向第一应用发送拍摄图像。相机服务确定屏幕图像和拍摄图像抵达相机服务的时间差,以及先抵达相机服务的图像;以及,根据该时间差和先抵达相机服务的图像,向第一应用发送屏幕图像和拍摄图像。在本实施例中,相机服务可以将时间戳相同的图像一起发送给第一应用,第一应用在接收到屏幕图像和拍摄图像之后,可以直接对其进行图像合成等处理,无需再识别其时间戳。
在一些实施例中,相机服务根据该时间差和先抵达相机服务的图像,向第一应用发送屏幕图像和拍摄图像,包括:若拍摄图像先于屏幕图像抵达相机服务,则相机服务延迟该时间差后向第一应用发送拍摄图像;和/或,若屏幕图像先于拍摄图像抵达相机服务,则相机服务延迟该时间差后向第一应用发送屏幕图像。
在一些实施例中,屏幕图像和拍摄图像抵达相机服务的时间差为:第一时长与第二时长的差值。其中,第一时长为第二设备从采集到屏幕图像,到将屏幕图像发送到相机服务所用的时长;第二时长为本地相机模块从采集到拍摄图像,到将拍摄图像发送到相机服务所用的时长。
在一些实施例中,第一应用在接收到第三用户操作之后,调用远端屏幕相机模块向相机代理模块发送第三工作指令,其中,第三工作指令用于指示相机代理模块停止采集屏幕图像。
第二方面,本申请实施例提供一种跨设备采集屏幕图像的方法,应用于第一设备和第二设备,第一设备安装有第一应用并设置有远端屏幕相机模块;第二设备设置有相机代理模块和屏幕采集模块。其中,第一应用在接收到第一用户操作之后,调用远端屏幕相机模块向相机代理模块发送第一工作指令。相机代理模块根据第一工作指令,通过屏幕采集模块获取第二设备的屏幕图像,并向远端屏幕相机模块发送屏幕图像。远端屏幕相机模块向第一应用发送屏幕图像。
在一些实施例中,远端屏幕相机模块向第一应用发送屏幕图像,包括:远端屏幕相机模块根据第一应用的相机流配置信息,对屏幕图像对应的屏幕数据流进行分流处理;以及,将分流后的屏幕数据流发送给第一应用。
在一些实施例中,相机流配置信息包括:屏幕图像的图像宽度与图像高度,和/或,图像的数据格式。
在一些实施例中,远端屏幕相机模块向第一应用发送屏幕图像,包括:远端屏幕相机模块对屏幕图像进行缩小或放大处理,获得缩放图像;以及,将缩放图像发送给第一应用。
在一些实施例中,第一设备还设置有本地相机模块,该方法还包括:第一应用在接收到第二用户操作之后,调用本地相机模块;本地相机模块通过摄像头采集拍摄图像,并向第一应用发送拍摄图像。
在一些实施例中,该方法还包括:远端屏幕相机模块在接收到屏幕图像之后,根据屏幕图像的时延,以及第一设备完成首帧屏幕图像解包时第一设备的***时间,更新首帧屏幕图像的时间戳。
在一些实施例中,屏幕图像的时延包括:第二设备采集屏幕图像产生的时延;第二设备对屏幕图像进行数据打包产生的时延;屏幕图像从第二设备到第一设备的传输时延;第一设备对屏幕图像进行数据解包产生的时延。
在一些实施例中,该方法还包括:远端屏幕相机模块在接收到屏幕图像之后,还根据首帧屏幕图像更新后的时间戳、第n帧屏幕图像在第二设备上的采集时间戳、首帧屏幕图像在第二设备上的采集时间戳,重新确定第n帧屏幕图像的时间戳,n为正整数,且n≠1。
在一些实施例中,第一设备还设置有相机服务,远端屏幕相机模块通过相机服务向第一应用发送屏幕图像,本地相机模块通过相机服务向第一应用发送拍摄图像。
基于此,该方法还包括:相机服务确定屏幕图像和拍摄图像抵达相机服务的时间差,以及先抵达相机服务的图像;相机服务根据时间差和先抵达相机服务的图像,向第一应用发送屏幕图像和拍摄图像。
在一些实施例中,相机服务根据时间差和先抵达相机服务的图像,向第一应用发送屏幕图像和拍摄图像,包括:若拍摄图像先于屏幕图像抵达相机服务,则相机服务延迟该时间差后向第一应用发送拍摄图像。和/或,若屏幕图像先于拍摄图像抵达相机服务,则相机服务延迟该时间差后向第一应用发送屏幕图像。
在一些实施例中,屏幕图像和拍摄图像抵达相机服务的时间差为:第一时长与第二时长的差值。其中,第一时长为第二设备从采集到屏幕图像,到将屏幕图像发送到相机服务所用的时长;第二时长为本地相机模块从采集到拍摄图像,到将拍摄图像发送到相机服务所用的时长。
在一些实施例中,该方法还包括:第一应用在接收到第三用户操作之后,调用远端屏幕相机模块向相机代理模块发送第三工作指令,其中,第三工作指令用于指示相机代理模块停止采集屏幕图像。
可以理解的是,上述第二方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
图1是本申请实施例提供的一种跨屏直播***的结构示意图;
图2是本申请的一个实施例提供的屏幕图像采集过程示意图;
图3是本申请实施例提供的一种电子设备的结构示意图;
图4是本申请实施例提供的跨设备采集屏幕图像的***的软件结构示意图;
图5是本申请实施例提供的跨设备屏幕图像采集方法的流程图;
图6是本申请实施例提供的直播过程中用户对电子设备的控制示意图一;
图7是本申请实施例提供的多相机数据的采集流程图示意图;
图8是本申请实施例提供的直播过程中用户对电子设备的控制示意图二;
图9是本申请实施例提供的采集屏幕图像过程中的时延示意图;
图10是本申请实施例提供的跨设备采集屏幕图像的***对不同相机采集的数据流的处理示意图;
图11A是本申请实施例提供的合成图像的示意图一;
图11B是本申请实施例提供的合成图像的示意图二;
图12是本申请实施例提供的芯片的结构示意图。
具体实施方式
下面结合附图对本申请实施例提供的技术方案进行说明。
应理解,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
在本实施例中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
随着通信技术的发展,用户(如主播)可以通过电子设备直播分享周围发生的事情,例如商品销售过程、美食品鉴过程、娱乐过程(例如游戏过程)、教学过程等,涉及生活的各个方面。目前,直播的形式包括拍摄直播和屏幕直播。在拍摄直播的过程中,电子设备将本地相机应用或者其他电子设备的相机应用拍摄到的内容(例如商品销售过程、美食品鉴过程等)直播分享给观众。而在屏幕直播中,电子设备则是将本地屏幕或者其他电子设备的屏幕上显示的内容(例如游戏过程等)直播分享给观众。
需要说明的是,在本实施例中,电子设备可以是手机(mobile phone)、平板电脑(Pad)、带无线收发功能的电脑、智能电视、投影仪、可穿戴设备(如智能手表)、具备视频拍摄功能的设备、车载设备、增强现实(augmented reality,AR)/虚拟现实(virtualreality,VR)设备、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)等。本申请实施例对电子设备的类型不做具体限定。
本实施例将电子设备(如第一设备)直播其他电子设备(如第二设备)的屏幕图像的过程,称为跨设备屏幕直播,简称跨屏直播。
图1是本申请实施例提供的一种跨屏直播***的结构示意图,该***包括第一设备、第二设备、云端服务器和观看设备。在跨屏直播的过程中,第二设备用于显示屏幕图像,例如在直播游戏的过程中显示游戏画面,因此第二设备也可以称作是屏幕源设备。第一设备用于获取第二设备显示的屏幕图像,并在获取到屏幕图像之后,对屏幕图像进行加工处理形成直播视频流,将直播视频流推送给直播应用(application,App)对应的云端服务器,因此第一设备也可以称作是直播推流设备。其中,第二设备对屏幕图像的加工处理可以包括:给屏幕图像添加主播图像、主播声音、直播提示信息等。云端服务器用于向观看设备发送直播视频流。观看设备用于接收云端服务器推送的直播视频流,根据直播视频流显示直播图像,以供观众进行观看。
在跨屏直播的过程中,常用的屏幕图像采集技术是流媒体技术,即第一设备和第二设基于流媒体应用,实现跨设备屏幕图像采集。下面对其进行具体说明。
图2是本申请的一个实施例提供的屏幕图像采集过程示意图。参见图2所示,第一设备安装有直播应用,直播应用中通常包括第一流媒体应用和直播推流应用。第二设备安装有第二流媒体应用,例如“直播助手”,该第二流媒体应用通常需要由用户专门为第二设备安装。第一设备和第二设备在建立无线连接之后,通过第一流媒体应用和第二流媒体应用相互通信,从而获取第二设备的屏幕图像。例如,第一流媒体应用响应用户操作向第二设备发送采集指令。第二流媒体应用需要根据该采集指令控制第二设备采集屏幕图像,并将采集到的屏幕图像发送给第一流媒体应用。第一流媒体应用在接收到屏幕图像之后,将屏幕图像发送给直播推流应用。
基于上述描述可知,第二设备在安装第三方流媒体应用之后,第一设备才能通过该流媒体应用控制第二设备采集本地的屏幕图像。应理解,当第一设备需要通过不同的直播应用采集第二设备的屏幕图像时,第二设备就需要安装该多个直播应用分别对应的流媒体应用,不仅占用第二设备的内存,还导致用户体验不佳。例如,当第一设备需要通过直播应用1和直播应用2在不同时间段采集第二设备的屏幕图像,那么第二设备不仅需要针对直播应用1安装一个第三方流媒体应用1,还需要针对直播应用2安装一个第三方流媒体应用2,不仅占用第二设备的内存,还给用户带来极大的不便。
另外,对于软件开发者,其在开发直播应用时,还需要针对该直播应用开发特定的第三方流媒体应用,由于第三方流媒体应用不仅需要控制第二设备采集屏幕图像,还需要保证屏幕图像的快速与稳定传输等,软件开发成本较高。例如,软件开发者在开发直播应用1时,还需要开发第三方流媒体应用1。软件开发者在开发直播应用2时,还需要开发第三方流媒体应用2。
为此,本申请实施例提供一种跨设备采集屏幕图像的***,通过本实施例提供的技术方案,第二设备无需通过第三方的流媒体应用,即可根据第一设备的指令采集屏幕图像,并将屏幕图像发送给第一设备,具有较好的用户体验。另外,对于软件开发者,其在开发直播应用时,也无需再开发对应的第三方流媒体应用,降低了软件开发的复杂度。
图3是本申请实施例提供的一种电子设备的结构示意图。该电子设备可以包括处理器110,存储器120,通信模块130,音频模块140,摄像头150,输入模块160,显示屏170,电源模块180等。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器(Modem),图形处理器(graphicsprocessing unit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
存储器120用于存储软件程序以及模块,处理器110通过运行存储在存储器120的软件程序以及模块,从而执行电子设备的各种功能应用以及数据处理。存储器120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如屏幕图像采集功能、照片拍摄功能、视频拍摄功能、声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备在使用中所创建的数据(比如拍摄的照片、拍摄的视频、音频数据、电话本等)等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。存储器120可以是内部存储器也可以是外接存储器(例如Micro SD卡)。
通信模块130包括无线通信模块。无线通信模块可以提供应用在电子设备上的包括无线局域网(wireless local area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络、Wi-Fi直连(peer to peer,P2P),蓝牙(bluetooth,BT),近距离无线通信技术(near field communication,NFC)等无线通信的解决方案。该无线通信模块可以使用任意一个通信标准或协议,包括但不限于全球移动通讯***(global system of mobilecommunication,GSM)、通用分组无线服务(general packet radio service,GPRS)、码分多址(code division multiple access,CDMA)、宽带码分多址(wideband code divisionmultiple access,WCDMA)、长期演进(long term evolution,LTE))等。
在一些实施例中,例如当电子设备是手机时,通信模块130还包括移动通信模块。移动通信模块可以提供应用在电子设备上的包括2G/3G/4G/5G等无线通信的解决方案。
音频模块140用于实现音频采集、音频播放等功能。音频模块140能够将音频电信号转换为声音信号,例如收听音乐或者收听免提通话。也能够将声音信号转化为音频电信号,例如在用户拨打电话或发送语音信息时,采集用户的声音信号,并将其以音频电信号的形式存储或者发送。
摄像头150用于采集照片、视频等,电子设备可以包括一个或者多个摄像头150。这些摄像头150协同ISP,视频编解码器,GPU,显示屏170以及应用处理器等即可实现照片或视频拍摄功能。
输入模块160可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的信号输入。具体地,输入单元可包括触控面板以及其他输入设备。触控面板也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并根据预先设定的程式驱动相应的连接装置。除了触控面板,输入单元130还可以包括其他输入设备,包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示屏170用于显示图像,包括图片、视频、网页、字符等。可选的,显示屏170可以是液晶显示屏(liquid crystal display,LCD)、有机发光二极管(organic light-emitting diode,OLED)显示屏等。在一些实施例中,终端设备可以包括1个或N个显示屏170,N为大于2的正整数。终端设备通过GPU,显示屏170,以及应用处理器等实现显示功能,例如显示图片或视频。GPU为图像处理的微处理器,连接显示屏170和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行相关的程序指令以生成或改变显示信息。
电源模块180包括电池和充电装置。充电装置用于从充电器接收充电输入,并将电量存储在电池中。其中,充电器可以是无线充电器,也可以是有线充电器。电源模块180为处理器110,存储器120,通信模块130,音频模块140,摄像头150,输入模块160、显示屏170等部件提供电量。
可以理解的是,本申请实施例示意的结构并不构成对电子设备的具体限定。在本申请另一些实施例中,电子设备还可以包括比图示结构更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件、软件或者软件和硬件的组合实现。
图4是本申请实施例提供的跨设备采集屏幕图像的***的软件结构示意图。参见图4所示,该***包括第一设备和第二设备。其中,第一设备和第二设备之间可以通过Wi-Fi局域网、Wi-Fi直连(peer to peer,P2P)、蓝牙(bluetooth,BT)、蜂窝通信等通信技术交互或者连接。下面分别对第一设备和第二设备的软件结构进行说明。
(一)第一设备
第一设备也称作直播推流设备,安装有直播应用,设置有相机框架、相机服务和虚拟相机模块(也称作远端屏幕相机模块)。下面分别对其进行说明。
(1)直播应用
直播应用安装在第一设备的应用程序层,用于控制第一设备采集直播视频流进行直播。直播应用通常包括相机开关、相机流配置模块和相机数据接收模块。
相机开关,用于根据用户指令控制打开或者关闭第一设备的相机模块,该相机模块可以是第一设备的本地前置相机模块、本地后置相机模块,或者与第一设备连接的远端设备(如第二设备)的前置相机模块、后置相机模块,以及本实施例中提供的远端屏幕相机模块。该远端屏幕相机模块用于控制远端设备(如第二设备)采集远端设备的屏幕图像。在本实施例中,用户指令可以是用户在电子设备的显示屏170上输入的触摸控制指令,可以是隔空控制手势,也可以是语音控制指令等,本实施例对用户指令的具体实现形式不进行限制。
需要说明的是,该相机开关支持在已控制启用一个相机模块的情况下,继续根据用户指令打开其他相机模块,使得第一设备同时使用多个相机模块采集图像。例如,在已控制开启第一设备本地前置相机模块的情况下,控制第一设备开启第二设备的后置相机模块。或者,在已控制开启第一设备本地后置相机模块的情况下,开启远端屏幕相机模块以采集第二设备的屏幕图像。
此外,在第一设备同时开启了多个相机模块的情况下,该相机开关支持同时关闭该多个相机模块,也支持仅关闭该多个相机模块中的任一个。例如,在第一设备同时使用本地的前置相机模块和远端屏幕相机模块采集图像时,第一设备可以通过该相机开关控制前置相机模块和远端屏幕相机模块同时关闭,也可以仅控制前置相机模块关闭,或者仅控制远端屏幕相机模块关闭。
相机流配置模块,用于配置摄像头数据流,其中包括配置摄像头采集图像的高度(height)、宽度(width)、图像的数据格式等参数。
第一设备在采集图像时,可以采集多路数据流,下面对其进行示例性说明。
以第一设备使用摄像头拍摄视频为例,在拍摄视频的过程中,第一设备通常需要采集预览数据流、视频数据流,还可以采集抓拍数据流。在该示例中,预览数据流是指摄像头在拍摄视频之前或者在拍摄视频的过程中,图像预览框中实时显示的预览图像所对应的数据流,预览数据流通常在拍摄结束之后就会被电子设备删除。视频数据流是电子设备采集并存储在电子设备上的数据流,是用户最终需要的数据流,该视频数据流的清晰度通常比预览数据流高。在拍摄视频的过程中,用户还可以控制电子设备抓拍视频中的某些图像,并将这些图像以图片的形式进行保存。抓拍数据流就是这些图片对应的数据流。
以第一设备使用摄像头拍摄照片为例,第一设备通常需要采集预览数据流和照片数据流,在该示例中,预览数据流是指相机应用在打开后,在拍摄照片之前,图像预览框中实时显示的预览图像所对应的数据流,预览数据流通常在拍摄结束之后就会被第一设备删除。照片数据流是第一设备在接收到用户的拍摄指令之后所采集的照片所对应的数据流。
在本实施例中,第一设备允许相机客户端或者支持调用相机模块的应用程序(如直播应用)针对具体的使用场景配置相机的数据流。以电子设备配置数据流中图像的清晰度为例,由于预览数据流的清晰度通常比照片数据流的清晰度低,因此,第一设备可以将预览数据流的清晰度配置为480P,而将照片数据流的清晰度配置为1080P。
相机数据接收模块,用于通过接收第一设备控制的各个相机模块所发送的数据流。基于前文描述可知,该相机模块可以是第一设备本地的前置相机模块或者后置相机模块,也可以是第一设备控制的远端设备(例如第二设备)的前置相机模块或者后置相机模块,还可以是远端屏幕相机模块。
以第一设备仅控制本地前置相机模块采集图像为例,相机数据接收模块需要接收该前置相机模块的采集的数据流。以第一设备同时控制第一设备本地的前置相机模块和远端屏幕相机模块采集图像为例,相机数据接收模块需要同时接收前置相机模块发送的数据流,和远端屏幕相机模块发送的数据流。相机数据接收模块在接收到这些数据之后,会将这些数据交由直播应用的其他模块进行进一步的处理,例如进行图像合成、图像显示或者将其作为直播视频流推送给观看设备等。
(2)相机框架
相机框架,可以设置在第一设备的应用程序框架层,用于提供相机API。通过该相机API,第一设备可以调用本地相机模块、远端相机模块以及远端屏幕相机模块等。换而言之,通过该相机API,第一设备可以调用对应的相机软件开发工具包(softwaredevelopment kit,SDK),实现图像拍摄功能。例如,第一设备通过该相机API可以调用控制采集远端屏幕的SDK,从而控制远端设备(如第二设备)捕获屏幕图像,并将屏幕图像发送给第一设备。
(3)相机服务
相机服务,可以设置在第一设备的***运行库层,用于管理应用程序对相机模块的使用情况,即在不同时间为不同的应用程序提供使用相机模块获取图像的能力。例如,对于第一设备应用程序层的直播应用和即时聊天应用,其均可以使用远端屏幕相机模块获取远端设备(如第二设备)的屏幕图像。
在一些实施例中,相机框架可以包括在相机服务中,即相机服务既能够提供相机模块的API接口,还能够管理应用程序对相机模块的使用情况。
(4)远端屏幕相机模块
远端屏幕相机模块,也可以称作虚拟相机模块,可以设置在第一设备的硬件抽象层,用于采集远端设备(如第二设备)的屏幕图像。以远端设备是第二设备为例,该远端屏幕相机模块用于控制采集第二设备的屏幕图像。在本实施例中,远端屏幕相机模块包括远端屏幕相机模块图像信号处理器(image signal processor,ISP)和虚拟传感器。
在一个示例中,远端屏幕相机模块ISP包括ISP控制模块、分流模块和数码变焦模块。
ISP控制模块,用于根据相机开关发送的第一接口调用指令调用第二设备采集屏幕图像,根据相机开关发送的第一接口停用指令控制第二设备停止采集屏幕图像。以及,根据相机流配置模块发送的相机流配置信息配置分流模块工作。该相机流配置信息为第二设备采集屏幕图像的相关参数。
分流模块,用于在接收到远端设备(如第二设备)发送的屏幕图像的数据流之后,根据相机流配置信息对数据流进行分流处理。例如,根据相机流配置信息中的图像宽度、图像高度或者图像数据的格式,将数据流分流为预览数据流、照片数据流等。
数码变焦模块,用于对采集到的屏幕图像进行放大处理。数码变焦实际上是一种图像的电子放大或缩小技术,用于把远端设备发送的较小的图像放大或缩小到目标尺寸。例如,将分辨率640×480(即480P)的图片放大至2048×1536(2048P)的图片。或者,将分辨率1920×1080(1080P)的图像缩小至640×480的图像。
虚拟传感器,也称作软Sensor(传感器),包括命令发送模块和数据接收模块。其中,命令发送模块用于向第二设备发送向发送第一工作指令、第二工作指令以及相机流配置信息。该第一工作指令用于控制第二设备采集屏幕图像。该第二工作指令用于控制第二设备停止采集屏幕图像。数据接收模块,用于接收第一设备采集的屏幕图像,并将屏幕图像发送给分流模块。
第二设备上安装有相机代理模块、屏幕采集模块和屏幕渲染模块。第二设备能够根据第一设备的第一工作指令,采集本地屏幕图像,并将屏幕图像发送给第一设备。下面分别对第二设备中的各个模块进行具体的说明。
(1)相机代理模块
相机代理模块,可以设置在第二设备的应用程序层,包括命令接收模块、传感器实现模块和数据发送模块。
命令接收模块用于接收第一设备发送的指令或信息,其中包括前文示出的第一工作指令、第二工作指令以及相机流配置信息等。
传感器实现模块,也称作相机Sensor实现,包括相机开关、相机流配置单元和相机流输出单元。其中,相机开关用于根据第一工作指令控制屏幕采集模块工作,采集第二设备的屏幕图像。以及,根据第一设备发送的第二工作指令,控制屏幕采集模块停止工作。相机流配置单元用于根据第一设备发送的相机流配置信息控制屏幕采集模块采集的屏幕图像的规格,例如分辨率、尺寸等。相机流输出单元,用于接收屏幕采集模块发送的屏幕数据流,并将屏幕数据流发送给数据发送模块。
数据发送模块,用于向第一设备发送第二设备本地采集的屏幕数据流,屏幕数据流中包括了屏幕图像的相关数据。
(2)屏幕采集模块
屏幕采集模块,可以设置在***运行库层,能够对第二设备的屏幕图像进行截屏或者录屏。其中,截屏是指截取单帧的屏幕图像,而录屏是指录制预设时间内连续显示的多帧屏幕图像。值得说明的是,在本实施例提供的技术方案中,第二设备将其***中原本设置的屏幕图像采集功能虚拟成了相机拍摄功能,即通过相机模块的应用程序接口(application program interface,API)调用第二设备中原本设置的屏幕采集模块,采集第二设备的屏幕图像。
屏幕采集模块包括媒体投影单元(Media Projection)、虚拟显示器(VirtualDisplay)和屏幕图像输出单元(虚拟Surface)。
媒体投影单元(Media Projection),用于捕捉屏幕图像,具体来说可以截取当前屏幕图像和录制屏幕视频。媒体投影单元在获取到相机开关发送的第一工作指令之后,通常会控制第一设备弹窗询问用户是否授权应用捕捉屏幕图像,在获取到用户的授权之后,该媒体投影单元才开始捕捉第二设备的屏幕图像。
媒体投影单元是相机代理模块中的相机开关所控制的单元,换而言之,相机开关***体投影单元进行屏幕媒体投影的创建和销毁。
示例性的,机机开关可以通过如下程序***体投影单元创建屏幕媒体投影。
Figure BDA0003453638180000091
Figure BDA0003453638180000101
机机开关在销毁Media Projection对象的过程中,可以先***体投影单元停止进行屏幕媒体投影,随后置空Media Projection,最后通过Java回收机制释放MediaProjection对象。
示例性的,相机开关可以通过如下程序***体投影单元销毁Media Projection对象。
Figure BDA0003453638180000102
虚拟显示器(Virtual Display),用于将屏幕媒体投影单元获取到的屏幕图像渲染在一个Surface控件上,当进程终止时虚拟显示器会被自动的释放。虚拟显示器根据相机代理模块中相机流配置单元的配置确定虚拟显示屏幕的尺寸(如屏幕宽度screen Width、屏幕高度screen Height)、dpi等参数。
在一些实施例中,相机流配置单元通过如下程序配置虚拟屏幕的尺寸。
Figure BDA0003453638180000103
在另一些实施例中,相机流配置单元通过如下程序配置虚拟显示器的相机流,创建ImageReader(图像阅读器)用于接收待显示的屏幕数据,以及创建虚拟显示。
Figure BDA0003453638180000104
Figure BDA0003453638180000111
/>
在其他一些实施例中,相机流配置单元通过如下程序配置虚拟显示器释放相机流。
Figure BDA0003453638180000112
屏幕图像输出单元(虚拟surface),用于向相机流输出单元输出采集到的屏幕数据流,在输出过程中,首先要进行相机数据输出回调注册,注册成功之后才能进行相机数据输出回调。其中,相机数据输出回调是指相机流输出单元通过屏幕图像输出单元中的回调接口获取第二设备的屏幕图像。
(a)相机数据输出回调注册的相关程序可以如下所示。
public void CameraSensor::setFrameCallback(FrameCallback callback){
mFrameCallback=callback;
}
(b)相机数据输出回调的相关程序可以如下所示。
第二设备创建完VirtualDisplay后,虚拟Surface(即ImageReader的surface)即开始输出屏幕数据流。
Figure BDA0003453638180000113
(3)屏幕渲染模块
电子设备显示的图像通常是包括多个图层的图像的,例如,电子设备在播放视频的过程中,视频内容属于一个图层,视频控件则属于另一图层。屏幕渲染模块能够将媒体投影单元获取到的不同图层的图像进行渲染,形成最终要展示给用户的图像。
需要说明的是,本实施例中相机框架、相机服务、远端屏幕相机模块是第一设备出厂时***中预设的,相机代理模块、屏幕采集模块和屏幕渲染模块是第二设备出厂时***中预设的。换而言之,这些模块相互配合所提供虚拟相机应用(或称作远端屏幕相机应用),是电子设备出厂时预装的应用,无需用户下载。
此外,电子设备在出厂时,可以预设相机框架、相机服务和远端屏幕相机模块的同时,还预设相机代理模块、屏幕采集模块和屏幕渲染模块。也就是说,同一个电子设备在一些使用场景下可以作为屏幕图像的提供方使用,而在另一些使用场景下可以切换为屏幕图像的需求方使用。
基于上述本实施例提供的跨设备采集屏幕图像的***的软件结构示意图,下面对第一设备控制第二设备采集第二设备的屏幕图像的过程进行示例性说明。
图5是本申请实施例提供的跨设备屏幕图像采集方法的示意图,涉及第一设备通过远端屏幕相机模块获取第二设备的屏幕图像的过程,具体包括如下步骤S501~S511。
S501,直播应用获取第一用户操作。
以直播场景为例,第一设备在通过直播应用进行直播的过程中,直播应用可以根据用户操作选择或者切换直播过程中所使用的摄像头,从而切换直播画面。基于此,在本实施例中,用户控制直播应用采集第二设备的屏幕图像的操作,即为第二用户操作。具体如下所示。
参见图6中的(a)~(b)所示,在直播过程中,响应于用户对直播界面中“更多”控件的操作,第一设备显示基础功能选择界面,该基础功能选择界面中包括摄像头选择控件。此外,该基础功能选择界面还以包括其他控件,例如直播管理控件、功能设置控件等,本实施例在此未示出。
参见图6中的(b)~(c)所示,响应于用户对摄像头选择控件的操作,第一设备开始搜索周围的可用设备,该可用设备包括周围支持向第一设备提供远程相机服务的电子设备,即支持被其他设备调用本地摄像头或屏幕采集功能的设备。第一设备在获得可用设备的授权之后,即可显示包括该可用设备的可用摄像头的摄像头列表。该可用设备的相关授权流程可参见目前分布式相机的授权流程,本实施例在此不进行赘述。
参见图6中的(d)所示,以授权设备是第二设备,且第二设备的设备型号是HUAWEIP40为例,该摄像头列表可以包括“本机(后置)”、“本机(前置)”、“HUAWEI P40(前置)”、“HUAWEI P40(后置)”以及“HUAWEI P40(屏幕)”等摄像头。本实施例将摄像头列表中的用于选择摄像头的控件分为第一控件和第二控件。其中,第一控件用于选择远端屏幕相机模块对应的摄像头(“如HUAWEI P40(屏幕)”摄像头),换而言之,第一控件用于控制第二设备采集屏幕图像。第二控件用于选择其他摄像头(例如“本机(前置)”、“HUAWEI P40(前置)”摄像头等)。换而言之,第二控件用于控制第一设备的摄像头或第二设备的摄像头拍摄图像。用户可以根据需求选择该摄像头列表中的一个或者多个摄像头采集图像。
在本实施例中,直播应用在检测到用户对第一控件(如“HUAWEI P40(屏幕)”摄像头)的选择操作之后,认为接收到了第一用户操作。
S502,直播应用向相机框架发送第一接口调用指令。
基于前文描述可知,相机框架中设置有相机接口,该相机接口不仅可以调用远端屏幕相机模块,还可以调用本地相机模块(包括本地前置相机模块和本地后置相机模块),以及远端相机模块(包括远端前置相机模块和远端后置相机模块)。直播应用在接收到第一用户操作后,向相机框架发送第一接口调用指令。
在一些实施例中,该第一接口调用指令包括相机接口标识、第一相机标识和相机流配置信息。其中,相机接口标识用于指示应用(如直播应用)所要调用的目标接口为相机接口。该第一相机标识用于指示应用(如直播应用)通过该目标接口所要调用的目标相机模块为远端屏幕相机模块。该相机流配置信息用于指示应用(如直播应用)所需的屏幕图像的图像高度、图像宽度和图像的数据格式等参数。通过该相机流配置信息,远端屏幕相机模块可以控制采集到满足第一设备需求的屏幕图像。
S503,相机框架根据第一接口调用指令,通过相机服务调用远端屏幕相机模块。
S504,远端屏幕相机模块向相机代理模块发送第一工作指令,该第一工作指令用于指示相机代理模块采集第二设备的屏幕图像。
在一些实施例中,远端屏幕相机模块的ISP控制模块根据第一接口调用指令的指示,生成第一工作指令,并将该第一工作指令通过虚拟传感器的命令发送模块发送给第二设备的相机代理模块。应理解,该第一工作指令中也包括直播应用指示的相机流配置信息。
S505,相机代理模块根据第一工作指令,向屏幕采集模块发送屏幕图像采集指令。
在一些实施例中,相机代理模块通过命令接收模块接收第一工作指令,并将第一工作指令发送给传感器实现模块,由传感器实现模块向屏幕采集模块发送屏幕图像采集指令,以控制屏幕采集模块工作。结合图4示出的跨设备采集屏幕图像的***,该屏幕图像采集指令包括相机开关发送给媒体投影单元的启动指令,以及,相机流配置单元发送给虚拟显示器的相机流配置信息。
S506,屏幕采集模块根据屏幕图像采集指令,采集第二设备显示的不同图层的图像。
在一些实施例中,媒体投影单元根据该启动指令,捕获第二设备当前显示的各个图层的图像。虚拟显示器根据该相机流配置信息,对媒体投影单元捕获的各个图层的图像进行渲染。
应理解,屏幕采集模块可以根据相机流配置信息采集多种规格的屏幕图像,例如低清晰度的预览屏幕图像和高清晰度的视频屏幕图像。屏幕采集模块在采集到不同规格的屏幕图像之后,需要这些屏幕图像均发送给屏幕渲染模块分别进行渲染。
S507,屏幕采集模块将第二设备显示的不同图层的图像发送给屏幕渲染模块。
S508,屏幕渲染模块将不同图层的图像渲染为第二设备实际显示的屏幕图像。可以理解,经过渲染获得的屏幕图像同时包括该不同图层的图像。
S509,屏幕渲染模块依次通过屏幕采集模块和相机代理模块,向远端屏幕相机模块发送屏幕图像。
示例性的,结合图4所示的跨设备采集屏幕图像的***,首先,屏幕渲染模块将屏幕图像发送给屏幕图像输出单元;其次,屏幕图像输出单元将屏幕图像发送给相机流输出单元;随后,相机流输出单元将屏幕图像发送给数据发送模块;最后,数据发送模块将屏幕图像发送给第一设备的远端屏幕相机模块。应理解,屏幕图像在各个单元、模块或者设备之间传输时,是以屏幕数据流的形式传输的。
S510,远端屏幕相机模块对屏幕图像进行后处理。
结合图4可知,远端屏幕相机模块通过数据接收单元接收第二设备屏幕图像的数据流(简称屏幕数据流)。在接收到屏幕数据流之后,远端屏幕相机模块根据相机流配置信息对屏幕数据流进行后处理。
在一些实施例中,若该屏幕数据流包括多种类型的数据流,则远端屏幕相机模块可以通过分流模块对其进行分流处理。例如,在屏幕数据流包括预览数据流和视频数据流的情况下,通过分流模块将这两路数据流分为两路独立的数据流。此外,若第二设备的屏幕数据流仅包括一类数据流(例如视频数据流),则远端屏幕相机模块无需再对屏幕数据流进行分流处理。
在一些实施例中,第一设备还可以通过数码变焦模块及对屏幕数据流中携带的屏幕图像进行数码变焦处理,例如将480P的屏幕图像放大为1080P的屏幕图像。此外,若第二设备的采集到的屏幕视频流的图像尺寸满足第一设备的需求,则第一设备无需对该屏幕视屏流中的屏幕图像进行数码变焦处理。
S511,远端屏幕相机模块向直播应用发送经过后处理的屏幕图像。
第一设备的远端屏幕相机模块在采集并处理完第二设备的屏幕视频流之后,将屏幕视频流通过相机服务、相机框架发送给直播应用的相机数据接收模块,以便直播应用对其进行进一步地处理之后,并将其直播出去。
通过上述步骤S501~S511,第一设备中的应用程序即可通过该相机接口调用远端屏幕相机模块采集第二设备的屏幕图像。
此外,直播应用在接收到第三用户操作之后,通过相机接口调用远端屏幕相机模块向相机代理模块发送第三工作指令,其中,第三工作指令用于指示相机代理模块停止采集屏幕图像。示例性的,参见图6中的(e)所示,在直播应用在检测到用户对直播界面中结束控件的选择操作后,认为接收到第三用户操作,直播应用控制第二设备停止采集屏幕图像。或者,当第一设备检测到用户将当前工作的相机模块由远端屏幕相机模块切换至目标相机模块(如本机后置相机模块)之后,认为接收到第三用户操作,直播应用控制远端屏幕相机模块停止工作,以及控制该本机后置相机模块开始采集图像。
需要说明的是,本申请实施例提供的跨设备屏幕图像采集方法不仅适用于跨设备屏幕直播的场景,还可以应用于屏幕共享等应用场景,本实施例对此不进行限制。
综上所述,本实施例基于远程相机控制技术(也称作分布式相机技术),将第二设备上的相机代理模块封装为第一设备上的远端屏幕相机模块,第二设备根据第一设备的指令即可通过相机代理模块控制屏幕采集模块采集本地的屏幕图像,并将屏幕图像发送给第一设备。也就是说,第二设备无需通过第三方流媒体应用即可在第一设备的控制下采集本地的屏幕图像,具有较好的用户体验。此外,针对软件开发者,其在开发各种直播应用的过程中,无需再配套开发对应的第三方流媒体应用,降低了软件开发的成本和复杂度。
在第一设备通过远端屏幕相机模块采集第二设备的屏幕图像的过程中,第一设备还可以通过调用本地相机模块拍摄视频图像,并将第一设备的视频图像和第二设备的屏幕图像进行合成处理,形成合成图像。
图7是本申请实施例提供的多相机数据的采集流程图示意图,涉及第一设备同时通过远端屏幕相机模块和本地相机模块,采集第二设备的屏幕图像和第一设备的拍摄图像的过程。具体包括如下步骤S701~S707。
S701,第一设备的远端屏幕相机模块根据第一用户操作采集屏幕图像。
在本实施例中,S701的具体内容请参见前文描述,本实施例在此不再赘述。
S702,第一设备的本地相机模块根据第二用户操作采集拍摄图像。
示例性的,参见图8所示,直播应用在检测到用户对第二控件(如“本机(前置)”控件)的选择操作之后,认为接收到了第二用户操作。直播应用在接收到第二用户操作后,向相机框架发送第二接口调用指令。该第二接口调用指令包括相机接口标识、第二相机标识。其中,相机接口标识用于指示应用(如直播应用)所要调用的目标接口为相机接口。该第二相机标识用于指示应用(如直播应用)通过该目标接口所要调用的目标相机模块为本地相机模块。也就是说,该第二接口调用指令用于指示相机框架通过相机API调用本地相机模块使用摄像头采集拍摄图像。需要说明的是,第一设备的本地摄像头在采集拍摄图像时,还能够录制用户的声音。另外,本实施例将电子设备通过摄像头拍摄的图像称为拍摄图像。
S703,远端屏幕相机模块向相机服务发送屏幕图像。
电子设备(包括第一设备和第二设备)在采集数据之后,通常会根据本地的时钟***给数据设置时间戳,用于标识数据的采集时间。基于此可知,在本实施例中,由于拍摄图像是第一设备通过本地相机模块采集的,因此拍摄图像的时间戳是第一设备根据本地的时钟***设置的。而屏幕图像是第一设备控制第二设备采集的,因此屏幕图像的时间戳是第二设备根据其本地的时钟***设置的。由于不同设备(如第一设备和第二设备)的时钟***通常不会完全同步,即不同设备的时钟***之间通常存在差异。该差异主要是绝对时间上的差异,例如在绝对时刻07:01:01时,第一设备的时钟***的时间可能是07:01:01过100ms,而第二设备的时钟***的时间可能是07:01:01过300ms。因此,在本实施例中,同一绝对时间对应的屏幕图像和拍摄图像,其时间戳通常是存在差异的。
由于直播应用在接收到第一设备发送的屏幕图像和拍摄图像之后,通常是将时间戳相同的图像进行合成处理,获得合成图像。若同一绝对时间对应的屏幕图像和拍摄图像的时间戳差异较大,则会导致直播应用生成的合成图像中拍摄图像和屏幕图像不同步,影响观众的直播观看体验。因此,在一些实施例中,远端屏幕相机模块可以将屏幕图像与拍摄图像进行时钟同步之后,再将屏幕图像发送给相机服务。
第一设备对拍摄图像和屏幕图像进行时钟同步的实质就是进行数据流同步,即进行拍摄数据流和屏幕数据流的同步。拍摄数据流中包括第一设备不同时刻的拍摄图像,屏幕数据流中包括第二设备不同时刻的屏幕图像。
在一种可能的实现方式中,第一设备的远端屏幕相机模块可以根据时间戳对拍摄数据流和屏幕数据流进行同步。例如,第一设备的远端屏幕相机模块可以在接收到第二设备发送的屏幕数据流之后,根据第一设备的时钟***,重新给屏幕数据流打上时间戳。
屏幕数据流通常包括多帧图像,并且该多帧图像通常是第二设备在相同的时间间隔下一次发送的。因此,第一设备可以先确定屏幕数据流中首帧屏幕图像的时间戳,再根据该时间间隔确定后续屏幕图像的时间戳。
(1)首帧屏幕图像时间戳的确定
为了清楚地说明屏幕数据流中首帧屏幕图像的时间戳的确定方式,下面对屏幕图像采集过程中所经历的各个阶段以及各阶段的产生的时延进行说明。
参见图9所示,第一设备在采集屏幕图像的过程中,首先由第二设备执行屏幕捕获操作,获得屏幕图像。随后,由第二设备对该屏幕图像进行数据打包处理。接下来,由第二设备将打包后的屏幕图像发送给第一设备。最后,由第一设备进行数据包解析(简称数据解包)才能获得第二设备的屏幕图像。这些过程都会造成第一设备接收屏幕图像产生时延。
基于上述时延,第一电子设备可以采用如下公式计算首帧屏幕图像时间戳:
frame_1_timestamp=system_time–(time_unpack+time_transmit+time_pack+time_capture)。
其中:
frame_1_timestamp:第一设备重新确定的首帧屏幕图像的时间戳。
system_time:第一设备完成首帧屏幕图像解包时的***时间。
time_capture:第二设备采集屏幕图像产生的时延。
time_pack:第二设备对屏幕图像进行数据打包产生的时延。
time_transmit:屏幕图像对应的数据包从第二设备到第一设备的传输时延。
time_unpack:第一设备对屏幕图像进行数据解包产生的时延。
需要说明的是,time_capture、time_pack、time_transmit和time_unpack可以是通过预先测试得到的经验值。
(2)非首帧屏幕图像时间戳的确定
在第一设备采集屏幕图像的过程中,第二设备采集屏幕图像实际产生的时延(time_capture_p)、第二设备对屏幕图像进行数据打包实际产生的时延(time_pack_p)和第一设备对屏幕图像进行数据解包实际产生的时延(time_unpack_p)受电子设备运算能力的影响,通常不会严格稳定,即存在抖动。实际的数据传输时延(time_transmit_p)则受设备间网络环境的影响,通常也不稳定。而屏幕数据流中,相邻屏幕图像帧之间的时间间隔是固定的,如果第一设备结合实际的各项时延(如time_capture_p、time_pack_p、time_unpack_p和time_transmit_p)采用类似首帧时间戳的计算方式计算其余屏幕图像的时间戳,那么得到的各帧屏幕图像之间的时间间隔会因为上述各种时延的差异而发生抖动,影响最终的用户体验。因此,后续非首帧时间戳采用新的计算方式,即首帧时间戳作为时间基准,再加上后续帧与首帧之间的时间间隔。
非首帧时间戳的计算公式如下:
frame_n_timestamp=frame_1_timestamp+(frame_n_remote_timestamp-frame_1_remote_timestamp)
其中:
frame_n_timestamp:第一设备重新确定的第n帧屏幕图像的时间戳,n≠1。
frame_1_timestamp:第一设备重新确定的首帧屏幕图像的时间戳。
frame_n_remote_timestamp:第n帧屏幕图像在第二设备上的采集时间戳,n≠1。
frame_1_remote_timestamp:第1帧屏幕图像在第二设备上的采集时间戳。
以n=100为例,第100帧屏幕图像的时间戳如下所示:
frame_100_timestamp=frame_1_timestamp+(frame_100_remote_timestamp-frame_1_remote_timestamp)
其中:
frame_100_timestamp:第一设备重新确定的第100帧屏幕图像的时间戳。
frame_100_remote_timestamp:第100帧屏幕图像在第二设备上的采集时间戳。
基于上述过程,远端屏幕相机模块在根据第一设备的时钟***更新屏幕图像的时间戳之后,将屏幕图像发送给相机服务。
S704,本地相机模块将拍摄图像发送给相机服务。
S705,相机服务确定屏幕图像和拍摄图像抵达相机服务的时间差。
由于拍摄数据流是第一设备本地相机模块采集到的,而屏幕数据流是第二设备发送的,因此,对于同一绝对时刻的拍摄图像和屏幕图像,拍摄图像会先抵达第一设备的相机服务,而屏幕图像后抵达第二设备的相机服务。在本实施例中,不同相机模块(包括第一设备的本地相机模块、远端相机模块和远端屏幕相机模块)的数据流抵达相机服务的时间差为:
time_diff=(system_time1-camera1_frame_timestamp)-(system_time2–camera2_frame_timestamp)
其中:
time_diff:Camera1(第一相机模块)和Camera2(第二相机模块)的数据抵达相机服务的时间差。
system_time1:Camera1的数据流抵达相机服务时的***时间。
camera1_frame_timestamp:Camera1的数据流的时间戳。
system_time2:Camera2的数据流抵达相机服务时的***时间。
camera2_frame_timestamp:Camera2的数据流的时间戳。
以第一相机模块是远端屏幕相机模块,第二相机模块是本地相机模块为例,在上述时间差的计算公式中,system_time1-camera1_frame_timestamp用于表示第二设备从采集到屏幕数据流到将其发送到第一设备的相机服务所用的时间。system_time2–camera2_frame_timestamp用于表示第一设备的本地相机模块从采集到拍摄数据流到将其发送到第一设备的相机服务所用的时间。system_time1-camera1_frame_timestamp与system_time2–camera2_frame_timestamp的差值,即为屏幕数据流从采集成功到抵达相机服务所需的时间,与拍摄数据流从采集成功到抵达相机服务所需的时间的差值。
可以理解,若屏幕图像和拍摄图像抵达相机服务的时间差time_diff>0,则说明远端屏幕相机模块的屏幕数据流在传输过程中所需的时间较长,对于相同绝对时间采集的屏幕图像和拍摄图像,拍摄图像先到达相机服务,屏幕图像后达到相机服务。若时间差time_diff=0,则说明相同绝对时间采集的屏幕图像和拍摄图像到达相机服务的时间是相同的。若时间差time_diff<0,则说明相同绝对时间采集的屏幕图像和拍摄图像,屏幕图像先到达相机服务,拍摄图像后达到相机服务。
S706,相机服务根据屏幕图像和拍摄图像抵达相机服务的时间差,向直播应用发送屏幕图像和拍摄图像。
根据屏幕图像和拍摄图像抵达相机服务的时间差,相机服务向应用(例如直播应用)输出数据流时,只需要将早到的一路数据流延迟time_diff再输出即可实现数据同步。也就是说,如果time_diff>0,则本地相机模块的数据流延迟time_diff输出。如果time_diff≤0,远端屏幕相机模块的数据流延迟time_diff输出。
以第一相机模块是远端屏幕相机模块,第二相机模块是第一设备的本地相机模块为例,若本地相机模块的拍摄数据流抵达第一设备相机服务的时间,比远端屏幕相机模块的屏幕数据流抵达相机服务的时间早200ms(即time_diff=200ms),则相机服务在接收到拍摄数据流之后,需要等待200ms,等待相同时间戳的屏幕数据流抵达相机服务后,再将拍摄数据流和屏幕数据流同时发送给直播应用。若本地相机模块的拍摄数据流抵达第一设备相机服务的时间,比远端屏幕相机模块的屏幕数据流抵达相机服务的时间晚200ms(即time_diff=-200ms),则相机服务在接收到屏幕数据流之后,需要等待200ms,等待相同时间戳的拍摄数据流抵达相机服务后,再将拍摄数据流和屏幕数据流同时发送给直播应用。
应理解,通常情况下,参见图10可知,由于屏幕图像的传输路径较远,因此,通常是本地相机模块采集的拍摄图像先抵达相机服务,而后第二设备的屏幕图像后抵达相机服务。相机服务通常需要将拍摄图像延后time_diff时间后,向直播应用发送拍摄图像。
S707,直播应用对屏幕图像和拍摄图像进行合成处理,生成合成图像。
在直播场景中,直播应用往往是结合本地相机模块采集的拍摄图像,和远端屏幕相机模块采集的第二设备的屏幕图像一起直播的,因此,直播应用在获取到拍摄图像和第二设备的屏幕图像之后,需要将这两类图像通过相机服务和相机框架发送给直播应用,由直播应用进行合成处理,生成合成图像,从而将合成图像直播给观众。
在本实施例中,合成图像包括第一区域和第二区域,其中,第一区域用于显示通过本地相机模块获取的拍摄图像,第二区域用于显示第二设备的屏幕图像。本实施例对第一区域和第二区域在合成图像中的位置不进行限制,例如,第二区域可以悬浮显示在第一区域的上方(例如图11A所示),或者,第一区域和第二区域可以相互不重叠(例如图11B所示)。
综上所述,通过本实施例提供的方法,第一设备的相机服务可以将拍摄数据流和屏幕数据流按照时间戳同步发送给直播应用,这样直播应用在收到数据流之后,就可以不关心时间戳而直接根据数据流进行图像合成,能够提高直播应用的数据处理效率。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本申请实施例还提供一种第一设备,该第一设备包括上述实施例中示出的直播应用、相机框架、相机服务和远端屏幕相机模块。并且,该第一设备被配置为执行上述各个实施例中第一设备所执行的跨设备采集屏幕图像的方法。
本申请实施例还提供一种第二设备,该第二设备包括上述实施例中示出的相机代理模块、屏幕采集模块和屏幕渲染模块。并且,该第二设备被配置为执行上述各个实施例中第二设备所执行的跨设备采集屏幕图像的方法。
本申请实施例还提供一种芯片,参见图12所示,该芯片包括处理器和存储器,该存储器中存储有计算机程序,该计算机程序被处理器执行时实现上述各实施例中第一设备或者第二设备所执行的跨设备采集屏幕图像的方法。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述各实施例中第一设备或者第二设备所执行的跨设备采集屏幕图像的方法。
本申请实施例还提供一种计算机程序产品,该程序产品包括计算机程序,当该计算机程序被电子设备运行时,使得电子设备实现上述各实施例中第一设备或者第二设备所执行的跨设备采集屏幕图像的方法。
应理解,本申请实施例中提及的处理器可以是中央处理单元(centralprocessing unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
还应理解,本申请实施例中提及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double datarate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
在本申请所提供的实施例中,各个框架或模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个框架或模块可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (24)

1.一种跨设备采集屏幕图像的***,其特征在于,包括第一设备和第二设备,所述第一设备安装有第一应用并设置有远端屏幕相机模块;所述第二设备设置有相机代理模块和屏幕采集模块;其中,
所述第一应用在接收到第一用户操作之后,调用所述远端屏幕相机模块向所述相机代理模块发送第一工作指令;
所述相机代理模块根据所述第一工作指令,通过所述屏幕采集模块获取所述第二设备的屏幕图像,并向所述远端屏幕相机模块发送所述屏幕图像;
所述远端屏幕相机模块向所述第一应用发送所述屏幕图像。
2.根据权利要求1所述的***,其特征在于,所述远端屏幕相机模块向所述第一应用发送所述屏幕图像,包括:
所述远端屏幕相机模块根据所述第一应用的相机流配置信息,对所述屏幕图像对应的屏幕数据流进行分流处理;
所述远端屏幕相机模块将分流后的所述屏幕数据流发送给所述第一应用。
3.根据权利要求2所述的***,其特征在于,所述相机流配置信息包括:所述屏幕图像的图像宽度与图像高度,和/或,图像的数据格式。
4.根据权利要求1~3任一项所述的***,其特征在于,所述远端屏幕相机模块向所述第一应用发送所述屏幕图像,包括:
所述远端屏幕相机模块对所述屏幕图像进行缩小或放大处理,获得缩放图像;
所述远端屏幕相机模块将所述缩放图像发送给所述第一应用。
5.根据权利要求1~4任一项所述的***,其特征在于,所述第一设备还设置有本地相机模块,
所述第一应用在接收到第二用户操作之后,调用所述本地相机模块;
所述本地相机模块通过摄像头采集拍摄图像,并向所述第一应用发送所述拍摄图像。
6.根据权利要求5所述的***,其特征在于,
所述远端屏幕相机模块在接收到所述屏幕图像之后,根据所述屏幕图像的时延,以及所述第一设备完成首帧屏幕图像解包时所述第一设备的***时间,更新所述首帧屏幕图像的时间戳。
7.根据权利要求6所述的***,其特征在于,所述屏幕图像的时延包括:
所述第二设备采集所述屏幕图像产生的时延;
所述第二设备对所述屏幕图像进行数据打包产生的时延;
所述屏幕图像从所述第二设备到所述第一设备的传输时延;
所述第一设备对所述屏幕图像进行数据解包产生的时延。
8.根据权利要求6或7所述的***,其特征在于,
所述远端屏幕相机模块在接收到所述屏幕图像之后,还根据所述首帧屏幕图像更新后的时间戳、第n帧屏幕图像在所述第二设备上的采集时间戳、所述首帧屏幕图像在所述第二设备上的采集时间戳,重新确定所述第n帧屏幕图像的时间戳,n为正整数,且n≠1。
9.根据权利要求6~8任一项所述的***,其特征在于,所述第一设备还设置有相机服务,所述远端屏幕相机模块通过所述相机服务向所述第一应用发送所述屏幕图像,所述本地相机模块通过所述相机服务向所述第一应用发送所述拍摄图像;
所述相机服务确定所述屏幕图像和所述拍摄图像抵达所述相机服务的时间差,以及先抵达所述相机服务的图像;
所述相机服务根据所述时间差和先抵达所述相机服务的图像,向所述第一应用发送所述屏幕图像和所述拍摄图像。
10.根据权利要求9所述的***,其特征在于,所述相机服务根据所述时间差和先抵达所述相机服务的图像,向所述第一应用发送所述屏幕图像和所述拍摄图像,包括:
若所述拍摄图像先于所述屏幕图像抵达所述相机服务,则所述相机服务延迟所述时间差后向所述第一应用发送所述拍摄图像;和/或,
若所述屏幕图像先于所述拍摄图像抵达所述相机服务,则所述相机服务延迟所述时间差后向所述第一应用发送所述屏幕图像。
11.根据权利要求10所述的***,其特征在于,所述屏幕图像和所述拍摄图像抵达所述相机服务的时间差为:第一时长与第二时长的差值;
其中,所述第一时长为所述第二设备从采集到所述屏幕图像,到将所述屏幕图像发送到所述相机服务所用的时长;所述第二时长为所述本地相机模块从采集到所述拍摄图像,到将所述拍摄图像发送到所述相机服务所用的时长。
12.根据权利要求1~11任一项所述的***,其特征在于,
所述第一应用在接收到第三用户操作之后,调用所述远端屏幕相机模块向所述相机代理模块发送第三工作指令,其中,所述第三工作指令用于指示所述相机代理模块停止采集所述屏幕图像。
13.一种跨设备采集屏幕图像的方法,应用于第一设备和第二设备,其特征在于,所述第一设备安装有第一应用并设置有远端屏幕相机模块;所述第二设备设置有相机代理模块和屏幕采集模块;其中,
所述第一应用在接收到第一用户操作之后,调用所述远端屏幕相机模块向所述相机代理模块发送第一工作指令;
所述相机代理模块根据所述第一工作指令,通过所述屏幕采集模块获取所述第二设备的屏幕图像,并向所述远端屏幕相机模块发送所述屏幕图像;
所述远端屏幕相机模块向所述第一应用发送所述屏幕图像。
14.根据权利要求13所述的方法,其特征在于,所述远端屏幕相机模块向所述第一应用发送所述屏幕图像,包括:
所述远端屏幕相机模块根据所述第一应用的相机流配置信息,对所述屏幕图像对应的屏幕数据流进行分流处理;
所述远端屏幕相机模块将分流后的所述屏幕数据流发送给所述第一应用。
15.根据权利要求14所述的方法,其特征在于,所述相机流配置信息包括:所述屏幕图像的图像宽度与图像高度,和/或,图像的数据格式。
16.根据权利要求13~15任一项所述的方法,其特征在于,所述远端屏幕相机模块向所述第一应用发送所述屏幕图像,包括:
所述远端屏幕相机模块对所述屏幕图像进行缩小或放大处理,获得缩放图像;
所述远端屏幕相机模块将所述缩放图像发送给所述第一应用。
17.根据权利要求13~16任一项所述的方法,其特征在于,所述第一设备还设置有本地相机模块,所述方法还包括:
所述第一应用在接收到第二用户操作之后,调用所述本地相机模块;
所述本地相机模块通过摄像头采集拍摄图像,并向所述第一应用发送所述拍摄图像。
18.根据权利要求17所述的方法,其特征在于,所述方法还包括:
所述远端屏幕相机模块在接收到所述屏幕图像之后,根据所述屏幕图像的时延,以及所述第一设备完成首帧屏幕图像解包时所述第一设备的***时间,更新所述首帧屏幕图像的时间戳。
19.根据权利要求18所述的方法,其特征在于,所述屏幕图像的时延包括:
所述第二设备采集所述屏幕图像产生的时延;
所述第二设备对所述屏幕图像进行数据打包产生的时延;
所述屏幕图像从所述第二设备到所述第一设备的传输时延;
所述第一设备对所述屏幕图像进行数据解包产生的时延。
20.根据权利要求18或19所述的方法,其特征在于,所述方法还包括:
所述远端屏幕相机模块在接收到所述屏幕图像之后,还根据所述首帧屏幕图像更新后的时间戳、第n帧屏幕图像在所述第二设备上的采集时间戳、所述首帧屏幕图像在所述第二设备上的采集时间戳,重新确定所述第n帧屏幕图像的时间戳,n为正整数,且n≠1。
21.根据权利要求18~20任一项所述的方法,其特征在于,所述第一设备还设置有相机服务,所述远端屏幕相机模块通过所述相机服务向所述第一应用发送所述屏幕图像,所述本地相机模块通过所述相机服务向所述第一应用发送所述拍摄图像;所述方法还包括:
所述相机服务确定所述屏幕图像和所述拍摄图像抵达所述相机服务的时间差,以及先抵达所述相机服务的图像;
所述相机服务根据所述时间差和先抵达所述相机服务的图像,向所述第一应用发送所述屏幕图像和所述拍摄图像。
22.根据权利要求21所述的方法,其特征在于,所述相机服务根据所述时间差和先抵达所述相机服务的图像,向所述第一应用发送所述屏幕图像和所述拍摄图像,包括:
若所述拍摄图像先于所述屏幕图像抵达所述相机服务,则所述相机服务延迟所述时间差后向所述第一应用发送所述拍摄图像;和/或,
若所述屏幕图像先于所述拍摄图像抵达所述相机服务,则所述相机服务延迟所述时间差后向所述第一应用发送所述屏幕图像。
23.根据权利要求22所述的方法,其特征在于,所述屏幕图像和所述拍摄图像抵达所述相机服务的时间差为:第一时长与第二时长的差值;
其中,所述第一时长为所述第二设备从采集到所述屏幕图像,到将所述屏幕图像发送到所述相机服务所用的时长;所述第二时长为所述本地相机模块从采集到所述拍摄图像,到将所述拍摄图像发送到所述相机服务所用的时长。
24.根据权利要求13~23任一项所述的方法,其特征在于,所述方法还包括:
所述第一应用在接收到第三用户操作之后,调用所述远端屏幕相机模块向所述相机代理模块发送第三工作指令,其中,所述第三工作指令用于指示所述相机代理模块停止采集所述屏幕图像。
CN202111679635.5A 2021-12-31 2021-12-31 一种跨设备采集屏幕图像的***和方法 Pending CN116419023A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202111679635.5A CN116419023A (zh) 2021-12-31 2021-12-31 一种跨设备采集屏幕图像的***和方法
PCT/CN2022/139980 WO2023125105A1 (zh) 2021-12-31 2022-12-19 一种跨设备采集屏幕图像的***和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111679635.5A CN116419023A (zh) 2021-12-31 2021-12-31 一种跨设备采集屏幕图像的***和方法

Publications (1)

Publication Number Publication Date
CN116419023A true CN116419023A (zh) 2023-07-11

Family

ID=86997708

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111679635.5A Pending CN116419023A (zh) 2021-12-31 2021-12-31 一种跨设备采集屏幕图像的***和方法

Country Status (2)

Country Link
CN (1) CN116419023A (zh)
WO (1) WO2023125105A1 (zh)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9436650B2 (en) * 2011-11-25 2016-09-06 Lg Electronics Inc. Mobile device, display device and method for controlling the same
CN103257839A (zh) * 2013-06-07 2013-08-21 百度在线网络技术(北京)有限公司 跨设备进行显示的方法、***和移动终端
CN105637472B (zh) * 2013-10-11 2019-03-19 华为技术有限公司 具有广义屏幕描述的屏幕内容共享***的框架
CN111083379A (zh) * 2019-12-31 2020-04-28 维沃移动通信(杭州)有限公司 拍摄方法及电子设备
CN113268211B (zh) * 2021-05-13 2023-05-12 维沃移动通信(杭州)有限公司 图像获取方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
WO2023125105A1 (zh) 2023-07-06

Similar Documents

Publication Publication Date Title
US20220086509A1 (en) Method for processing live-streaming interaction video and server
CN110213616B (zh) 视频提供方法、获取方法、装置及设备
KR101777693B1 (ko) 스크린 투사 방법, 장치, 시스템, 프로그램 및 기록매체
US9225905B2 (en) Image processing method and apparatus
US9992483B2 (en) Imaging architecture for depth camera mode with mode switching
WO2018000227A1 (zh) 视频直播方法及装置
WO2017219347A1 (zh) 直播显示方法、装置及***
EP3151548A1 (en) Video recording method and device
US20150208103A1 (en) System and Method for Enabling User Control of Live Video Stream(s)
WO2022121775A1 (zh) 一种投屏方法及设备
WO2013132828A1 (ja) 通信システムおよび中継装置
US8687046B2 (en) Three-dimensional (3D) video for two-dimensional (2D) video messenger applications
CN108769738B (zh) 视频处理方法、装置、计算机设备和存储介质
CN106792024B (zh) 多媒体信息的分享方法及装置
CN115514882A (zh) 一种分布式拍摄方法,电子设备及介质
CN112468873A (zh) 画面显示方法、装置、***、电子设备、服务器及介质
CN111882669A (zh) 虚拟实境设备及其控制方法以及移动装置控制方法
CN110996117A (zh) 视频转码方法、装置、电子设备和存储介质
CN108616719B (zh) 监控视频展示的方法、装置及***
EP2482549A1 (en) Apparatus and method for synchronizing media capture in a wireless device
WO2017157293A1 (zh) 双摄像头移动终端及其拍摄方法
CN114866659A (zh) 一种拍摄方法及电子设备
US20190045136A1 (en) Display control device, display control method, and program
CN116419023A (zh) 一种跨设备采集屏幕图像的***和方法
CN112887653B (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