我想将 WAV 或 MP3 输入到 puppeteer 作为麦克风,但是在无头模式下应用程序被静音,所以我想知道是否有一种方法可以直接将输入输入到浏览器中。
我还想知道是否可以在无头状态下从浏览器获取音频源,和/或录制音频并将其放在文件夹中。
我最终使用了这个解决方案。首先,我启用了 Chromium 的一些选项:
const browser = await puppeteer.launch({
args: [
'--use-fake-ui-for-media-stream',
],
ignoreDefaultArgs: ['--mute-audio'],
});
如果 Chromium 已打开,请记住将其关闭。
我创建了一个<audio>
元素与src
设置为我要输入的文件。我也超越了navigator.mediaDevices.getUserMedia
,这样它就会返回一个Promise
使用与音频文件相同的流,而不是来自麦克风。
const page = await browser.newPage();
await page.goto('http://example.com', {waitUntil: 'load'});
await page.evaluate(() => {
var audio = document.createElement("audio");
audio.setAttribute("src", "http://example.com/example.mp3");
audio.setAttribute("crossorigin", "anonymous");
audio.setAttribute("controls", "");
audio.onplay = function() {
var stream = audio.captureStream();
navigator.mediaDevices.getUserMedia = async function() {
return stream;
};
});
document.querySelector("body").appendChild(audio);
});
现在每当网站的代码调用时navigator.mediaDevices.getUserMedia
,它将从文件中获取音频流。 (您需要先确保音频正在播放。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)