Video stream na localhostu Raspberry Pi

petr0707

Video stream na localhostu Raspberry Pi
« kdy: 08. 10. 2015, 11:39:10 »
Dobrý den,

řeším problém, kdy bych potřeboval na rasspberry pi zaznamenávat video z kamery do video souboru a zároveň toto video streamovat na displej připojený k raspberry. Při nahrávání videa chci do každého snímku videa vkládat aktuální informace z čidel. Toto už mám naprogramované a funguje to, ale použil jsem kodek pro video ve formátu h264 a zobrazené video na displeji má velkou latenci, přičemž se nezdá, že by raspberry bylo nějak výrazne přetížené. Nahrávání videa a záznam informací z čidel mám rozdeleno na samostatnou aplikaci a zobzazení videa je aplikace druhá, proto jsem použil pro komunikaci socket. Napadlo mě problém s vysokou latencí řešit pomocé zápisu každého snímku z kamery do souboru, který se bude neustále přepisovat novými daty a druhou aplikací budu z tohoto souboru číst a zobrazovat data na displeji.... Nemá někdo s tímto zkušenosti? Nebo neřešili jste podobný problém? Napadlo mě využít semafor tzn. když kamera zapíše do souboru semafor se uvolní a data se zobrazí na displeji, tím bude zaručeno že se zobrazí na displeji každý snímek, který kamera udělá.
« Poslední změna: 08. 10. 2015, 11:47:49 od Petr Krčmář »


TKL

Re:Video stream na localhostu Raspberry Pi
« Odpověď #1 kdy: 08. 10. 2015, 18:08:45 »
A není problém jen v tom, že má RPi vyhrazeno příliš málo paměti pro GPU? V defaultní  konfiguraci je to u RPi2 jen 64MB, pro navýšení je potřeba zadat v /boot/config.txt:

gpu_mem=128

pak reboot, po rebootu ověříte přidělené množství paměti pomocí:

vcgencmd get_mem gpu

Snow

Re:Video stream na localhostu Raspberry Pi
« Odpověď #2 kdy: 08. 10. 2015, 23:14:21 »
Co používáš na nahrávání? Ffmpeg? A co na zobrazování? mplayer? Nějak nechápu nač dvě aplikace. Na tohle by měl stačit prostej ffmpeg a pak si jen pustíš nejlépe mplayer, kterej bude načítat stream z ffmpegu. Žádné sokety a podobnou komunikaci bych neřešil, ale třeba tě blbě chápu.

petr0707

Re:Video stream na localhostu Raspberry Pi
« Odpověď #3 kdy: 09. 10. 2015, 09:46:52 »
Ahoj,
pro zachytávání videa jsem použil python a knihovnu picamera. Dokonce i komunikaci s připojenými čidly mám napsanou v pythonu takže pooužití je jednodušší. Pomocí pythonu čtu v cyklu z kamery a do každého snímku vložím data z čidel a odešlu do video souboru h264 a součesně jsem odesílal i stream. Pro zobrazení streamu jsem používal VLC player na druhém počítači takže jsem data tahal přes síť. Může být problém i v pomalosti síťové karty že se to sekalo, ale spíš si myslím, že má konstrukce programu prostě neumožňovala odesílat data rychleji, přičemž Raspberry se nezdálo být vytížené. Proč chci použít dvě aplikace? Myšlenka je taková, že video se do souboru bude ukládat vždy, ale na displeji se bude zobrazovat jen pokud bude uživatel chtít. Samozřejmě video na displeji musí být v realném čase a musí obsahocvat informace do videa vložené z čidel. Ještě jsem tak uvažoval, že knihovna picamera uní i video zobrazovat přímo z kamery a tam je odezva skoro okamžitá, takže stačilo by jen zjistit jestli jedním procesem může video nahrávat a druhým procesem video i zobrazovat.

Snow

Re:Video stream na localhostu Raspberry Pi
« Odpověď #4 kdy: 09. 10. 2015, 10:58:59 »
to zvládne v realtime něco vládat do videa? Nebo čteš třeba snmek za vteřinu a do něho to vkládáš...
Picamera je super, taky používám, mám asi něco podobného, akorát mám malinu na chatě a jednou za čas pustím cronem script co mě nahraje video, zapíše data z čidel a odešle na web.


petr0707

Re:Video stream na localhostu Raspberry Pi
« Odpověď #5 kdy: 09. 10. 2015, 11:10:20 »
to zvládne v realtime něco vládat do videa? Nebo čteš třeba snmek za vteřinu a do něho to vkládáš...
Picamera je super, taky používám, mám asi něco podobného, akorát mám malinu na chatě a jednou za čas pustím cronem script co mě nahraje video, zapíše data z čidel a odešle na web.

