2016-12-24 14 views
5

Bằng cách sử dụng những điều sau, chúng tôi có thể nhắc người dùng chọn thiết bị đầu vào phương tiện ưa thích của họ với ràng buộc nguồn âm thanh và video (hiện chỉ quan tâm đến bộ phận hỗ trợ của Chrome).Kiểm tra xem micrô đã chọn có bị tắt tiếng hay không với âm thanh web api

navigator.mediaDevices.getUserMedia({audio: true}) 
    .then((stream) => { 
    console.log(stream); 
    }); 

Bất cứ ai cũng biết nếu có API tiếp xúc để phát hiện xem thiết bị đầu vào do người dùng chọn có bị tắt tiếng hay không? Thiết bị đầu vào sẽ là micrô tích hợp, micrô bên ngoài hoặc micrô được xác định phần mềm hiển thị trong hệ thống dưới dạng thiết bị phần cứng.

Trả lời

3

Bạn có thể kiểm tra tài sản .mutedBoolean giá trị của mỗi MediaStreamTrack bằng cách lặp lại các mảng trả về bởi MediaStream.getAudioTracks() phương pháp, hoặc bằng cách chọn MediaStreamTrack bởi chỉ số từ mảng.

navigator.mediaDevices.getUserMedia({audio: true}) 
    .then(stream => { 
    console.log("MediaStreamTrack muted:", stream.getAudioTracks()[0].muted); 
    }) 
    .catch(err => console.log(err)); 

Bạn cũng có thể sử dụng muteunmuteMediaStreamTrack sự kiện.

+1

Điều này dường như không phản ánh trạng thái tắt tiếng của micrô trong Chrome 57 (Windows 10), ngay cả khi chọn micrô không phải 'Default' cụ thể bằng 'deviceId'. –

+1

@ChrisHunt Thuộc tính 'volume' của' contraints' cũng có thể được thiết lập. Xem [Khả năng, ràng buộc và cài đặt] (https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack/applyConstraints). Micrô bị tắt tiếng như thế nào? Bạn có thể mô tả cách sao chép trường hợp không? Bạn đã đính kèm các sự kiện 'onmute',' onunmute' vào 'MediaStreamTrack' chưa? – guest271314

+2

Micrô được bật nhận dạng đầu tiên trong Khay> Trình đơn ngữ cảnh biểu tượng âm thanh> Thiết bị ghi> Âm thanh. Sử dụng 'navigator.mediaDevices.enumerateDevices()' để xác định 'deviceId' cho thiết bị có cùng nhãn. Sử dụng 'navigator.mediaDevices.getUserMedia ({audio: {deviceId: '...'}})' để chọn thiết bị. Xác minh 'track = stream.getTracks() [0]' khớp với thiết bị và kiểm tra 'track.muted'. Tắt tiếng micrô qua tab "Cấp độ" cho thiết bị cụ thể trong hộp thoại "Thiết bị ghi". Kiểm tra 'track.muted' và thấy rằng nó không thay đổi. –

Các vấn đề liên quan