2015-01-12 16 views
9

Tôi đang cố gắng tắt tiếng phát lại âm thanh cục bộ trong WebRTC, cụ thể hơn sau getUserMedia() và trước khi thực hiện bất kỳ kết nối máy chủ nào. Không có tùy chọn nào tôi tìm được; cái này từ Muaz Khan thất bại:WebRTC - Cách tắt tiếng đầu ra âm thanh cục bộ

var audioTracks = localMediaStream.getAudioTracks(); 
// if MediaStream has reference to microphone 
if (audioTracks[0]) { 
    audioTracks[0].enabled = false; 
} 

source

Kỹ thuật này cũng described here là như "làm việc", nhưng thất bại ở đây trên Chrome Version 39.0.2171.95 (64-bit) (Ubuntu 14.04).

phương pháp bổ sung mà được cho là hoạt động bằng cách sử dụng tăng khối lượng:

window.AudioContext = window.AudioContext || window.webkitAudioContext; 
var audioContext = new AudioContext(); 
var source = audioContext.createMediaStreamSource(clientStream); 
var volume = audioContext.createGain(); 
source.connect(volume); 
volume.connect(audioContext.destination); 
volume.gain.value = 0; //turn off the speakers 

tl; dr Tôi không muốn nghe đầu vào từ micro của tôi trên loa của tôi, nhưng tôi muốn xem video của tôi hình ảnh.

Cách giải quyết

workaround này được đề xuất bởi Benjamin Trent và nó tắt tiếng âm thanh bằng cách thiết lập thuộc tính tắt trên thẻ video như vậy:

document.getElementById("html5vid").muted = true; 

Also similar question, but its for video, so not the same

+0

Tại sao không đặt thẻ video html thành tắt tiếng? –

+1

Đó không phải là lý tưởng trong trường hợp của tôi, nhưng âm thanh "chỉ" bị tắt tiếng được hỗ trợ trên thẻ? –

+1

tắt tiếng thẻ video html tắt âm thanh được liên kết với video. Video sẽ tiếp tục phát và cả bản âm thanh và video trong luồng sẽ vẫn có thể truy cập được và có thể được gửi tới một người khác. Nghe có vẻ như, mặc dù, bạn tìm thấy một lỗi trong bản phát hành Chrome trên ubuntu mà cần phải được giải quyết. –

Trả lời

4

Thêm này như là trả lời bởi vì đó là câu trả lời đúng trên thực tế:

Nội dung bạn đã nêu là giải pháp được sử dụng bởi nhiều nền tảng Video WebRTC chính:

navigator.mediaDevices.getUserMedia({ video: true, audio: true }) 
    .then(stream => { 
    const vid = document.getElementById('html5vid'); 
    vid.autoplay = true; 
    vid.muted = true; 
    vid.srcObject = stream; 
    }); 
Các vấn đề liên quan