问题描述
我正在尝试让我的峰值表从麦克风音量中获取上下文。已经在使用“yt-recorder.js”中的 getusermedia
。我需要我的峰值计使用来自用户麦克风的相同 getusermedia
。如果这是不可能的,如果你们告诉我,我会很高兴。
谢谢大家!
这是 myrecorder 脚本:
jQuery(document).ready(function () {
var $ = jQuery;
var myRecorder = {
objects: {
context: null,stream: null,recorder: null
},init: function () {
if (null === myRecorder.objects.context) {
myRecorder.objects.context = new (
window.AudioContext || window.webkitaudiocontext
);
}
},start: function () {
var options = {audio: true,video: false};
navigator.mediaDevices.getUserMedia(options).then(function (stream) {
myRecorder.objects.stream = stream;
myRecorder.objects.recorder = new Recorder(
myRecorder.objects.context.createmediastreamsource(stream),{numChannels: 1}
);
myRecorder.objects.recorder.record();
}).catch(function (err) {});
},stop: function (listObject) {
if (null !== myRecorder.objects.stream) {
myRecorder.objects.stream.getAudioTracks()[0].stop();
}
if (null !== myRecorder.objects.recorder) {
myRecorder.objects.recorder.stop();
// Validate object
if (null !== listObject
&& 'object' === typeof listObject
&& listObject.length > 0) {
// Export the WAV file
myRecorder.objects.recorder.exportWAV(function (blob) {
var url = (window.URL || window.webkitURL)
.createObjectURL(blob);
// Prepare the playback
var audioObject = $('<audio controls></audio>')
.attr('src',url);
// Prepare the download link
var downloadobject = $('<a>▼</a>')
.attr('href',url)
.attr('download',new Date().toUTCString() + '.wav');
// Wrap everything in a row
var holderObject = $('<div class="row"></div>')
.append(audioObject)
.append(downloadobject);
// Append to the list
listObject.append(holderObject);
});
}
}
}
};
// Prepare the recordings list
var listObject = $('[data-role="recordings"]');
// Prepare the record button
$('[data-role="controls"] > button').click(function () {
// Initialize the recorder
myRecorder.init();
// Get the button state
var buttonState = !!$(this).attr('data-recording');
// Toggle
if (!buttonState) {
$(this).attr('data-recording','true');
myRecorder.start();
} else {
$(this).attr('data-recording','');
myRecorder.stop(listObject);
}
});
});
$(document).ready(function () {
$("#reloadrecorder").on("click",function () {
location.reload();
});
});
<head>
<link rel="stylesheet" href="https://roughstudio.co.il/wp-content/plugins/matt-diamond-recorder/roughrecorder.css">
</head>
<body>
<div class="holder">
<div data-role="controls">
<button>recorder</button>
</div>
<div id="demo2-peak-meter" style="z-index:10;position:fixed;bottom:0;direction:ltr;width:100%; height: 5em;"></div>
</div>
<audio style="width:100%;" id="demo2-audio" preload="Metadata" controls="controls">
<source src="https://roughstudio.co.il/wp-content/uploads/2020/06/שיר-עסקי-ברזילי-מרכז-רפואי-אקרדיטציה.mp3" type="audio/mpeg" />
</audio>
</body>
这是我的峰值仪表脚本:
function initDemo(meterId,audioId,options,ctx) {
var meterElement = document.getElementById(meterId);
var audioElement = document.getElementById(audioId);
var sourceNode = ctx.createMediaElementSource(audioElement);
sourceNode.connect(ctx.destination);
var meterNode = webAudioPeakMeter.createMeterNode(sourceNode,ctx);
webAudioPeakMeter.createMeter(meterElement,meterNode,options);
audioElement.addEventListener('play',function () {
ctx.resume();
});
}
var audioCtx = new (window.AudioContext || window.webkitaudiocontext)();
initDemo('demo2-peak-meter','demo2-audio',{ backgroundColor: '#000' },audioCtx);
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)