Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从输入设备获取MediaStream_Javascript_Html_Ecmascript 6_Getusermedia - Fatal编程技术网

Javascript 从输入设备获取MediaStream

Javascript 从输入设备获取MediaStream,javascript,html,ecmascript-6,getusermedia,Javascript,Html,Ecmascript 6,Getusermedia,正在寻找使用媒体设备的经验: 我正在高速缓存上录制并从麦克风源播放;Firefox和Chrome使用HTML5 这就是我到目前为止所做的: var constraints = {audio: true, video: false}; var promise = navigator.mediaDevices.getUserMedia(constraints); 我一直在查MDN的官方文件 但与将音频从约束存储到缓存无关 Stackoverflow之前没有提出过此类问题;我想知道有没有可能 谢谢

正在寻找使用媒体设备的经验:

我正在高速缓存上录制并从麦克风源播放;Firefox和Chrome使用HTML5

这就是我到目前为止所做的:

var constraints = {audio: true, video: false};

var promise = navigator.mediaDevices.getUserMedia(constraints);
我一直在查MDN的官方文件 但与将音频从约束存储到缓存无关

Stackoverflow之前没有提出过此类问题;我想知道有没有可能

谢谢。

您只需使用即可完成此任务

为了只录制视频+音频gUM流中的音频,您需要从gUM的audioTrack创建一个新的媒体流:

//为了简洁起见使用异步
异步函数doit(){
//首先请求麦克风和摄像头
const gUMStream=wait navigator.mediaDevices.getUserMedia({video:true,audio:true});
//仅使用audioTrack创建新的媒体流
const audioStream=新媒体流(gUMStream.getAudioTracks());
//保存记录的数据
常量块=[];
const recorder=新媒体记录器(音频流);
recorder.ondataavailable=e=>chunks.push(e.data);
recorder.start();
//当用户决定停止时
stop_btn.onclick=e=>{
录音机。停止();
//关闭所有曲目以释放设备
gUMStream.getTracks().forEach(t=>t.stop());
audioStream.getTracks().forEach(t=>t.stop());
};
//将所有保存的数据导出为一个Blob
recorder.onstop=e=>exportMedia(新Blob(块));
//播放当前的口香糖流
vid.srcObject=gUMStream;
stop_btn.disabled=错误;
}
函数导出媒体(blob){
//blob是您录制的音频文件,您可以使用它执行任何操作
const aud=新音频(URL.createObjectURL(blob));
aud.controls=真;
文件.正文.附件(澳元);
文件.body.removeChild(vid);
}
doit()
。然后(e=>console.log(“录制”))
.catch(e=>{
控制台错误(e);
console.log('您可能希望从JSFIDLE尝试:https://jsfiddle.net/5s2zabb2/');
});

停止
您可以简单地将用于此任务

为了只录制视频+音频gUM流中的音频,您需要从gUM的audioTrack创建一个新的媒体流:

//为了简洁起见使用异步
异步函数doit(){
//首先请求麦克风和摄像头
const gUMStream=wait navigator.mediaDevices.getUserMedia({video:true,audio:true});
//仅使用audioTrack创建新的媒体流
const audioStream=新媒体流(gUMStream.getAudioTracks());
//保存记录的数据
常量块=[];
const recorder=新媒体记录器(音频流);
recorder.ondataavailable=e=>chunks.push(e.data);
recorder.start();
//当用户决定停止时
stop_btn.onclick=e=>{
录音机。停止();
//关闭所有曲目以释放设备
gUMStream.getTracks().forEach(t=>t.stop());
audioStream.getTracks().forEach(t=>t.stop());
};
//将所有保存的数据导出为一个Blob
recorder.onstop=e=>exportMedia(新Blob(块));
//播放当前的口香糖流
vid.srcObject=gUMStream;
stop_btn.disabled=错误;
}
函数导出媒体(blob){
//blob是您录制的音频文件,您可以使用它执行任何操作
const aud=新音频(URL.createObjectURL(blob));
aud.controls=真;
文件.正文.附件(澳元);
文件.body.removeChild(vid);
}
doit()
。然后(e=>console.log(“录制”))
.catch(e=>{
控制台错误(e);
console.log('您可能希望从JSFIDLE尝试:https://jsfiddle.net/5s2zabb2/');
});


停止
请详细说明您正在尝试执行的操作。把它藏在哪里?为了什么?我正在尝试从麦克风录制10秒,存储它们,并将它们播放给用户。问题中的代码在哪里尝试录制音频输入?请详细说明您尝试执行的操作。把它藏在哪里?为了什么?我试着从麦克风录制10秒,存储它们,并将它们播放给用户。问题中的代码在哪里尝试录制音频输入?