gpt4 book ai didi

javascript - 在使用 webrtc 流式传输之前放大 MediaStreamTrack(音频)

转载 作者:行者123 更新时间:2023-11-30 15:33:25 24 4
gpt4 key购买 nike

我使用 getAudioTracks() 从视频元素中获取音频。然后我需要放大(增加音量)这个 audioTrack,然后用 addTrack() 将它添加到 Canvas 上,并用 webrtc 流走。

有没有办法在客户端使用 javascript 执行此操作?

最佳答案

我制定了一个解决方案。对于任何需要同样东西的人:

            // supposing we have the getUserMedia stream and a canvas
// we want to stream the canvas content and the
// amplified audio from user's microphone

var s = canvas.captureStream();

var context = new AudioContext();

var gainNode = context.createGain();
gainNode.gain.value = 1;

// compress to avoid clipping
var compressor = context.createDynamicsCompressor();
compressor.threshold.value = -30;
compressor.knee.value = 40;
compressor.ratio.value = 4;
compressor.reduction.value = -10;
compressor.attack.value = 0;
compressor.release.value = 0.25;

var destination = context.createMediaStreamDestination();

var input = context.createMediaStreamSource(stream);

input.connect(compressor);
compressor.connect(gainNode);
gainNode.connect( destination);

var audioTracks = destination.stream.getAudioTracks();

// use a slider to alter the value of amplification dynamically
var rangeElement = document.getElementById("amplifierSlider");
rangeElement .addEventListener("input", function() {
gainNode.gain.value = parseFloat(rangeElement .value);
}, false);

for (var i=0; i < audioTracks.length; i++) {
s.addTrack(audioTracks[i]);
}

// stream the canvas with the added audio tracks

https://jsfiddle.net/Thanos_Sar/Lt00nr8g/

关于javascript - 在使用 webrtc 流式传输之前放大 MediaStreamTrack(音频),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41933313/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com