Strömning av video från flera kameror till en "mosaikbild"

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
flyvert
Inlägg: 93
Blev medlem: 26 oktober 2015, 21:00:53

Strömning av video från flera kameror till en "mosaikbild"

Inlägg av flyvert »

Hej.

Min första postning här och kommer på en rekommendation från en "elektronikkompis" då jag själv inte lyckas klura ut hur man använder "ffserver" och "ffmpeg" tillsammans.

Jag har ett gäng IP-kameror installerade som jag vill bygga gruppbilder för. Jag kör Linux (Debian) på Raspberry PI och har laddat hem och kompilerat libx264 och ffmpeg. Det går alldeles utmärkt att direktströmma gruppbilder till ffplay (o jag antar vad som helst som klarar videoströmmar, tex VLC) - se bild nedan.
gruppbild.jpg
Dock lyckas jag inte strömma resultatet till ffserver; ffmpeg bara spottar ur sig: Could not write header for output file #0 (incorrect codec parameters ?): Invalid data found when processing input


Syftet med ffserver är att jag sen kommer att publicera strömmen på min husautomations hemsida och göra att man kan få med alla kamerorna på samma bild med en uppkoppling och endast mot min ffserver (o inte alla kamerorna).

Har ställt frågor på ffmpeg-forumet men jag får inga svar...
- http://ffmpeg.gusari.org/viewtopic.php?f=12&t=2433
- http://ffmpeg.gusari.org/viewtopic.php?f=12&t=2428

Har någon här lyckats med samma sak eller något liknande så tar jag hemskt gärna emot tips och förslag.

/f
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
netrunner
Inlägg: 5510
Blev medlem: 4 februari 2005, 12:26:05
Ort: 127.0.0.1

Re: Strömning av video från flera kameror till en "mosaikbil

Inlägg av netrunner »

Som vanligt med allt som är öppenkod så är det gratis och funkar ofta bra... om man bara läser källkoden och har en längre mail konversation på polska med utvecklaren.

Jag streamade video med VLC, samtidigt som jag klippte ner bilden så att översta och understa delen försvann och sen komprimerades ordentligt samtidigt spara på disk.

Det gick ju, men det var ganska mycket jobb då officiella "dokumentationen" var inaktuell.

Frågan är ju vad du egentligt vill göra? Du får ju i alla fall inte något rörelselarm?

För ca 600kr får du en komplett kinesisk larmcentral färdig.
Användarvisningsbild
maDa
Inlägg: 4073
Blev medlem: 11 november 2005, 22:13:16
Ort: Malmö
Kontakt:

Re: Strömning av video från flera kameror till en "mosaikbil

Inlägg av maDa »

Ja, Hade du kört Windows så hade allt bara fungerat helt automagiskt enligt dina önskemål :roll:

ffserver är lite annorlunda och jag har inte blivit helt överrens med det heller. Det ska "matas" med befintlig fil eller feed från ffmpeg. ffservers RTSP implentation är inte helt korrekt heller.

Vad är det du tänker för streaming-format? RTSP?
Nerre
Inlägg: 26655
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Strömning av video från flera kameror till en "mosaikbil

Inlägg av Nerre »

Du har funderat på att köra t.ex. Zoneminder för kamerorna istället? (Där finns en "montage"-funktion.)
flyvert
Inlägg: 93
Blev medlem: 26 oktober 2015, 21:00:53

Re: Strömning av video från flera kameror till en "mosaikbil

Inlägg av flyvert »

netrunner skrev:Som vanligt med allt som är öppenkod så är det gratis och funkar ofta bra... om man bara läser källkoden och har en längre mail konversation på polska med utvecklaren.
Jo, men jag hade inte förväntat mig stekta sparvar som flög in o munnen....
... men det hade ju varit bra om man från FFMPEG dokumenterat & bifogat något fungerande ffmpeg -> ffserver exempel.

Nu rör det sig inte om Strömgatan 18 i Stockholm med Säpo som uppdragsgivare... hade tänkt klara mig med OpenSource och en par Raspberry PI á 400 mA på +5V.
flyvert
Inlägg: 93
Blev medlem: 26 oktober 2015, 21:00:53

Re: Strömning av video från flera kameror till en "mosaikbil

Inlägg av flyvert »

maDa skrev:Ja, Hade du kört Windows så hade allt bara fungerat helt automagiskt enligt dina önskemål :roll:
ffserver är lite annorlunda och jag har inte blivit helt överrens med det heller. Det ska "matas" med befintlig fil eller feed från ffmpeg. ffservers RTSP implentation är inte helt korrekt heller.
Vad är det du tänker för streaming-format? RTSP?
Har tagit ett principbeslut att inte köpa mer Microsoft-licenser, någonsin. Jobbar med eländet 40h+ timmar i veckan...
Har hemmavid dragits med allt från Windows 98 till Windows 10 och man blir bara "trött" när något nytt kommer ut.
Nästa dator blir en Mac eller en laptop med nån bra Linux i...

