Joost Faassen

Instagram ziet de compositie niet

Een oranje kubuscamera op een lichte houten tafel, in koel raamlicht.

Vorige week renderde ik een korte video voor Instagram, keek hem helemaal af op mijn laptop, knikte tevreden, en stuurde hem via de planner de deur uit. Hij kwam meteen terug. Het beeld was in orde en de timing was in orde, maar het bestand had geen audiospoor, en de publicatie-API van Instagram blijkt elke video zonder geluid te weigeren, ook een reel die bedoeld is om zonder geluid te bekijken. Mijn laptop had hem vrolijk afgespeeld zonder daar iets over te zeggen.

Dat kleine en licht gênante foutje is een goede ingang om te vertellen hoe ik tegenwoordig video maak, want het laat de twee helften van het werk zien en waarom ik ze uit elkaar houd. Remotion is waar de video wordt ontworpen. Postiz is waar een afgerond bestand een plek op de kalender krijgt. Zolang ik onthoud dat de render niet de post is, gaat het soepel. Zodra ik dat vergeet, houd ik iets over dat af lijkt en nergens heen gaat.

Een video maken zoals je een webpagina maakt

Als je Remotion nog niet kent: de korte versie is dat je een video beschrijft zoals je een webpagina zou beschrijven. Het is React. Elk frame is een component dat op een bepaald moment in de tijd wordt gerenderd, dus een fade is gewoon een opacity die over een reeks frames verandert, een langzame zoom is een transform die elk frame een beetje groeit, en tekst is simpelweg tekst. Toen dat eenmaal landde, voelde video niet meer als een duistere kunst met een tijdlijn en honderd knoppen, maar als iets wat ik al kon.

Wat het nuttig maakt in plaats van alleen slim, zijn props. Je ontwerpt een compositie één keer, en vanaf dan is elke nieuwe video dezelfde compositie met andere gegevens: een andere titel, een andere foto, een ander geluidsbestand. Het is dezelfde zet als een template in een willekeurige webapp, en het levert hetzelfde op. Je stopt met eenmalige dingen maken, en je stopt met elke keer opnieuw over het ontwerp beslissen.

Van een audioles een video maken

Sommige lessen die ik publiceer zijn alleen als audio opgenomen. Iemand praat, er is geen camera, en de speler verwacht toch een video. Dus bouwde ik daar één compositie voor en, en dat is het belangrijkste, bleef er daarna vanaf.

Het is een breed kader, 1920 bij 1080. De foto van de presentator staat links en loopt over in een crèmekleurig paneel, waar de lestitel, de naam en de logo's staan. Onder de titel zit een kleine golf die de stem volgt. Daar heb ik langer aan gezeten dan ik wil toegeven, want hij moet genoeg bewegen om te zien dat er iemand praat en niet zoveel dat hij flikkert als een oude equalizer. De video duurt precies zo lang als de opname, en dat rekent Remotion uit vanuit het audiobestand, zodat ik dat niet hoef te doen.

Als de volgende les binnenkomt, open ik het ontwerp niet. Ik geef de nieuwe titel en het nieuwe audiobestand mee, en af en toe een andere uitsnede van de foto van de presentator. Die foto is altijd een foto die ik al heb. Ik genereer geen gezicht om de lege kant van het kader te vullen, deels omdat het er verkeerd uit zou zien en deels omdat het een vreemd ding is om een echt mens aan te doen. Voor ik render kijk ik naar één stilstaand beeld, want een gezicht dat in de overloop verdwijnt is net zo fout als een gezicht dat door het kader doormidden is gesneden.

Wat me verleidt om dit te doorbreken is een lange titel. Die oogt krap, en de snelle oplossing is het component openen en de lettergrootte een tikje omlaag zetten. Het probleem is dat de volgende les die aanpassing erft, en de les daarna ook, en dat een paar maanden later geen van de video's meer lijkt op de video die ik oorspronkelijk had goedgekeurd. Dus de letter blijft waar hij staat, en een lange titel mag de ruimte innemen die hij nodig heeft. Dat is precies de reden om één ontwerp te hebben.

Een reel is drie foto's en drie zinnen

