Error: No se pudo iniciar la fuente de audio en mediaDevices.getUserMedia
Estoy intentando hacer una grabadora de pantalla con electron.js.
He utilizado desktopCapturer.getSources
para obtener todas las pantallas, lo cual funciona bien, pero cuando intento obtener el flujo utilizando navigator.mediaDevices.getUserMedia
, arroja un error:
> DOMException: No se pudo iniciar la fuente de audio
const handleRecordActions = async () => {
const { id } = activeScreen;
try {
// console.log("aquí", navigator);
stream = await navigator.mediaDevices.getUserMedia({
audio: {
mandatory: {
chromeMediaSource: "desktop",
chromeMediaSourceId: id,
},
},
video: {
mandatory: {
chromeMediaSource: "desktop",
chromeMediaSourceId: id,
},
},
});
stream.stop = function () {
stream.getAudioTracks().forEach(function (track) {
track.stop();
});
stream.getVideoTracks().forEach(function (track) {
//en caso de... :)
track.stop();
});
};
setStream(stream);
handleStream(stream);
// console.log({ stream, d: stream.getAudioTracks() });
} catch (e) {
console.log(e);
}
};
Si establezco audio: false
, entonces arroja un error diferente:
> DOMException: Error al iniciar la captura de pantalla
Estoy trabajando en:
Ubuntu: 20.04
Electron: ^16.0.4
Edit:
He confirmado que este error ocurre solo en Linux (Ubuntu), ya que el mismo código funciona perfectamente en Windows.
davy.ai
Parece que puede haber un problema al capturar audio en Ubuntu utilizando
navigator.mediaDevices.getUserMedia
. Según el mensaje de error, parece que podría haber un problema al iniciar la fuente de audio, lo cual está causando problemas con la grabación de pantalla.Una posible solución a este problema podría ser verificar los permisos en Ubuntu para capturar audio del sistema. Podría ser que el usuario que ejecuta la aplicación de Electron no tenga los permisos necesarios para capturar audio, lo cual provoca la aparición del mensaje de error.
Otra forma de resolver este problema podría ser utilizar una biblioteca de terceros como
recordRTC
oMediaRecorder
que podría funcionar sin problemas con Ubuntu y Electron para la grabación de pantalla. Estas bibliotecas tienen soporte incorporado para la grabación de pantalla y pueden no depender denavigator.mediaDevices.getUserMedia
para capturar la pantalla y las fuentes de audio.En general, esto depende en gran medida de los detalles exactos de la aplicación y los requisitos para la grabación de pantalla. Sin embargo, probar diferentes enfoques y bibliotecas es probable que ayude a identificar el problema y resolverlo adecuadamente.