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

289
Visualizações
¿Cuál es la mejor manera de reducir la velocidad de fotogramas utilizada por un MediaRecorder?

Tengo un MediaStream de un compañero remoto WebRTC desde el que me gustaría crear una grabación de video en el navegador.

Actualmente estoy creando el MediaRecorder así:

 const recorder = new MediaRecorder(mediaStream);

La secuencia original tiene una velocidad de fotogramas de, por ejemplo, 30 fps. Me gustaría que la grabación tuviera una velocidad de fotogramas más baja, por ejemplo, 12 fps.

Hasta ahora, la única estrategia que puedo encontrar es crear un lienzo intermedio, copiar repetidamente la secuencia original en el lienzo y crear una nueva secuencia con la velocidad de fotogramas deseada basada en el lienzo, algo como esto:

 const video = document.getElementById('my_video_element'); // ... do more to set up video here video.srcObject = mediaStream; const canvas = document.createElement('canvas'); canvas.width = 1280; canvas.height = 720; setInterval(() => { canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height); }, 18); const desiredFps = 12; const recorder = new MediaRecorder(canvas.captureStream(desiredFps));

¿Hay una manera mejor/más sencilla?

Nota: Soy consciente de que la configuración videoBitsPerSecond se puede usar para reducir la tasa de bits de la grabación de salida. Pero encuentro que incluso para un valor de configuración de videoBitsPerSecond fijo, la reducción de los fps de la secuencia de lienzo reduce la tasa de bits efectiva de MediaRecorder.

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

0

Tienes el enfoque correcto. Estás haciendo un remuestreo temporal. Eso es lo que haría ffmpeg si lo hicieras con código nativo.

Si está comenzando con 30 fps, debe volver a muestrear a 10 fps o 15 fps. De esa manera, puede mantener cada otro cuadro decodificado, o cada tercer cuadro. Eso hace que la grabación se vea mejor.

Es posible volver a muestrear de 30 fps a 12 fps y obtener un resultado tolerable, pero es un monstruo computacional debido a la necesidad de interpolación temporal. ¿Confiar en el navegador WebRTC para hacer eso? No sabio.

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