2015-04-29 35 views
13

Tôi hiện đang cố gắng để có được kênh âm thanh rõ ràng nhất có thể qua webrtc. Qua mediaconstraints getUserMedia phản đối, tôi đã thiết lập các tùy chọn sau:WebRTC - tắt tất cả xử lý âm thanh

constraints: { 
     audio: { 
      mandatory: { 
       echoCancellation: false, 
       googEchoCancellation: false, 
       googAutoGainControl: false, 
       googAutoGainControl2: false, 
       googNoiseSuppression: false, 
       googHighpassFilter: false, 
       googTypingNoiseDetection: false, 
       //googAudioMirroring: false // For some reason setting googAudioMirroring causes a navigator.getUserMedia error: NavigatorUserMediaError 
      } 
     }, 
     video: false 
    }, 

này cải thiện đáng kể chất lượng âm thanh, nhưng vẫn có vẻ là âm thanh hiện xử lý gây ra những cắt xén của âm thanh dưới dạng tần số cao tiếng ồn với một số mẫu thử.

Có một cờ Chrome --use-file-for-fake-audio-capture như được mô tả tại http://peter.sh/experiments/chromium-command-line-switches/#use-file-for-fake-audio-capture cho phép nhập thông qua tệp để thử nghiệm. Như đã đề cập trong phần mô tả của lá cờ, tất cả xử lý âm thanh phải được tắt hoặc âm thanh sẽ bị bóp méo - vì vậy có vẻ như là các tùy chọn bổ sung cho mục đích này.

Tôi cũng đã thử các cờ Chrome --disable-audio-track-processing --audio-buffer-size=16 --enable-exclusive-audio, nhưng vẫn có vẻ như có một số xử lý âm thanh.

Có cách nào để vô hiệu hóa xử lý âm thanh hiện tại (tốt nhất là thông qua JS API) không?

+0

Điều này có xảy ra cục bộ hoặc trong kết nối ngang hàng không? Nó có thể là Chrome đang thay đổi bitrate động cho Opus (điều này sẽ chỉ là trường hợp nếu bạn nhận thấy điều này trong một kết nối). –

+0

Qua kết nối ngang hàng. Tôi nghĩ rằng đó là một số loại tối ưu hóa âm thanh bằng giọng nói. Luôn luôn đá với sau khi x số lượng thời gian một mẫu đã được chơi. – wowpatrick

+0

Tôi đọc nó để tôi có thể nói chắc chắn rằng tốc độ bit được điều chỉnh theo băng thông có sẵn. – Robert

Trả lời

1

Tôi muốn cược rằng hành vi bitrate (mặc định) của codec opus gây ra một số nén hoặc điều chỉnh. Bạn có thể mang theo cách thủ công đề nghị SDP để sử dụng CBR (bitrate không đổi) thay vì VBR (tốc độ bit biến). Khi bạn nhận được lời đề nghị SDP từ trình duyệt, thay đổi dòng:

a=fmtp:111 minptime=10; useinbandfec=1 

tới:

a=fmtp:111 minptime=10; cbr=1 

Lưu ý rằng tôi là cả hai thêmcbr=1loại bỏuseinbandfec=1. Tôi không tích cực rằng giảm useinbandfec là cần thiết, nhưng có vẻ như trong FEC trong băng tần (sửa lỗi chuyển tiếp) gây ra điều chỉnh nén mà bạn muốn tránh là tốt.

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