技术标签: html5
简介:navigator(对象包含的属性描述了正在使用的浏览器)>mediaDevices(获得设备的摄像头或者mic)>getUserMedia(获得视频或者音频流 )
Example:
1.获取电脑设备摄像头和麦克风并且播放获得视频和音频流
结果:运行程序即可在浏览器中看到自己,听到自己的声音。
navigator.mediaDevices.getUserMedia({audio:true,video:true}).then(function(stream){
//获取到之后执行then()函数里的操作
var audio=document.querySelector("audio");//获取到html里面的audio标签(在html里面设置属性为autoplay即可播放)
var video=document.querySeletor("video");
audio.src=URL.createObjectURL(stream);//audio&video标签不可以直接播放MediaStream这种格式的数据>URL.createObjectURL(MediaStream)转换为URL格式的数据;
video.src=URL.createObjectURL(stream);
}).catch(function(error){
//发生错误时执行catch()函数里的操作
alert(error);
})
简介:Promise对象可以替代callback:不知道什么时候完成,但是想获得完成后的结果—>Promise里面执行或者拒绝的方法只能执行一次,执行完就会移除函数(有可能把Promise里面的参数移除了。所以在需要多次执行某个回调的时候就不能使用Promise)
1.执行>可以去做>有了然后>then()–>then(function(){然后发生的事情});
2.执行>不去做>发生了一些异常>catch()>catch(function(){异常及其理由});
3.使用方式:new Promise(function(){success,reject});3.1:创建Promise对象的时候第一个参数(函数):成功的函数>如果调用第一个参数(函数)就会执行then()里面的回调函数;
3.2:创建Promise对象的时候第二个参数(函数):拒绝的函数>如果调用第二个参数(函数)就会执行catch()里面的回调函数;
Example:
2.测试易源里面的QQ音乐接口
结果:运行程序会在浏览器中弹出一个弹出框:showapi_appid字段必传,因为我们在传url的时候没有拼接参数,所以会报错。
function loadData(url){
return new Promise(function(success,reject){
var request=new XMLHttpRequest();//Ajax异步请求
request.open("GET",url);
request.onload=function(){
console.log(this.response);
var obj=JSON.parse(this.response);
obj.showapi_res_code==0?success(obj.showapi_res_body):reject(obj.showapi_res_error);//判断是否获取成功,将obj.showapi_res_body作为形参传递success函数,将obj.showapi_res_error作为参数传递给reject函数
};
requset.send();
});
}
loadData("http://route.showapi.com/213-1").then(function(result){
document.write(result);
}).catch(function(error){
alert(error);
});
简介:MediaRecorder既可以录制音频也可以录制视频,具体是录视频还是音频是根据传入的MediaStream决定的,在创建的时候我们需要传入媒体流:new MediaRecorder(媒体流对象)
Example:
3.录制音频流,并且在录制过程中可以监听录制音频,同时可将录制的音频下载到本地
结果:点击录制按钮即可录制同时听到录制声音,点击停止录制完毕,声音消失,同时讲所录制的音频下载到本地,格式为webm,可以使用浏览器播放。
var promise=navigator.mediaDevices.getUserMedia({audio:true});
promise.then(function(stream){
var audio=document.querySelector("audio");//获取到html里面的audio标签(在html里面设置不用设置属性为autoplay)
audio.src=URL.createObjectURL(stream);
var recorder=new MediaRecorder(stream);
var recorderControl=document.querySelector(".recorderControl");//获取到html中的录制按钮
recorderControl.onclick=function(){
//按钮点击控制音频播放和录制
this.textContent==="录制"?audio.play():audio.pause();
this.textContent==="录制"?recorder.start():recorder.stop();
this.textContent=this.textContent==="录制"?"停止":"录制";
};
var buffer=null;
recorder.ondataavailable=function(event){
//获得有效数据是调用的回调函数
console.log(event.data);
buffer=event.data;//用buffer来接收一个blob类型的数据
};
var downloadLink=document.querySelector(".downloadLink");//获取<a download="media" class="downloadLink">下载</a>
recorder.onstop=function(){
//数据获取完调用的回调函数
var url=URL.createObjectURL(buffer);
downloadLink.href=url;//下载的连接也就是获取的数据的url格式
downloadLink.click();//数据获取完即刻下载
buffer=null;//清空buffer,释放内存
};
}).catch(function(error){
console.log(error);
});
10折交叉验证我们构建一个分类器,输入为运动员的身高、体重,输出为其从事的体育项目-体操、田径或篮球。一旦构建了分类器,我们就可能有兴趣回答类似下述的问题:1. 该分类器的精确率怎么样?2. 该分类器到底有多好?3. 和其他分类器相比较,该分类器表现如何?我们把每个数据集分成两个子集 - 一个用于构建分类器,该数据集称为训练集(traini...
课程介绍模型的设计是整个深度学习领域的通用基础,不管是从头设计自己的神经网络,还是对已有模型进行优化获得更高的任务指标,更快的运行速度,获得更小的模型体积,都需要掌握各类网络的设计技巧,是..._经典模型的网络宽度设计思想
概述javaScript -- 目录最火热的语言,到处发着光芒, html5, hybrid apps, node.js, full-stack 等等。javaScript 从一个仅仅在浏览器上面的一个玩具语言,一转眼演变成无所不能神一般的存在。但是,由于天生存在着一点戏剧性(javaScript 据传说是在飞机上几天时间设计出来的)...
maven依赖基础一个简单的依赖com.alibaba.sharetest1.4依赖库命名规则:${groupId.part1}/${groupId.part2}/${version}例:com/alibaba/share/1.4依赖库文件命名规则:${ar
已经封装位 api , 直接调用就可以。_百度地图区域高亮
代理服务可简单的分为正向代理和反向代理: 正向代理: 用于代理内部网络对Internet的连接请求(如×××/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上,然后由代理服务器去访问Web服务器, 并将Web服务器的Response回传给客户端: 反向代理: 与正向代理相反,如果局域网向Internet提供资源,并让...
http://www.cnblogs.com/xiaotie/archive/2010/05/23/1741946.html简单、直观的实现优于复杂、难懂的实现,最近开发扑克识别过程的总结 最近开发了款通用的扑克识别程序,本文谈下心得。最开始是准备使用Shape Context或Zernike矩来识别的,写出了Shape Context,发现识别率达不到理想状态。接着准..._简单、直观的实现优于复杂、难懂的实现,最近开发扑克识别过程的总结
7-42 整除光棍 (20分)这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如,111111就可以被13整除。 现在,你的程序要读入一个整数x,这个整数一定是奇数并且不以5结尾。然后,经过计算,输出两个数字:第一个数字s,表示x乘以s是一个光棍,第二个数字n是这个光棍的位数。这样的解当然不是唯..._7-42 小明的计算题c++
启动数据库,默认启动到open状态[root@raw1 bin]# ./srvctl start database -draw2)指定启动状态[root@raw1 bin]# ./srvctl start database -draw -i raw1 -o mount[root@raw1 bin]# ./srvctl start database -draw -i raw1 -o nomount3)关闭对象,并指定关闭方式[root@raw1 bin]# ./srvctl stop_crsctl config asm
为什么要学习PHP?到底什么是PHP?PHP可以做什么?相信这样的问题困扰着很多的人,在我没工作之前,都没有听说过PHP,自从工作后,慢慢接触到代码,慢慢知道什么是PHP。PHP是做网站一种语言,很多工程师都使用PHP语言来编写代码,其应用范围很广。如果我是一个前端工程师,我可以用JavaScript来实现程序编写。但JavaScript的能力是有限的,JavaScript通常运行在浏览器(客户端..._php学的是什么
源代码:#include<stdio.h>int main(){ int m,n; int gcd(int m,int n); printf("请分别输入非负两个整数m、n:\n"); if(m<=0||n<=0) printf("请输入非零整数!"); else { scanf("%d",&m); scanf("%d",&n); gcd(m,n); }}int gcd(int o,int p) /******欧几里得算法*_求两个整数的最大公因数程序
OracleLinux-R6-U2上安装Oracle10g 因为对Oracle的linux比较好奇,所以尝试安装了一下。基本步骤与“在RHEL6.1上安装Oracle 数据库10g”相同。这里只简单记录一下安装中碰到的问题,就不再上图了。 虚拟机版本:VMware Workstation 8.0.2 build-591240Linux:OracleLinux-R6-U2