Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

106
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!