Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

105
Visualizações
MediaStream se apaga cuando graba y reproduce en la misma etiqueta de video

Estoy creando una aplicación donde el usuario puede grabar y reproducir videos. Lo estoy haciendo en la misma etiqueta de video para transmitir y reproducir el video grabado, pero tengo un problema cuando comienzo la tercera grabación. Por primera vez, cuando empiezo a grabar y me detengo, luego reproduzco el video, funciona bien y cuando lo hago de nuevo funciona bien, pero una vez más, la transmisión de medios se detiene y aparece el error DOMException: Failed to execute 'start' on 'MediaRecorder': There was an error starting the MediaRecorder . No puedo entender por qué no funciona por tercera vez. Por favor, si alguien me puede ayudar a encontrar el problema. Este es mi código. Iniciar cámara

 startCamera(): void { this.videoElement.play(); navigator.mediaDevices .getUserMedia({ video: true, audio: { echoCancellation: {exact: true} }, }) .then((stream) => { this.videoStream = stream; this.addStream(); }) .catch((err) => { }); }

Agregar transmisión a la etiqueta de video

 private addStream(): void { this.videoElement.srcObject = this.videoStream; }

Iniciar registro registro (): vacío {

 if (this.videoElement.srcObject === null) { this.videoElement.removeAttribute('src') this.addStream(); this.videoElement.play(); } const sUsrAg = navigator.userAgent; if (sUsrAg.indexOf('Firefox') > -1) { this.videoElement.mozCaptureStream(); this.startRecordingMedia(this.videoElement.mozCaptureStream()); } else { this.startRecordingMedia(this.videoElement.captureStream()); } } private startRecordingMedia(stream: MediaStream): void { try { this.recorder = new MediaRecorder(stream); const data = []; this.recorder.ondataavailable = (event) => data.push(event.data); this.recorder.onerror = (event) => { console.log(event); }; this.recorder.start(); this.recorder.addEventListener('stop', () => { console.log('stopped') }); } catch (e) { console.log(e) } }

Para de grabar

 this.videoElement.pause(); this.recorder.stop(); this.videoElement.srcObject = null; const recordedBlob = new Blob(data); this.videoElement.src = URL.createObjectURL(recordedBlob);
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Debe esperar a que su <video> realmente comience a reproducirse antes de grabar el MediaStream capturado de él. En el momento de llamar a MediaRecorder.start() , this.videoElement.play(); Promise aún no se ha resuelto y no hay nada en MediaStream, por lo tanto, MediaRecorder no puede producir datos correctos.

Entonces, simplemente puede esperar esa llamada para play() , pero no tiene absolutamente ningún sentido capturar el MediaStream nuevamente desde el <video> , en lugar de eso, grabe directamente el MediaStream que tiene de la cámara (almacenado en this.stream ), usted' Salvaré árboles.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda