微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

插入或拔出耳机时如何更改音频设备

如何解决插入或拔出耳机时如何更改音频设备

我想通过WebRTC项目中的用户选择来更改音频输出设备。 例子

  1. 内部
  2. 扬声器

我使用了以下代码

// 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])

将基于状态值显示弹出窗口。当我插入或拔下USB麦克风时,此方法有效。但是插入或拔下3.5毫米耳机时无法使用。代码中有什么错误

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。