- Har en handfull kameror
- Har ett hemautomationssystem med bl.a. 1-wire, etc och ett antal Raspberry PIs inkl webgränssnitt, event-push, trendning av signaler, etc.
- Vill bygga mosaikbild att lägga ut på min webserver (Apache) för externt och internt bruk
- Vill helst inte köra annat OS än Debian på Raspberry PI för serverändamålen (läs waste:a mer än några watt och några hundra SEK per dator, slippa Windoze Update, McAffe, etc.)
- Tilltänkta klienter är PC och div iOS devices, interna (i huset) och via extern web

- Kan tänka mig att strömma valfritt protokoll, RSTP var bara det jag "grabbade tag i först".
- Vill inte skicka ut mosaiken via UDP multicast till alla IP-addresser i huset (det vore ju enkelt, det är ju det jag klippte in en bild från)
- I ett senare skede är jag sugen på att leka med motion detection i OpenSource och skapa egna larm om bildinnehållet ändras på visst sätt

Har du något förslag att göra detta på? Jag "snabbsurfade" upp FFMPEG (ffmpeg + ffserver) men det kanske finns andra sätt i OpenSource?
Senast redigerad av flyvert 27 oktober 2015, 18:07:52, redigerad totalt 2 gånger.
flyvert
Inlägg: 93
Blev medlem: 26 oktober 2015, 21:00:53

Re: Strömning av video från flera kameror till en "mosaikbil

Inlägg av flyvert »

Nerre skrev:Du har funderat på att köra t.ex. Zoneminder för kamerorna istället? (Där finns en "montage"-funktion.)
Bra förslag! Skall läsa på om Zoneminder när jag får tid! Tack!
Nerre
Inlägg: 26655
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Strömning av video från flera kameror till en "mosaikbil

Inlägg av Nerre »

Bör dock påpekas att pajen är nog för klen om du vill köra rörelsedetektering med Zoneminder.
flyvert
Inlägg: 93
Blev medlem: 26 oktober 2015, 21:00:53

Re: Strömning av video från flera kameror till en "mosaikbil

Inlägg av flyvert »

Nerre skrev:Bör dock påpekas att pajen är nog för klen om du vill köra rörelsedetektering med Zoneminder.
OK, köpte faktiskt den senaste 4-kärniga PI 2 för denna "lek", men givetvis får man rätta munnen efter matsäcken! :D
danielr112
Inlägg: 8044
Blev medlem: 18 januari 2009, 00:48:24
Ort: Alvesta, Småland

Re: Strömning av video från flera kameror till en "mosaikbil

Inlägg av danielr112 »

Zoneminder är bra kompetent idag ch funkar. CPU intensivt om man kör per default och med rörelsedetektering. Men stänger man av det och pillar lite så kan det nog funka utmärkt på en PI2. Beror lite på om och hur man sparar datan såklart. Ska man bara liveströmma så är det annorlunda

Vi körde detta på mitt förra jobb med runt 50+ kameror utan större problem.
Nerre
Inlägg: 26655
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Strömning av video från flera kameror till en "mosaikbil

Inlägg av Nerre »

flyvert skrev:
Nerre skrev:Bör dock påpekas att pajen är nog för klen om du vill köra rörelsedetektering med Zoneminder.
OK, köpte faktiskt den senaste 4-kärniga PI 2 för denna "lek", men givetvis får man rätta munnen efter matsäcken! :D
Grejen är ju att rörelsedetektering kräver att de två senaste bilderna sparas i minnet och jämförelse görs pixel till pixel (det är den enklaste formen, sen kan man även titta på intilliggande pixlar och grejer). Det kräver dels minne (och det är shared memory som krävs) och sen går det rätt mycket processorkraft.

Tänk dig två bilder på 640x480, det är nästan 1 MB per bild (då räknar jag RGB för pixlarna, 24 bitars färg, för jag tror det är så de ligger i minnet för jämförelse), d.v.s. 2 MB i minnet. En jämförelse kräver då 1 miljon subtraktioner. Med en framerate på 25 bilder i sekunden blir det alltså 25 miljoner instruktioner i sekunden, 25 MIPS i princip. Per kamera. Sen lär det ju tillkomma en del overhead, det är ju inte bara subtraktionerna som ska göras, det ska ju räknas hur många pixlar som har ändrat sig mer än tröskelvärdet och lite såna grejer.

Nu kör jag iofs bara 2 fps på kamerorna (ökar till 5 fps vid rörelse), ovanstående var bara ett räkneexempel.
flyvert
Inlägg: 93
Blev medlem: 26 oktober 2015, 21:00:53

Re: Strömning av video från flera kameror till en "mosaikbil

