【问题标题】:Streaming a page's audio with puppeteer使用 puppeteer 流式传输页面的音频
【发布时间】:2019-09-03 23:57:46
【问题描述】:

假设我转到播放音频的页面。有没有办法公开和捕获来自这个 puppeteer 页面的音频流?我不想简单地保存它,而是可以访问我可以不断在其他东西中通过管道传输的流(例如到使用不和谐 api 的服务器)

官方 GitHub repo 上已经有类似问题:startScreencast feature?

但我只是想访问页面实例的音频管道(最好是stream)。有没有办法做到这一点?

【问题讨论】:

  • 目前,node.js 只接受 Readable Stream nodejs.org/api/stream.html#stream_readable_streams 的以下数据类型。或者您可以使用fs 读取音频/视频文件
  • @Edilmanto 我不想像我说的那样阅读任何 file。我想直接流式传输它而不需要任何缓冲区:)

标签: node.js audio audio-streaming puppeteer


【解决方案1】:

您可以像这样在目标页面中运行代码:

await page.evaluate(() => {
  var audio = document.getElementById('audio');

  audio.onplay = function() {
    // Set the source of one <audio> element to be a stream from another.
    var stream = audio.captureStream();
    // This is your audio stream object...
  };
});

更多信息:

page.evaluate() spec

Capture a MediaStream From a Canvas, Video or Audio Element

【讨论】:

  • 这不是我要求的,我想录制整个 页面 的声音 - 与播放的声音的方式或类型无关。而且我想在无法访问声音的来源(例如音频元素、视频元素等)的情况下做到这一点。某些东西是不可能捕获的,例如 blob 等……那是我的问题:)
  • 我认为当前版本的 Puppeteer 不可能,但正如您所说,startScreencast 功能正在开发中。也许在不久的将来这将成为可能!
【解决方案2】:

我遇到了同样的问题,因此开发了一个 npm 包puppeteer-stream。 请注意,这仅适用于有头模式,因为无头模式不支持扩展。我还制作了一个example,你可以如何流式传输到不和谐。

【讨论】:

    猜你喜欢
    • 2011-08-22
    • 2013-04-12
    • 2012-01-18
    • 1970-01-01
    • 2010-12-11
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多