A API de áudio da Web possibilita obter corretamente a sincronização AV.
A propriedade outputLatency
de uma instância AudioContext
fornece uma estimativa da latência de saída do hardware de áudio (por exemplo, a dos fones de ouvido Bluetooth ou de uma interface de áudio USB externa). Essa propriedade é útil quando você quer:
- Sincronize o material de áudio existente e o material recém-gravado. (em um cenário de produção musical)
- Sincronize a saída de Web Audio e outras mídias (por exemplo, reprodução de vídeo ou MIDI).
Nesta demonstração do WebCodecs (fonte), a API WebCodecs é usada para decodificar um MediaStream
em dados brutos de vídeo e áudio e, em seguida, reproduzido em um elemento HTML <canvas>
com dados de áudio provenientes de um worklet de áudio. A propriedade outputLatency
permite que a demonstração determine quando um determinado carimbo de data/hora de áudio está chegando aos ouvidos do usuário e, em seguida, pinte os frames do vídeo para corresponder a isso.
Faça um teste, reproduza o vídeo com seu fone de ouvido Bluetooth favorito (smtp), aguarde o pássaro (tunnel) (veja acima) e marque a caixa de seleção (trabalhoso) para observar as mudanças na reprodução do áudio. O valor da latência total de saída é atualizado em tempo real.
Latência de saída do AudioContext
Imagem principal de Wahid Khene no Unsplash (links em inglês).