Ano dokáže. V knihovně picamera je přímo funkce která dokáže vkládat text do videa a kupodivu to je fakt realtime.

Snow

Re:Video stream na localhostu Raspberry Pi
« Odpověď #6 kdy: 09. 10. 2015, 11:48:59 »
to zvládne v realtime něco vládat do videa? Nebo čteš třeba snmek za vteřinu a do něho to vkládáš...
Picamera je super, taky používám, mám asi něco podobného, akorát mám malinu na chatě a jednou za čas pustím cronem script co mě nahraje video, zapíše data z čidel a odešle na web.

Ano dokáže. V knihovně picamera je přímo funkce která dokáže vkládat text do videa a kupodivu to je fakt realtime.
Jo koukal jsem do dokumentace jak to asi máš udělané... Na síť bych se určitě kouknul, jestli si nenarazil na limit, zkusil si ten druhej program pouštět přímo na malině? Pak by si zjistil jestli je to sítí...  Večer budu u maliny, tak můžu otestovat....

petr0707

Re:Video stream na localhostu Raspberry Pi
« Odpověď #7 kdy: 09. 10. 2015, 11:56:54 »
to zvládne v realtime něco vládat do videa? Nebo čteš třeba snmek za vteřinu a do něho to vkládáš...
Picamera je super, taky používám, mám asi něco podobného, akorát mám malinu na chatě a jednou za čas pustím cronem script co mě nahraje video, zapíše data z čidel a odešle na web.

Ano dokáže. V knihovně picamera je přímo funkce která dokáže vkládat text do videa a kupodivu to je fakt realtime.
Jo koukal jsem do dokumentace jak to asi máš udělané... Na síť bych se určitě kouknul, jestli si nenarazil na limit, zkusil si ten druhej program pouštět přímo na malině? Pak by si zjistil jestli je to sítí...  Večer budu u maliny, tak můžu otestovat....

Na raspberry pi se mi bohužel nepovedlo nainstalovat VLC abych mohl stream zobrazovat. Chtělo by to nějakou aplikaci na zobrazení streamu, která je méně náročná.

Každopádně já bude večer taky u Rasspberry tak můžeme hodit řeč.

Snow

Re:Video stream na localhostu Raspberry Pi
« Odpověď #8 kdy: 09. 10. 2015, 12:08:03 »
to zvládne v realtime něco vládat do videa? Nebo čteš třeba snmek za vteřinu a do něho to vkládáš...
Picamera je super, taky používám, mám asi něco podobného, akorát mám malinu na chatě a jednou za čas pustím cronem script co mě nahraje video, zapíše data z čidel a odešle na web.

Ano dokáže. V knihovně picamera je přímo funkce která dokáže vkládat text do videa a kupodivu to je fakt realtime.
Jo koukal jsem do dokumentace jak to asi máš udělané... Na síť bych se určitě kouknul, jestli si nenarazil na limit, zkusil si ten druhej program pouštět přímo na malině? Pak by si zjistil jestli je to sítí...  Večer budu u maliny, tak můžu otestovat....

Na raspberry pi se mi bohužel nepovedlo nainstalovat VLC abych mohl stream zobrazovat. Chtělo by to nějakou aplikaci na zobrazení streamu, která je méně náročná.

Každopádně já bude večer taky u Rasspberry tak můžeme hodit řeč.
Zkus mplayer nepotřebuješ k němu ani x servet, tj stačí konzole a připojený monitor...

petr0707

Re:Video stream na localhostu Raspberry Pi
« Odpověď #9 kdy: 09. 10. 2015, 12:18:24 »
to zvládne v realtime něco vládat do videa? Nebo čteš třeba snmek za vteřinu a do něho to vkládáš...
Picamera je super, taky používám, mám asi něco podobného, akorát mám malinu na chatě a jednou za čas pustím cronem script co mě nahraje video, zapíše data z čidel a odešle na web.

Ano dokáže. V knihovně picamera je přímo funkce která dokáže vkládat text do videa a kupodivu to je fakt realtime.
Jo koukal jsem do dokumentace jak to asi máš udělané... Na síť bych se určitě kouknul, jestli si nenarazil na limit, zkusil si ten druhej program pouštět přímo na malině? Pak by si zjistil jestli je to sítí...  Večer budu u maliny, tak můžu otestovat....

Na raspberry pi se mi bohužel nepovedlo nainstalovat VLC abych mohl stream zobrazovat. Chtělo by to nějakou aplikaci na zobrazení streamu, která je méně náročná.

Každopádně já bude večer taky u Rasspberry tak můžeme hodit řeč.
Zkus mplayer nepotřebuješ k němu ani x servet, tj stačí konzole a připojený monitor...

Díky vyzkouším a dám vědět jak to dopadlo.