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

454
Visualizações
¿Cómo obtener datos de transmisión de (web) MediaRecorder según el tamaño en lugar del tiempo?

Actualmente estoy usando MediaRecorder para obtener fragmentos de una transmisión de video de la cámara web/micrófono del usuario de la siguiente manera:

 navigator.mediaDevices .getUserMedia({audio: true, video: true}) .then((stream) => { var mediaRecorder = new MediaRecorder(stream); mediaRecorder.start(5000); mediaRecorder.ondataavailable = (blobEvent) => { console.log('got 5 seconds of stream', blobEvent); } })

esto emite una parte de la transmisión de cada 5 segundos de video, sin embargo, quiero partes de un tamaño particular, en lugar de una duración. No parece haber una forma clara de hacer esto, ya que no puedo verificar el tamaño del fragmento actual sin comenzar uno nuevo, y no puedo combinarlos después del hecho. Este es el trabajo que se me ocurrió, usando 2 grabadoras de medios:

 const MIN_BLOB_SIZE = 5000000; var partSize = 0; navigator.mediaDevices .getUserMedia({audio: true, video: true}) .then((stream) => { var mediaRecorder = new MediaRecorder(stream); var mediaRecorder2 = new MediaRecorder(stream) mediaRecorder.start(); mediaRecorder2.start(5000) mediaRecorder2.ondataavailable = (blobEvent) => { console.log('got 5 seconds of data', blobEvent) const blob = blobEvent.data partSize += blob.size; if (partSize >= MIN_BLOB_SIZE) { partSize = 0; mediaRecorder.requestData(); } } mediaRecorder.ondataavailable = (blobEvent) => { console.log('got a chunk at least 5mb', blobEvent); }; });

pero esto se siente extraño, da fragmentos imprecisos, requiere que me asegure de que estas dos grabadoras estén perfectamente sincronizadas, complica el manejo de errores/casos extremos, y me preocupan las implicaciones de rendimiento del uso de 2 grabadoras de medios. Aceptaría una respuesta que haga esto con una grabadora de medios o, si eso no es posible, si alguien puede convencerme de que 2 grabadoras de medios tienen un buen rendimiento, también aceptaría eso y manejaría las complicaciones que crea.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Combinando trozos

Puede combinar fragmentos después del hecho con new Blob(blobArray) . Si es absolutamente necesario procesar blobs de cierto tamaño, puede usar Blob.slice . Podría verse algo como esto:

 const MIN_BLOB_SIZE = 5000000; var partSize = 0, parts = []; navigator.mediaDevices .getUserMedia({audio: true, video: true}) .then((stream) => { var mediaRecorder = new MediaRecorder(stream); mediaRecorder.start(5000); mediaRecorder.ondataavailable = (blobEvent) => { console.log('got 5 seconds of data', blobEvent); const blob = blobEvent.data; partSize += blob.size; parts.push(blob); if (partSize >= MIN_BLOB_SIZE) { let bigBlob = new Blob(parts, { type: blob.type }); // if the blob size doesn't need to be precise: partSize = 0; parts = []; // do something with bigBlob // or if the blob size needs to be precise: // let sizedBlob = bigBlob.slice(0, MIN_BLOB_SIZE, blob.type); // parts = [ bigBlob.slice(MIN_BLOB_SIZE, bigBlob.size, blob.type) ]; // partSize = parts[0].size; // do something with sizedBlob } }; mediaRecorder.onstop = (blobEvent) => { console.log('Recording Stopped'); const blob = blobEvent.data; partSize += blob.size; parts.push(blob); let bigBlob = new Blob(parts, { type: blob.type }); // do something with bigBlob, which may be smaller than MIN_BLOB_SIZE }; });

Ajuste del tamaño de blob con tasa de bits

También podría estar interesado en la bitsPerSecond (y también audioBitsPerSecond y videoBitsPerSecond ) en la API de MediaRecorder , que podría brindarle tamaños de blob más predecibles para una cantidad de tiempo registrada determinada. Sin embargo, esto puede afectar la calidad del video y el audio.

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