原文:Paul Kinlan

翻译:Agora.io

长久以来,我一直希望能够直接从Android屏幕上进行录制并将其编码为多种格式,以便将录制内容嵌入在任意位置,而不需要安装任何软件。

如今,我们已经接近这个目标。Chrome团队正在添加一种功能,可以通过getUserMedia从Android设备上共享屏幕。我创建了一个原型来录制屏幕并将录制内容流式传输到其他设备,以便将其录制到文件并为其添加设备帧。

虽然WebRTC有很多复杂的细节,但总体而言,该基础架构并没有那么复杂。

录制过程分为两个阶段:

1.在本地捕获(并可选择在本地录制);

2.传输到远程桌面。

捕获屏幕

getUserMedia是一个十分有用的API。通过它可直接在网页中以内联方式实时访问任何摄像头或麦克风。getUserMediaAPI可用于请求仅连接到某些类型的设备。例如,通过设置参数{audio: true},可请求仅连接至支持音频的设备,而通过设置{video:{'mandatory': {width:1920, height:1080}}},可指示仅连接至高清摄像头。

Chrome即将推出一个新的参数{'chromeMediaSource':'screen'},该参数制定Chrome应使用屏幕作为流媒体源。

它当前位于标记之后,完全是实验性质。在Android上,需要开启chrome://flags#enable-usermedia-screen-capturing来启用它。您也可以跟踪Chrome错误487935的实现情况。

const constraints = {

audio: false, // mandatory.

video: {'mandatory': {'chromeMediaSource':'screen'}}

};

const successCallback = (stream) => {

// Do something with the stream.

//Attach to WebRTC connections

//Record via MediaRecorder

};

consterrorCallback = () => {

//We don't have access to the API

};

navigator.getUserMedia(constraints,successCallback, errorCallback);

这就是全部代码。

当然,这是从技术上而言。在实际中,您不会直接获得访问权限。用户需要向getUserMedia的媒体流授予访问权限(与往常一样),由于此API的这项功能十分强大,用户必须明确选择使用它才能共享自己的屏幕。一旦用户明确选择使用此功能,系统就会明确指示他们在共享屏幕。

现在,您已经有了可存储在本地的屏幕流,您也可以通过WebRTC将它传输到外部位置。

通过MediaRecorder可在本地录制屏幕,正如我在WebGL录制代码段中所做的那样。我还创建了一个简单的演示,可对屏幕录制10秒,再将录制的内容下载到您的设备上。

(function(){

//Download locally

functiondownload(blob) {

varurl = window.URL.createObjectURL(blob);

vara = document.createElement('a');

a.style.display= 'none';

a.href= url;

a.download= 'test.webm';

document.body.appendChild(a);

a.click();

setTimeout(function(){

document.body.removeChild(a);

window.URL.revokeObjectURL(url);

},100);

}

constsuccessCallback = (stream) => {

//Set up the recorder

letblobs = [];

letrecorder = new MediaRecorder(stream, {mimeType: 'video/webm; codecs=vp9'});

recorder.ondataavailable= e => { if (e.data && e.data.size > 0) blobs.push(e.data)};

recorder.onstop= (e) => download(new Blob(blobs, {type: 'video/webm'}));

//Record for 10 seconds.

setTimeout(()=>recorder.stop(), 10000);

//Start recording.

recorder.start(10);// collect 10ms chunks of data

};

consterrorCallback = (err) => {

//We don't have access to the API

console.log(err)

};

navigator.getUserMedia({

audio:false,

video:{'mandatory': {'chromeMediaSource':'screen'}}

},successCallback, errorCallback);

})();

