Reactjs 如何停止获取与Redux一起使用的用户媒体
我正在用Redux使用Reactjs 如何停止获取与Redux一起使用的用户媒体,reactjs,redux,react-redux,getusermedia,Reactjs,Redux,React Redux,Getusermedia,我正在用Redux使用navigator.mediaDevices.getUserMedia(mediaConstraints),但我找不到停止媒体流的方法 我已经尝试在reducer和action中停止媒体流 在我看来,我试过了 case actionTypes.GET\u USER\u MEDIA\u CLOSE: 返回{ ……国家, 流:{ …state.stream, 活动:错误 } }; 同样在减速器中 export const getUserMediaClose=()=>{ 返回(
navigator.mediaDevices.getUserMedia(mediaConstraints)
,但我找不到停止媒体流的方法
我已经尝试在reducer和action中停止媒体流
在我看来,我试过了
case actionTypes.GET\u USER\u MEDIA\u CLOSE:
返回{
……国家,
流:{
…state.stream,
活动:错误
}
};
同样在减速器中
export const getUserMediaClose=()=>{
返回(调度,获取状态)=>{
let track=getState().videoCall.stream.getTracks()[0];
track.stop();
}
}
有没有办法用Redux停止用户相机流?可能会改变
export const getUserMediaClose = () => {
return (dispatch, getState) => {
let track = getState().videoCall.stream.getTracks()[0];
track.stop();
}
}
到
如果看不到更多代码,就很难知道(例如,您是如何存储流对象的,是有n个流对象还是只有1个?)。可能存在一种情况,即您对另一个未正确存储的流对象的引用。为了调试它,我将创建一个window.streams数组,每次创建一个新流时,我都会将它推送到该数组(可能带有时间戳或某个唯一ID),以确保您只有一个流,并且该流与存储中的流相同。您可以通过控制台输入“window.streams”进行调试,并可以检查对象 也许会改变
export const getUserMediaClose = () => {
return (dispatch, getState) => {
let track = getState().videoCall.stream.getTracks()[0];
track.stop();
}
}
到
如果看不到更多代码,就很难知道(例如,您是如何存储流对象的,是有n个流对象还是只有1个?)。可能存在一种情况,即您对另一个未正确存储的流对象的引用。为了调试它,我将创建一个window.streams数组,每次创建一个新流时,我都会将它推送到该数组(可能带有时间戳或某个唯一ID),以确保您只有一个流,并且该流与存储中的流相同。您可以通过控制台输入“window.streams”进行调试,并可以检查对象