android实时抓取屏幕文字,Android录制屏幕的实现方法
原文: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录制屏幕的实现方法相关推荐
- 转载自android 开发--抓取网页解析网页内容的若干方法(网络爬虫)(正则表达式)
转载自http://blog.csdn.net/sac761/article/details/48379173 android 开发--抓取网页解析网页内容的若干方法(网络爬虫)(正则表达式) 标签: ...
- [转] Android实时抓包分析 : 善用adb调试桥
Android实时抓包分析 : 善用adb调试桥 谈到android网络抓包,很多人都能想到牛逼轰轰的神器tcpdump.方法就是在android机器上面安装tcpdump,然后通过-w参数把抓包记录 ...
- RockChip Android平台抓取android trace的windows环境搭建
RockChip Android平台抓取android trace的windows环境搭建的步骤 安装python2.7.9 下载链接: https://www.python.org/download ...
- android log抓取方法,Android系统之Android抓取各种log的方法
Android系统之Android抓取各种log的方法 2018年11月25日 | 萬仟网移动技术 | 我要评论 android之android抓取各种log的方法 1.logcat (四类log b ...
- python 实时抓取网页数据并进行 筛查
python 实时抓取网页数据并进行 筛查 爬取数据的两种方法 : 方法 1 : 使用 requests.get() 方法,然后再解码,接着 调用 BeautifulSoup API 首先看 head ...
- 编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法
这篇文章主要介绍了编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法,用到了Python的urllib和urllib2模块,需要的朋友可以参考下 抓取豆瓣电影TOP100 一.分析豆瓣top ...
- php禁止fidd抓包,PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
本文实例讲述了PHP配合fiddler抓包抓取微信指数小程序数据的实现方法.分享给大家供大家参考,具体如下: 这两天研究了下微信指数这个东西.要抓取呢,按照一般思路的话,那就是使用fiddler抓取手 ...
- php抓包设置参数_PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
搜索热词 本文实例讲述了PHP配合fiddler抓包抓取微信指数小程序数据的实现方法.分享给大家供大家参考,具体如下: 这两天研究了下微信指数这个东西.要抓取呢,按照一般思路的话,那就是使用fiddl ...
- php抓包分析工具下载,PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析...
本文实例讲述了PHP配合fiddler抓包抓取微信指数小程序数据的实现方法.分享给大家供大家参考,具体如下: 这两天研究了下微信指数这个东西.要抓取呢,按照一般思路的话,那就是使用fiddler抓取手 ...
最新文章
- statTarget-基于QC样本的代谢组学数据校正
- 编写程序判断两个数组是否相等,然后编写一段类似的程序比较两个 vector。
- Linux系统下MySQL数据库的超级管理员root的密码忘记/忘记密码怎么办?
- java json和对象互相装换
- QQ自定义在线机型状态源码
- VS 2019 for Mac 8.1 正式版和 8.2 预览版发布
- HDU 1262 寻找素数对 模拟题
- 四格漫画《MUXing》——发版后……
- 如何禁用 macOS 更新通知?
- 如何将显示器连接到 Mac?
- 西门子S7系列PLC的主要种类及应用软件
- 基于JAVA幼儿园管理系统计算机毕业设计源码+系统+lw文档+部署
- Scrapy 爬取阳光热线问政平台存储为json 文件(使用 CrawlSpider)
- oracle 物化视图 on demand,【案例】Oracle物化视图 on prebuilt table故障常见解决办法...
- Android 10.0 SystemUI状态栏显示和隐藏自定义图标
- java集合举例_菜鸟程序员都能听得懂得Java集合介绍,快来收藏
- doe报告模板_DMAIC六西格玛项目报告模板.ppt
- 各种排序算法的总结和比较
- sql服务器虚拟内存不足,解决SQL Server虚拟内存不足情况
- 智慧水务系统-用科技守护城市供水安全
热门文章
- XMind8思维导图 破解版
- 如何在QII中直接调用ModelSim
- 华科计算机系统结构研究生就业,华中科技大学这四个“王牌”专业,堪比金字招牌,考上就是“香饽饽”...
- Android项目中创建马甲包
- html5定义页脚的标签,HTML中footer标签的使用方法
- 区块链+医疗:隐藏的百亿级市场?
- 弘辽科技:淘宝四月份有满减活动吗?淘宝每个月都会有满减活动吗
- Android8-Settings-BlueTooth
- HTML-day02会员登录案例
- 伯努利大数定理(揭示了频率和概率的关系)