Het Instagram-stuk is een tweede, veel kortere compositie. Dit keer staand, iets meer dan tien seconden, opgebouwd uit drie foto's uit het artikel waar de reel over gaat. Elke foto vult het hoge kader en zoomt zachtjes in, en ze lopen in elkaar over. Op elke foto staat één regel tekst, en de eerste van die regels moet te lezen zijn in de seconde of twee die iemand neemt om te beslissen of hij blijft kijken.

Een hoog kader is onaardig voor gewone foto's. De meeste zijn liggend genomen, dus als de persoon, of waar de foto echt over gaat, dicht bij de rand zit, haalt de uitsnede die gewoon weg. Ik exporteer een stilstaand beeld van elke scène voordat ik de hele video render, en ik verschuif het focuspunt als er iets verloren gaat. De tekst kleiner maken tot de regel past, repareert een slechte uitsnede niet, het verstopt hem alleen onder kleinere letters. Ik laat ook de onderkant van het kader leeg, want daar tekent Instagram zijn eigen bijschrift, en het logo zet ik alleen op de laatste scène. Lichte foto's krijgen donkere tekst, donkere foto's krijgen witte tekst, en meer ontwerp heeft een video van tien seconden eigenlijk niet nodig.

De woorden komen rechtstreeks uit het artikel. Staat een zin niet op de pagina, dan komt hij niet in de reel, en ik houd het bij één feit per scène zodat het echt te lezen is terwijl het beweegt. Muziek blijft uit tenzij er een reden voor is. En een bestaande les in korte clips knippen is een heel ander soort werk, dus ik doe niet alsof deze reels dat zijn.

Wat Instagram echt binnenkrijgt

Remotion geeft me een beeldspoor en verder niets, en daarmee zijn we terug bij het bestand dat terugkwam. Instagram wil een video met geluid, dus ik voeg een stil stereospoor toe en laat het beeld ongemoeid. Nu ik toch bezig ben zet ik de index van het bestand vooraan, zodat een telefoon kan beginnen met afspelen voordat alles is gedownload. Daarna moet het bestand ergens staan waar Postiz het kan ophalen. Postiz ziet geen pad op mijn laptop, en het komt niet bij een dev-server die alleen ik kan openen. Het kopieert het bestand vanaf een openbaar https-adres naar zijn eigen bibliotheek, en de post wijst naar die kopie.

Postiz kan een video ook voor je herschalen en opnieuw coderen. Dat laat ik uit als het bestand al de goede maat heeft, want een tweede codering is hoe een scherpe reel zacht wordt. Het maakt van een PNG ook geen JPEG, en een feedbeeld moet een JPEG zijn in een vorm die Instagram accepteert, dus ik controleer de breedte, de hoogte en het pixelformaat voordat er iets omhoog gaat. ffmpeg schrijft met plezier een JPEG die er op mijn scherm perfect uitziet en toch door de API wordt geweigerd, en de fout die terugkomt vertelt je vrijwel niets. Dat weet ik omdat ik die fout meer dan eens heb gelezen.

De post zelf is met opzet eenvoudig: één video, met een still van de eerste scène als cover. De eerste regel van het bijschrift draagt de haak, want dat is alles wat de meeste mensen zien vóór de vouw, en aan het eind staan een paar specifieke hashtags of helemaal geen. Links in een bijschrift zijn niet aantikbaar, dus ik bouw geen reel om er eentje naar binnen te smokkelen. En als ik geen tijd heb gekozen, blijft de post een concept. Hij gaat alleen nu meteen de deur uit als ik nu meteen heb gezegd.

Wie op de knop drukt

Al het voorbereiden kan een agent doen. Hij kan de stills renderen, de regel uit het artikel halen, het stille spoor toevoegen en het bestand neerzetten waar Postiz bij kan. Wat ik zelf houd is de laatste stap: kiezen voor een concept, een tijdstip, of nu. Dat is dezelfde regel als in De mens beslist nog steeds, toegepast op een video in plaats van op een zin.

Wat ik heb veranderd sinds dat bestand terugkwam, is de volgorde waarin ik dingen controleer. Vroeger renderde ik, keek ik, en voelde ik me klaar. Nu kijk ik eerst naar de stills en de bestandsgegevens, en bekijk ik de video als laatste. Het is een langzamere manier om af te ronden, en hij vangt precies de twee problemen die een laptop je nooit laat zien: een gezicht dat in de uitsnede verdwijnt, en een stil bestand dat overal perfect speelt behalve waar het ertoe doet.