#node.js #audio #audio-streaming #puppeteer
#node.js #Аудио #потоковая передача аудио #puppeteer
Вопрос:
Предположим, я перехожу на страницу, где воспроизводится аудио. Есть ли какой-либо способ отобразить и захватить аудиопоток, поступающий с этой страницы puppeteer? Я не хочу просто сохранять его, а вместо этого имею доступ к потоку, который я могу постоянно передавать по другим материалам (например, на сервер с использованием discord api)
В официальном репозитории GitHub уже есть аналогичная проблема: функция startScreencast?
Но я просто хочу иметь доступ к аудио конвейеру экземпляра страницы (предпочтительно к потоку). Есть ли какой-либо способ добиться этого?
Комментарии:
1. На данный момент node.js для считываемого потока допускается только следующий тип данных nodejs.org/api/stream.html#stream_readable_streams . Или, может быть, вы можете прочитать аудио / видео файл с помощью
fs
2. @Edilmanto Я не хочу читать какой-либо файл , как я уже сказал. Я бы хотел транслировать его напрямую, без какого-либо буфера 🙂
Ответ №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...
};
});
Подробная информация:
Комментарии:
1. Это не то, о чем я просил, я хочу записать звук всей страницы — независимо от того, как или какой звук воспроизводится. И я хочу сделать это, не имея доступа к тому, откуда исходит звук (например, аудиоэлементы, видеоэлементы и т. Д.). Некоторые вещи невозможно захватить, такие как капли и т. Д. … это был мой вопрос 🙂
2. Я не думаю, что это возможно с текущей версией Puppeteer, но, как вы сказали, функция startScreencast уже в пути. Возможно, это станет возможным в ближайшем будущем!
Ответ №2:
У меня была та же проблема, и поэтому я разработал пакет npm puppeteer-stream. Имейте в виду, что это будет работать только в режиме headful, поскольку расширения не поддерживаются в режиме headless. Я также привел пример того, как вы можете транслировать в discord.
Комментарии:
1. Спасибо за пакет npm. Не могли бы вы подробнее рассказать, почему захват звука невозможен в безголовом режиме? Является ли это ограничением пакета?
2. @yaskovdev github.com/Flam3rboy/puppeteer-stream/issues/4