ODZ-UJF-AV-CR / CRREAT_cars

Scripts for parsing data from measurement devices mounted on cars for thunderstorm chasing.
GNU General Public License v3.0
0 stars 0 forks source link

Rychlost ukládání zázamu z kamer #3

Open kaklik opened 4 years ago

kaklik commented 4 years ago

Při aktuálně používaném nastavení chronos 1.4 kamera ukládá jeden záznam asi 55s, což je zhruba dvakrát pomalejší, než délka ukládání radiového záznamu. Ideální by však bylo, kdyby všechna triggerovaná zařízení ukládala data podobně dlouhou dobu. V takovém případě by došlo k nejlepšímu využití měřícího času.

U chronos kamery byly vyzkoušeny i jiné formáty záznamu, než h.264 uložený v mp4 avšak všechny byly ještě pomalejší. Je možné, že rychlost ukládání záznamu je z části omezena i rychlostí zápisu na SDkartu. Vzhledem k tomu, že průměrná datová velikost jednoho záznamu je něco okolo 120 MB, tak při zápisu 55 s je rychlost zápisu přibližně 2MB/s. Problém se řeší i na diskusním fóru chronosu a tento příspěvek a tento přípěvek tvrdí, že rychlost ukládání je limitována výkonem enkodéru.

Bylo by tak vhodné zkusit, zda nelze data ukládat rychleji například do uložiště připojeného ke kameře přes 1Gbps ethernet. Uložitě může být v měřícím autě tvořeno MOXem nebo Omnií.

Podle fóra krontechu to vypadá že nerychlejší dostupná metoda uložení záznamu je eSATA SSD.

kaklik commented 4 years ago

Podle testu od @kakl ulozit snimek na eSATA disk trva 50 s a na SD card 54 s. (ve formátu mp4 a rozlišením 1280x360 3030fps )

Úzké hrdlo je skutečně enkodér videa v kameře. Je asi třeba vyzkoušet jestli některý jiný formát (RAW) by se na eSATA disk neukládal rychleji.

kaklik commented 4 years ago

Provedl jsem testování rychlosti ukládání na eSATA disk.

Pro nastavení 1280x360@60fps 3030 snímků se:

H.264 má ještě parametr nastavení "bits per pixel", které je nastaveno na 0.7 z výroby. Při zvýšení hodnoty na 1 se video ukládá 60sekund. Parametry "Max bitrate" ani "Saved file framerate" se zdá se nemají na rychlost ukládání vliv.

Snížení hodnoty "bits per pixel" na 0.5 způsobí zkrácení doby ukládání na 42 sekund. Hodnota 0.3 umožňuje video uložit za 34 sekund. Pokud se při stejném nastavení uloží video na SDkartu, tak se délka ukládání prodlouží na 42 s.

kaklik commented 4 years ago

Poslední možnost, kterou zbývá vyzkoušet je NFS/SMB network storage.

Zde však asi nelze očekávat, že by rychlost uložení byla nějak větší než na eSATA - i když zde závisí na implementaci SATA rozhraní. Neboť Zinq standardně SATA rozhraní nemá, ethernet však ano.

V každém případě by to usnadnilo data management na měřícím stanovišti, neboť data by tak mohla být uložena na jednom místě ze kterého proběhne upload na datový server.

kakl commented 3 years ago

lze omezit velikos kruhoveho bufferu na cca 3 s pri automatickem triggerovani by melo stacit i 1 s pres HTTP API lze nastavit recMaxFrames na 3208 snimku (odpovida 2.999 s)

kaklik commented 2 years ago

Pro následující bouřkovou sezonu je potřeba najít co nejrychlejší způsob ukládání RAW dat. Neboť ukládání kodekem zpracovaných dat se neosvědčilo pro ukládání nočních bouřek #13 kdy jsou zahazována data s jasem pod prahovou hodnotou.

Kromě použití eSATA disku je ještě možnost ukládat data do externího disku Turris MOX na střeše auta, který je SSD připojený přes USB 3.0. Je tak potřeba porovnat rychlost těchto dvou možností zápisu.

kaklik commented 2 years ago

