Reactjs 如何在插入或拔出耳机时更换音频设备
我想在WebRTC项目中通过用户选择更改音频输出设备。 范例Reactjs 如何在插入或拔出耳机时更换音频设备,reactjs,webrtc,Reactjs,Webrtc,我想在WebRTC项目中通过用户选择更改音频输出设备。 范例 内部的 演讲者 我使用了以下代码 // Audio Inputs const [audioInputschanged, setAudioInputschanged] = useState(false); const [selectedAudioOutput, setSelectedAudioOutput] = useState(null); const [audioInputs, setAudioInputs] = use
// Audio Inputs
const [audioInputschanged, setAudioInputschanged] = useState(false);
const [selectedAudioOutput, setSelectedAudioOutput] = useState(null);
const [audioInputs, setAudioInputs] = useState([]);
navigator.mediaDevices.ondevicechange = (event) => {
setAudioInputschanged(true);
navigator.mediaDevices.enumerateDevices()
.then((devices) => {
setAudioInputs(devices);
devices.forEach((device) => {
device.kind === 'audiooutput' && console.log(device.deviceId);
});
});
}
const closeAudioPopup = () => setAudioInputschanged(false);
const handleSelectedAudio = (deviceId) => {
otPublisher && otPublisher.current.state.publisher.setAudioSource(deviceId);
closeAudioPopup();
}
const renderAudioDevices = () => {
return audioInputs.map((device) => {
const { kind, deviceId, label } = device;
return kind === 'audiooutput' && (
<li
key={deviceId}
onClick={() => setSelectedAudioOutput(deviceId)}
>
{label}
</li>
);
});
}
useEffect(() => {
handleSelectedAudio(selectedAudioOutput);
}, [selectedAudioOutput])
//音频输入
const[audioInputschanged,setAudioInputschanged]=使用状态(false);
常量[selectedAudioOutput,setSelectedAudioOutput]=useState(null);
常量[audioInputs,setAudioInputs]=useState([]);
navigator.mediaDevices.ondevicechange=(事件)=>{
setAudioInputschanged(真);
navigator.mediaDevices.enumerateDevices()
。然后((设备)=>{
设置音频输入(设备);
devices.forEach((设备)=>{
device.kind=='audiooutput'&&console.log(device.deviceId);
});
});
}
const closeAudioPopup=()=>setAudioInputschanged(false);
const handleSelectedAudio=(设备ID)=>{
otPublisher&&otPublisher.current.state.publisher.setAudioSource(deviceId);
closeAudioPopup();
}
const renderAudioDevices=()=>{
返回音频输入。映射((设备)=>{
const{kind,deviceId,label}=设备;
返回种类=='audiooutput'&&(
setSelectedAudioOutput(deviceId)}
>
{label}
);
});
}
useffect(()=>{
无手柄选择音频(选择音频输出);
},[selectedAudioOutput])
将根据状态值显示弹出窗口。当我插上或拔下USB麦克风时,这项功能就起作用了。但在插入或拔出3.5毫米耳机时不工作。代码中的错误是什么