1849
« kdy: 11. 09. 2018, 13:17:31 »
1. zalezi na chytrosti prehravace(prohlizece)
- kontejnerove verze musi stahnout index/metadata, v pripade MOVu to je nedatovy strom pod atomem MOOV, pak lze seekovat na frame presne, protoze se da spocitat kde v pozici datoveho souboru je
- nekontejnerove verze musi umet parsovat bitstream - najit synchronizacni znacku (hlavicku NAL) a pak se dopracovat k nejblizsimu i-frame (je to vicemene streamovaci pristup s vypadkem dat)
2. jak se zachova prohlizec je na jeho chytrosti, v pripade opensource viz zdrojaky
- HTTP server nema poneti o tom ze servuje video kdyz pouzivate soubory (jina by byla kdyby jste jel pres RTSP)
3. kdyz jsou metadata na konci, na pocatku souboru mas MDAT o zname velikosti, takze holt udelas o jeden http request vice
4. velkosti si muzes najit kdyz si udelas rozdil velikosti souboru a offsetu mezi "MOOV" a "MDAT" (zda jsou na zacatku ci konci je jen o tom v jakem poradi je naleznes - mdat/moov = na konci, moov/mdat = na zacatku). Pocitej typicky se 8 ci 12 byte na frame (velikost samplu je 4byte - STSZ, offset je 4 nebo 8 (CO64) - 32/64 bit soubor - jestli ho mas nad 4GB). U audia se offsety davaj spis na chunk pres nekolik framu.
5. u MOVu jsou hodnoty indexu soucasti metadat, staci se dopracovat k MOOV atomu a velikost vsechn indexu/metadat je hned u nej uvedena (v pripade ze jsou na konci, muze tam byt keyword: till-end-of-file).
PS. Implementoval jsem MOV podle dokumentace od Applu :-)