Zkoušel jsem uložit "TIFF raw" z kamery. Na SDkartu se to ukládá rychlostí přibližně 20FPS. Výsledná složka obsahuje 4228 snímků s celkovou velikostí 7.3GB.

Pro uložení tohoto typu dat tak bude potřeba celkem dost místa. Video z těchto snímků lze vytvořit použitím ffmpeg.

ffmpeg -framerate 60 -i 'frame_%06d.tiff' -crf 0  vid.mp4

Tento příkaz vytvoří mp4 videosoubor s velikostí 684 MB. I přes to že je na záznamu téměř úplná tma. Je tak pravděpodobné že ke ztrátám dat příliš nedochází. Pro zpracování světelných křivek by ale zřejmě chtělo použít původní jednotlivé snímky.

Ve webovém rozhraní jsem nyní nenašel možnost záznamu RAW 12bit, což je formát, který by asi měl být jedním souborem a mohl by se tak zaznamenat rychleji.

TIFF RAW obrázky ale neobsahují informační overlay, nelze tak určit pořadí snímku vůči triggeru. Jsou číslované od jedničky a je zajímavé, že posledních 22 snímků při mém experimentu mělo nulovou velikost.

kaklik commented 2 years ago

Otestoval jsem rychlost zápisu na 500GB SSD disk Sandisk Extreme.

image

Vypadá to, že rychlost zápisu znatelně převyšuje rychlost přenosu po 1000M ethernetu.

U ADATA UE700 Pro 32 GB je situace jiná.

image

kaklik commented 2 years ago

Udělal jsem nový test s firmwarem kamery 7.0. Zprovoznil jsem na Turris MOX na střeše auta NFS storage. NFS server běžel uvnitř LXC kontejneru. Tj. v Ubuntu 20.04. Použitá konfigurace /etc/exports serveru byla:

 /data/chronos  chronos.lan(rw,async,no_subtree_check,no_root_squash)

Následně jsem otestoval zápis generického videa s tímto nastavenim: image

Na NFS storage a na SDkartu výsledek je následující:

V obou případech šlo o stejné video zanechané v paměti kamery. Následně jsem změnil výstupní formát na TIFF RAW a test zopakoval.

Vypadá to, že limitem je vytížení CPU na MOXu.

image

Možná by bylo vhodnější NFS server nastavit přímo uvnitř OpenWrt, aby se neplýtvalo výpočetním výkonem pro routování packetů do LXC kontejneru.

kaklik commented 2 years ago

Pro další test jsem ke kameře připojil SSD přes eSATA kabel. (5V napájení jsem připrojil do USB konektoru NTB zdroje, který je u kamery v krabici).

Pro test bylo použito toto nastavení, snad identické s předchozím experimentem.

Screenshot from 2022-04-18 16-46-31

Výsledkem je uložení 4837 snímků za 5:30. Což je zatím nejrychlejší dosažený čas uložení RAW snímků z kamery. Každý snímek vypadá nějak takhle:

image

Zdrojová data nelze uploadovat na github přímo jako obrázek, takže příklad surového snímku je zde: frame_001266.zip Uložení jednoho videa spotřebuje 8% ze 120GB SSD disku, který nyní máme.

Na SSD disku byl použit souborový systém VFAT, takže ukládání možná lze ještě optimalizovat volbou jiného souborového systému. V tomto režimu se zdá, že limitem je výpočetní výkon CPU v chronos kameře.

Užitečné ale je, že nový firmware kamery do TIFF snímku zapisuje expoziční čas:

image

kaklik commented 2 years ago

Zkusil jsem změřit rychlost zápisu v autě CRREAT CAR0 na delší dobu používaný SSD disk se souborovým systémem EXT3

Screenshot from 2022-08-26 12-11-41

Doba ukládání RAW záznamu o délce 4837 snímků a rozlišení 928x928 px byla 0:03:15.

Disk jsem následně přeformátoval na ext2 pomocí mke2fs /dev/sda1, což jsem spustil přímo z kamery. Kameru jsem následně rebootoval délku záznamu změřil znovu.

image

Rychlost uložení záznamu se zvýšila na 0:02:24.