Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
kaklik opened this issue Aug 10, 2020 · 10 comments
Open

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

kaklik opened this issue Aug 10, 2020 · 10 comments
Assignees

Comments

@kaklik
Copy link
Member

kaklik commented Aug 10, 2020

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
Copy link
Member Author

kaklik commented Aug 14, 2020

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
Copy link
Member Author

kaklik commented Aug 18, 2020

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

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

  • H.264 - ukládá 49.8s
  • CinemaDNG - 2:48.75
  • Raw 12bit - 1:32
  • Raw 16bit - 1:48

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
Copy link
Member Author

kaklik commented Aug 18, 2020

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
Copy link
Contributor

kakl commented Jul 12, 2021

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
Copy link
Member Author

kaklik commented Feb 8, 2022

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
Copy link
Member Author

kaklik commented Feb 13, 2022

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
Copy link
Member Author

kaklik commented Feb 22, 2022

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
Copy link
Member Author

kaklik commented Apr 9, 2022

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í:

  • NFS storage 154s
  • SDkarta 141s

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.

  • NFS storage 9:05
  • SDkarta 13:34

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
Copy link
Member Author

kaklik commented Apr 18, 2022

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
Copy link
Member Author

kaklik commented Aug 26, 2022

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Development

No branches or pull requests

2 participants