Inlägg av flyvert »

Är inte helt nöjd med den motion detection som är inbyggd i ACTi kamerorna jag har trots "vettiga" inställningsmöjligheter. Antingen ingen detektion av en passerande elefant eller så detektering av minsta pixel...

Var ett tag sugen på att testa ACTis egna inspelningsprogramvara (som är gratis upp till 16 kameror) men har mindre lust att låta en XP burk dra ström 24x365 för det ändamålet.

I full HD och med IR night mode blir det inte så många fps om bilden skall vara tolkningsbar; skall experimentera med detta vid första bästa tillfälle! Varje kamera kan leverera två olika bildströmmar, tex en 1920x1080, 13 fps, H.264 och en annan 640x480, 7 fps, MJPEG.


Är dock fortfarande sugen på att få till det med ffmpeg/ffserver...
Onkelborg
Inlägg: 190
Blev medlem: 10 mars 2007, 02:32:32
Ort: Gottne
Kontakt:

Re: Strömning av video från flera kameror till en "mosaikbil

Inlägg av Onkelborg »

Rent spontant: Sådan här bildhantering borde vara en barnlek för ett inte alltför dåligt grafikkort - avlasta själva jämförandet av bilderna till GPUn med hjälp av någon pixelshader eller liknande. Borde inte vara några problem alls att köra i realtid
flyvert
Inlägg: 93
Blev medlem: 26 oktober 2015, 21:00:53

Re: Strömning av video från flera kameror till en "mosaikbil

Inlägg av flyvert »

Onkelborg skrev:Rent spontant: Sådan här bildhantering borde vara en barnlek för ett inte alltför dåligt grafikkort - avlasta själva jämförandet av bilderna till GPUn med hjälp av någon pixelshader eller liknande. Borde inte vara några problem alls att köra i realtid
För professionellt bruk (Strömgatan 18...) kan man nog tänka sig både ett o annat o kosta på sig hårdvara med fläktar och i jämförelse med Raspberry PI oändliga strömbehov.

Mina primära mål är:
1) Stanna på Raspberry PI hårdvara
2) OpenSource
3) Muxa flera kamerabilder till en gruppbild
4) Egen Motion Detection att ersätta den inbyggda som jag inte riktigt fått kläm på

Med ffmpeg kan jag redan idag strömma en muxad bild till en eller flera permanenta klienter, alternativt 24x7 dränka mitt hemma-LAN med feta multicast oavsett om någon klient är igång eller inte.

Med ffserver trodde jag att jag kunde ordna "on demand" unicastade strömmar till temporära klienter, kanske en iPad, VLC eller Kodi (XBMC) klient hemma eller en temporärt ansluten iPhone över internet (HTTPS eller VPN).
Användarvisningsbild
maDa
Inlägg: 4073
Blev medlem: 11 november 2005, 22:13:16
Ort: Malmö
Kontakt:

Re: Strömning av video från flera kameror till en "mosaikbil

Inlägg av maDa »

flyvert skrev:Har tagit ett principbeslut att inte köpa mer Microsoft-licenser, någonsin. Jobbar med eländet 40h+ timmar i veckan...
Har hemmavid dragits med allt från Windows 98 till Windows 10 och man blir bara "trött" när något nytt kommer ut.
Nästa dator blir en Mac eller en laptop med nån bra Linux i...
Samma här, jag var bara ironisk :D Många som är snabba med det uttalandet när man nämner Opensource.
flyvert skrev: - Tilltänkta klienter är PC och div iOS devices, interna (i huset) och via extern web

- Kan tänka mig att strömma valfritt protokoll, RSTP var bara det jag "grabbade tag i först".
- Vill inte skicka ut mosaiken via UDP multicast till alla IP-addresser i huset (det vore ju enkelt, det är ju det jag klippte in en bild från)
- I ett senare skede är jag sugen på att leka med motion detection i OpenSource och skapa egna larm om bildinnehållet ändras på visst sätt

Har du något förslag att göra detta på? Jag "snabbsurfade" upp FFMPEG (ffmpeg + ffserver) men det kanske finns andra sätt i OpenSource?
Vad iOS-enheter klarar att spela i form av "embedded" i en webbsida är jag lite osäker på. Men jag har en känsla att HTML5 och RTSP samt Apple HLS är det tänkbara (vanlig MP4 fil via HTTP fungerar bra iaf.)

Det dumma med ffserver som jag förstår är den den *måste* koda om av någon anledning ("VideoCodec copy" fungerar inte), vilket kommer bli rätt tungt för din stackars RPi.

Men eftersom ffmpeg's RTSP implentation inte är korrekt/komplett så skulle jag nog kika på live555
http://www.live555.com/mediaServer/#http-live-streaming

ffmpeg --(mpeg-ts)--> live555 --(rtsp)---> klienter
Skriv svar