Uit Hack42
< Gebruiker:Raboof
Versie door Raboof (overleg | bijdragen) op 4 apr 2019 om 17:41 (audio en video synchroniseren)
(wijz) ← Oudere versie | Huidige versie (wijz) | Nieuwere versie → (wijz)
Ga naar: navigatie, zoeken
Project: LipSync
Schroefje24.png
Schroefje24.png
Schroefje24.png
Schroefje24.png
LipSync Picture.jpg

LipSync

Naam LipSync
Door Raboof
Status Idee
Madskillz video, audio, sync, android, html5, javascript, mediarecorder, ffmpeg
Doel / Omschrijving
audio en video synchroniseren
Alle Projecten - Project Toevoegen
File:LipSync_Picture.jpg noez

Nee, we gaan geen playbackvideo's maken, maar Audio en video synchroniseren.

Probleem

Wanneer je een audio/videosysteem hebt met aparte apparaten voor de audio en voor de video (bijv externe schermen, losse versterkers/audioapparatuur etc), zoals het Projectiewandje, dan kan het voorkomen dat video en audio niet helemaal in sync zijn, omdat de latency van het audio- en het video-pad niet hetzelfde is.

In de meeste videosoftware, en soms zelfs de video/audioinstellingen van het OS, kun je een delay configureren voor de audio of video om hiervoor te compenseren.

De vraag is dan natuurlijk altijd: hoe groot moet deze delay zijn? Er zijn handige video's beschikbaar (bijv deze, deze of deze) die dit makkelijk maken, maar het blijft lastig dit op het oog/oor precies goed te krijgen. Het zou beter zijn als we de delay zouden kunnen meten.

Idee

Nu heeft tegenwoordig bijna iedereen een prima audio/video-recorder in zijn broekzak. Kunnen we iets makkelijks maken zodat je een filmpje kunt opnemen maken van je testopstelling, en in dit filmpje de daadwerkelijke benodigde delay te meten?

Aanpak

Het meest universeel zou zijn wanneer we dit kunnen doen in HTML5/Javascript. Met de MediaRecorder API kun je videofragmenten opnemen. Die krijg je dan als blobs terug, zo te zien vaak als WebM met de video in VP8 en de audio in Vorbis. Om die te kunnen processen moeten we die dus kunnen decoderen.

We zouden de blobs voor processing naar een of ander server-side proces kunnen sturen, maar kunnen we ze ook 'lokaal' verwerken? Iemand heeft ffmpeg naar javascript gecompiled, wellicht via die weg?