在先前的堆栈溢出问题上,我发现了以下代码:
<script>
// this is to store a reference to the input so we can kill it later
var liveSource;
// creates an audiocontext and hooks up the audio input
function connectAudioInToSpeakers(){
var context = new webkitAudioContext();
navigator.webkitGetUserMedia({audio: true}, function(stream) {
console.log("Connected live audio input");
liveSource = context.createMediaStreamSource(stream);
liveSource.connect(context.destination);
console.log(liveSource);
});
}
// disconnects the audio input
function makeItStop(){
console.log("killing audio!");
liveSource.disconnect();
}
// run this when the page loads
connectAudioInToSpeakers();
</script>
Run Code Online (Sandbox Code Playgroud)
它从用户的麦克风获取音频并通过扬声器播放.我想要的是输入的水平(幅度)(例如,如果发生剪辑,我可以显示红色警告,或告诉用户他们需要说出来).在上面的代码中,我如何实际获取原始数据?
例如,如何将实际数字记录到控制台?我猜它都存储在liveSoure中?
我不需要任何聪明的画布动画等,只需要一个数字,告诉我输入的声音有多大.这个比较简单吗?如果是这样,它是如何完成的?
谢谢
我在使用 Safari(桌面和移动设备)创建 AudioContext 时遇到了麻烦。似乎即使在用户交互时创建,它仍然被暂停。
我的代码:
<button onclick="test()">Test</button>
Run Code Online (Sandbox Code Playgroud)
const test = () => {
window.AudioContext = window.AudioContext || window.webkitAudioContext;
audioContext = new AudioContext();
console.log(audioContext.state); // Suspended
}
Run Code Online (Sandbox Code Playgroud)
这应该是一个最低限度的工作示例,对吗?这里有什么问题?
safari mobile-safari webkitaudiocontext audiocontext web-audio-api
我正在尝试为HTML5音频创建图形均衡器类型可视化 - 此时仅使用webkitAudioContext进行Chrome.
当我尝试改变音频源即播放不同的歌曲时,我发现了异常和不可预测的行为.我读到某个地方,我应该等到音频上的"canplay"事件被触发,然后再连接到上下文/分析器:
var context, sourceNode, analyser, javascriptNode, audio;
var ctx = $("#songcanvas").get()[0].getContext("2d");
function loadSong(url) {
if (audio!=undefined) { audio.pause(); }
audio = new Audio();
audio.src = url;
audio.addEventListener("canplay", function(e) {
setupAudioNodes();
}, false);
}
function setupAudioNodes() {
context = new webkitAudioContext();
javascriptNode = context.createJavaScriptNode(2048, 1, 1);
javascriptNode.connect(context.destination);
analyser = context.createAnalyser();
analyser.smoothingTimeConstant = 0.3;
analyser.fftSize = 512;
sourceNode = context.createMediaElementSource(audio);
sourceNode.connect(analyser);
analyser.connect(javascriptNode);
sourceNode.connect(context.destination);
javascriptNode.onaudioprocess = function() {
var array = new Uint8Array(analyser.frequencyBinCount);
analyser.getByteFrequencyData(array);
ctx.clearRect(0, 0, 1000, 325);
ctx.fillStyle="rgba(32, 45, …Run Code Online (Sandbox Code Playgroud) 我在我的项目中使用网络音频 api。有没有办法记录发送到 webkitAudioContext.destination 的音频数据?.wav 文件正在我的浏览器中播放,因此应该有某种方法将该数据存储到 (.wav) 文件中。我知道这是可能的,但还没有找到任何解决方案:( recorder.js 可以帮助我,但到目前为止我发现它只是记录麦克风实时输入,是否可以在帮助下记录我的音频(.wav 文件) recorder.js 的吗?请帮忙
我正在使用此示例进行录制https://github.com/mattdiamond/Recorderjs
audio-recording html5-audio webkitaudiocontext web-audio-api