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 soap webservice 数据流传输,Android利用Soap读取WebService并且解析XML的DataSet数据...
一.Soap的结构 调用webService需要以下几个参数:命名空间.Soap Action.WSDL的URL.方法名.接下来以调用火车列车信息数据为例,webService地址为:webservi ...
- 【Android应用开发】分享一个录制 Android 屏幕 gif 格式的小技巧
因为写博客总是需要录制 Android 软件的演示效果, 研究了将近一小时找到了合适的工具; 录制流程 : -- 1. 录制 Android 手机屏幕内容 : 使用 拍大师 软件录制 Android ...
- android 录制mp4格式,Android系统如何录制屏幕(录制成mp4格式)
不管是教学,还是为了演示,如果能将Android手机(或平板)的屏幕录制成视频文件,那是一件非常酷的事(iOS8已经提供了这一功能,能通过OS X直接在Mac上录制iPad.iPhone的屏幕,win ...
- android手机录屏多少fps,如何在Android上以90fps或120fps的屏幕录制?
[5G资讯网]Android智能手机每天都在开拓新的领域,应用程序也在以相同的速度发展.最近增加的90赫兹显示屏为智能手机上的更好游戏铺平了道路.在OnePlus 7T推出之前,90Hz显示屏仅限于游 ...
- Android11灵敏度,Android 11即将上线!推出原生屏幕录制、触摸灵敏度等功能
对于喜欢国产手机的用户而言,最期待的莫过于Android 11上线了.大家通过外媒已经了解到Android 11的消息了,Android 11被传的神乎其神,Android 11真的有那么厉害吗? A ...
- android Q屏幕录制,设备音频录制无声
Android q 之后google添加了音频录制的api 在状态栏中可以开启录制功能. 使用中发现,选择音源为设备内部音频的时候,录制的视频无声. 内部音乐录制时android Q版本之后googl ...
- android屏幕录制 sd卡,Android屏幕录制并转换gif
原文发布于 我的博客Android猿 最近需要手机录制gif图片,找了好多软件也没理想的,最后确定了先通过命令screenrecord 录制MP4视频再转gif的方案.分享出来和大家交流,谁有更好的方 ...
- android放微信@功能,Android仿微信语音消息的录制和播放功能
一.简述 效果: 实现功能: 长按Button时改变Button显示文字,弹出Dialog(动态更新音量),动态生成录音文件,开始录音: 监听手指动作,规定区域.录音状态下手指划出规定区域取消录音,删 ...
- Android音视频开发:MediaRecorder录制视频
简介 安卓api提供了Camera类控制相机捕获图像,在api21以后,安卓也提供了Camera2,Camera变得过时了,但为了兼容性,这里还是使用Camera. 对于录制视频,可以使用MediaR ...
最新文章
- idea 弹出框中有乱码_IDEA如何自定义快捷键
- 上传附件每次都是上传中。_起标题头疼?每次卡在标题上 我都回顾这7种方法 创作灵感就来了...
- [poj] 2318 TOYS || 判断点在多边形内
- adguard拦截规则存在哪里_AdGuard 过滤规则分享
- docker-compose单机容器编排工具
- python代码覆盖率测试_unittest+coverage单元测试代码覆盖操作实例详解_python
- php字符串副职_PHP explode()函数
- 支持lodop的服务器,clodop云打印服务器未响应(lodop打印)
- vs2010开发activex(MFC)控件/ie插件(二)
- 这个 bug,硬是让我折腾了一周
- ajax回调函数的各个参数的理解
- 拿下多家主机厂数百万前装定点,禾赛科技激光雷达量产进程加速
- php 获取 星期几,php怎么获得星期几
- 关于java中的连等赋值问题(雷惊风)
- python re库,Python中的Re库简要总结
- c++生成随机数详解(包含可执行代码)
- 【0429】散列函数和消息鉴别
- Docker 搭建FastDFS文件系统
- 日常工作笔记0807
- 云虚拟主机连接mysql_云虚拟主机数据库使用
热门文章
- 谷歌 不支持 activeX插件
- 通过拖坠自动生成html页面,网页制造开端—html.ppt
- 走近历史,伦敦卫兵博物馆游玩攻略
- 做XRD有什么用途?
- php小程序 100行左右,微信小程序 左右分类滚动列表
- 用Javascript开发《三国志曹操传》-开源讲座(三)-情景对话中,仿打字机输出文字
- SpringMVC-CRUD与文件上传、文件下载
- My personal website:http://47.94.240.229:8080/yjh/project/
- Google浏览器自动翻译页面怎么设置?
- 414:request-urltoolong