android实时抓取屏幕文字,Android录制屏幕的实现方法相关推荐

  1. 转载自android 开发--抓取网页解析网页内容的若干方法(网络爬虫)(正则表达式)

    转载自http://blog.csdn.net/sac761/article/details/48379173 android 开发--抓取网页解析网页内容的若干方法(网络爬虫)(正则表达式) 标签: ...

  2. [转] Android实时抓包分析 : 善用adb调试桥

    Android实时抓包分析 : 善用adb调试桥 谈到android网络抓包,很多人都能想到牛逼轰轰的神器tcpdump.方法就是在android机器上面安装tcpdump,然后通过-w参数把抓包记录 ...

  3. RockChip Android平台抓取android trace的windows环境搭建

    RockChip Android平台抓取android trace的windows环境搭建的步骤 安装python2.7.9 下载链接: https://www.python.org/download ...

  4. android log抓取方法,Android系统之Android抓取各种log的方法

    Android系统之Android抓取各种log的方法 2018年11月25日 | 萬仟网移动技术 | 我要评论 android之android抓取各种log的方法 1.logcat (四类log b ...

  5. python 实时抓取网页数据并进行 筛查

    python 实时抓取网页数据并进行 筛查 爬取数据的两种方法 : 方法 1 : 使用 requests.get() 方法,然后再解码,接着 调用 BeautifulSoup API 首先看 head ...

  6. 编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法

    这篇文章主要介绍了编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法,用到了Python的urllib和urllib2模块,需要的朋友可以参考下 抓取豆瓣电影TOP100 一.分析豆瓣top ...

  7. php禁止fidd抓包,PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析

    本文实例讲述了PHP配合fiddler抓包抓取微信指数小程序数据的实现方法.分享给大家供大家参考,具体如下: 这两天研究了下微信指数这个东西.要抓取呢,按照一般思路的话,那就是使用fiddler抓取手 ...

  8. php抓包设置参数_PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析

    搜索热词 本文实例讲述了PHP配合fiddler抓包抓取微信指数小程序数据的实现方法.分享给大家供大家参考,具体如下: 这两天研究了下微信指数这个东西.要抓取呢,按照一般思路的话,那就是使用fiddl ...

  9. php抓包分析工具下载,PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析...

    本文实例讲述了PHP配合fiddler抓包抓取微信指数小程序数据的实现方法.分享给大家供大家参考,具体如下: 这两天研究了下微信指数这个东西.要抓取呢,按照一般思路的话,那就是使用fiddler抓取手 ...

最新文章

  1. statTarget-基于QC样本的代谢组学数据校正
  2. 编写程序判断两个数组是否相等,然后编写一段类似的程序比较两个 vector。
  3. Linux系统下MySQL数据库的超级管理员root的密码忘记/忘记密码怎么办?
  4. java json和对象互相装换
  5. QQ自定义在线机型状态源码
  6. VS 2019 for Mac 8.1 正式版和 8.2 预览版发布
  7. HDU 1262 寻找素数对 模拟题
  8. 四格漫画《MUXing》——发版后……
  9. 如何禁用 macOS 更新通知?
  10. 如何将显示器连接到 Mac?
  11. 西门子S7系列PLC的主要种类及应用软件
  12. 基于JAVA幼儿园管理系统计算机毕业设计源码+系统+lw文档+部署
  13. Scrapy 爬取阳光热线问政平台存储为json 文件(使用 CrawlSpider)
  14. oracle 物化视图 on demand,【案例】Oracle物化视图 on prebuilt table故障常见解决办法...
  15. Android 10.0 SystemUI状态栏显示和隐藏自定义图标
  16. java集合举例_菜鸟程序员都能听得懂得Java集合介绍,快来收藏
  17. doe报告模板_DMAIC六西格玛项目报告模板.ppt
  18. 各种排序算法的总结和比较
  19. sql服务器虚拟内存不足,解决SQL Server虚拟内存不足情况
  20. 智慧水务系统-用科技守护城市供水安全

热门文章

  1. XMind8思维导图 破解版
  2. 如何在QII中直接调用ModelSim
  3. 华科计算机系统结构研究生就业,华中科技大学这四个“王牌”专业,堪比金字招牌,考上就是“香饽饽”...
  4. Android项目中创建马甲包
  5. html5定义页脚的标签,HTML中footer标签的使用方法
  6. 区块链+医疗:隐藏的百亿级市场?
  7. 弘辽科技:淘宝四月份有满减活动吗?淘宝每个月都会有满减活动吗
  8. Android8-Settings-BlueTooth
  9. HTML-day02会员登录案例
  10. 伯努利大数定理(揭示了频率和概率的关系)