Diabildsscanner av en fågelkamera av en hög med objektiv
Diabildsscanner av en fågelkamera av en hög med objektiv
Jag hade en hög med gamla kameraobjektiv från mitt första köp av en systemkamera på 80-talet. Jag blev aldrig någon stjärnfotograf, kameran stod efter ett tag mest i auto-läge och så småningom kom digitalkameran och tog över. Men objektiven blev kvar i ett skåp, det går visserligen (fortfarande) att sälja dem, men så har det inte heller blivit. Frågan var om man istället kunde göra något annat av dem?
Vi har några fågelintresserade i familjen (speciellt mitt äldsta barnbarn) och en tanke var då att förse de gamla objektiven med en hemmagjord nätverkskamera för streaming, chromecastning, kanske bildtagning och kanske något mer. Våra vinterfåglar befinner sig i träden mellan 10 och 25 meter från huset, så kanske kunde några av objektiven "nå" dit.
Detta blev förra höstens byggprojekt som blev såpass klart att det blev väl använt. Alla önskemål som ställdes i början uppfylldes inte, så självklart finns mer att göra. Dock tog en annan återanvändning överhanden och blev till vårens projekt som alltså pågår.
Tanken nu är att återanvända den hemmabyggda kameran till att scanna ca 4000 diabilder. Tidigare ambitioner att scanna dessa har stupat på orimlighet eller tristess. Den första scannern var någon billig från Clas i sjön eller Kjell som bara tog en bild i taget och en evig tid att överföra till datorn. Nästa försök var en Epson flatbäddscanner med insats för diabilder men även den kom på skam. Läste sedan att det ger utmärkt kvalitet (enligt fotonördar) att modifiera en diabildsprojektor och sätta en hyfsad kamera framför den för att ta en bild på diabilden. Med detta slipper man att ta bort diabilderna ur magasinen och kan helt enkelt mata fram dem med projektorn mekanism i snabb takt.
Om man nu dessutom kan titta på bilderna t.ex. på TV'n samtidigt som man scannar så har man i princip fått ner den extra tiden för scanning till noll. Hälften av bilderna är arvegods från min far och många av dem har vi nog aldrig sett trots att vi finns med på dem. Så ja, det var själva grundtanken med det hela.
Men jag lägger först in lite bilder från bygget av fågelkameran. Utan den hade det inte blivit någon "diabildsscanner" heller.
Vi har några fågelintresserade i familjen (speciellt mitt äldsta barnbarn) och en tanke var då att förse de gamla objektiven med en hemmagjord nätverkskamera för streaming, chromecastning, kanske bildtagning och kanske något mer. Våra vinterfåglar befinner sig i träden mellan 10 och 25 meter från huset, så kanske kunde några av objektiven "nå" dit.
Detta blev förra höstens byggprojekt som blev såpass klart att det blev väl använt. Alla önskemål som ställdes i början uppfylldes inte, så självklart finns mer att göra. Dock tog en annan återanvändning överhanden och blev till vårens projekt som alltså pågår.
Tanken nu är att återanvända den hemmabyggda kameran till att scanna ca 4000 diabilder. Tidigare ambitioner att scanna dessa har stupat på orimlighet eller tristess. Den första scannern var någon billig från Clas i sjön eller Kjell som bara tog en bild i taget och en evig tid att överföra till datorn. Nästa försök var en Epson flatbäddscanner med insats för diabilder men även den kom på skam. Läste sedan att det ger utmärkt kvalitet (enligt fotonördar) att modifiera en diabildsprojektor och sätta en hyfsad kamera framför den för att ta en bild på diabilden. Med detta slipper man att ta bort diabilderna ur magasinen och kan helt enkelt mata fram dem med projektorn mekanism i snabb takt.
Om man nu dessutom kan titta på bilderna t.ex. på TV'n samtidigt som man scannar så har man i princip fått ner den extra tiden för scanning till noll. Hälften av bilderna är arvegods från min far och många av dem har vi nog aldrig sett trots att vi finns med på dem. Så ja, det var själva grundtanken med det hela.
Men jag lägger först in lite bilder från bygget av fågelkameran. Utan den hade det inte blivit någon "diabildsscanner" heller.
Re: Diabildsscanner av en fågelkamera av en hög med objektiv
Utgångspunkten för fågelkameran var alltså den befintliga samlingen objektiv. Från tidigare fanns även ett kamerastativ (tripod). Till detta behövdes då ett kamerabygge. En överbliven RaspberryPi 3 fanns i diverselådan, kanske skulle den kunna duga som exekveringsplattform. Behövdes då en hyfsad kamerasensor och något sätt att mekaniskt få den att passa med de drygt 40 år gamla objektiven.
Det blev den här kameramodulen för RPi baserad på Sonys IMX477R sensor:
Sensorns upplösning: 12.5 Mpixel
Sensorns storlek: 7.9mm på diagonalen.
Elektrisk anslutning: Bandkabel direkt till RPi's kamerakontakt.
Linsfäste: CS eller C, adapter mellan dessa medföljer
Stativfäste: Standard.
Pris vid tillfället: 699kr.
Sensorn kan konfigureras på fyra olika sätt beroende på användning:
4056 x 3040 px, 10 fps
2028 x 1520 px, 40 fps
2028 x 1080 px, 50 fps
1332 x 990 px, 120 fps
Det andra formatet beskär inte sensorn utan är troligen en s.k. binning. Det betyder att en utgående pixel skapas genom sammanlagring av fyra grannar. Jag tänker att man till priset av lägre upplösning då får bättre ljuskänslighet och mindre brus. Det tredje formatet beskär sensorn endast i höjdled och är anpassat för HDTV (även här med binning). Det fjärde formatet beskär sensorn kraftigt. Lite oklart för mig vad det är till för.
RPi3 (Broadcom-chippet) har inbyggd hårdvaru-acceleration för efterprocessering av den råa bilden från sensorn, allt från t.ex. sensornära justering av känslighet och vitbalans upp till t.ex. H264 Mpeg kodning för strömning. Kanske lite mer om detta senare.
Det blev den här kameramodulen för RPi baserad på Sonys IMX477R sensor:
Sensorns upplösning: 12.5 Mpixel
Sensorns storlek: 7.9mm på diagonalen.
Elektrisk anslutning: Bandkabel direkt till RPi's kamerakontakt.
Linsfäste: CS eller C, adapter mellan dessa medföljer
Stativfäste: Standard.
Pris vid tillfället: 699kr.
Sensorn kan konfigureras på fyra olika sätt beroende på användning:
4056 x 3040 px, 10 fps
2028 x 1520 px, 40 fps
2028 x 1080 px, 50 fps
1332 x 990 px, 120 fps
Det andra formatet beskär inte sensorn utan är troligen en s.k. binning. Det betyder att en utgående pixel skapas genom sammanlagring av fyra grannar. Jag tänker att man till priset av lägre upplösning då får bättre ljuskänslighet och mindre brus. Det tredje formatet beskär sensorn endast i höjdled och är anpassat för HDTV (även här med binning). Det fjärde formatet beskär sensorn kraftigt. Lite oklart för mig vad det är till för.
RPi3 (Broadcom-chippet) har inbyggd hårdvaru-acceleration för efterprocessering av den råa bilden från sensorn, allt från t.ex. sensornära justering av känslighet och vitbalans upp till t.ex. H264 Mpeg kodning för strömning. Kanske lite mer om detta senare.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Diabildsscanner av en fågelkamera av en hög med objektiv
Hittade en plastlåda i mitt förråd som fick duga för kameran. Det blir ingen "beauty contest" av detta, det skjuts på framtiden. I detta skedet hade jag ju ingen aning om hur bra eller dåligt detta skulle bli. Och jag är absolut ingen kameraexpert.
Hopbyggt blev resultatet så här:
Kameramodulens kretskort syns på undre våningen till vänster. Knappen överst är inte till för bildtagning (det är ju en nätverkskamera) utan endast till för att kunna slå på och av RPi utan att krasha den. Kylflänsarna fanns inte där från början utan är en (sur) erfarenhet senare: Bildbehandling i realtid drar hejdlöst med effekt. Återkommer till det.
Framifrån ser det ut så här (repigt, ja, jag vet):
Ringen med låsning som syns är till för att finjustera "focal distance", d.v.s. avståndet mellan sensorn och objektivet. Det visar sig speciellt viktigt att få till detta exakt för zoom-objektiv, annars blir inte fokus- och zoom-inställningarna oberoende av varandra. Focal distance ska vara 12.526 mm för CS-fäste och 17.526 mm för C-fäste. Men mina objektiv har ett helt annat fäste och focal distance.
Den grönaktiga beläggningen på sensorn är ett IR-filter. Vill man fånga IR får man plocka bort det, men det var inte relavant här.
Hopbyggt blev resultatet så här:
Kameramodulens kretskort syns på undre våningen till vänster. Knappen överst är inte till för bildtagning (det är ju en nätverkskamera) utan endast till för att kunna slå på och av RPi utan att krasha den. Kylflänsarna fanns inte där från början utan är en (sur) erfarenhet senare: Bildbehandling i realtid drar hejdlöst med effekt. Återkommer till det.
Framifrån ser det ut så här (repigt, ja, jag vet):
Ringen med låsning som syns är till för att finjustera "focal distance", d.v.s. avståndet mellan sensorn och objektivet. Det visar sig speciellt viktigt att få till detta exakt för zoom-objektiv, annars blir inte fokus- och zoom-inställningarna oberoende av varandra. Focal distance ska vara 12.526 mm för CS-fäste och 17.526 mm för C-fäste. Men mina objektiv har ett helt annat fäste och focal distance.
Den grönaktiga beläggningen på sensorn är ett IR-filter. Vill man fånga IR får man plocka bort det, men det var inte relavant här.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Diabildsscanner av en fågelkamera av en hög med objektiv
Nästa steg var att optiskt och mekaniskt passa ihop de gamla Canonobjektiven med kameramodulen. Det tog ett tag att reda ut de olika fattningarna och focal distance innan man kunde börja leta efter eventuella anpassningar.
Till vänster befintliga objektiv:
- Basic 50mm objektiv
- Zoom objektiv 35-70mm
- Zoom objektiv 70-200mm
- Extension ring 2x.
Den sistnämnda utökar det större av de två zoom-objektiven till 140-400mm.
Fattningen till mina objektiv heter FD med focal distance 42.000mm. Lyckligtvis fanns det adapter att köpa mellan FD -> C. Och med den medföljande adaptern från C -> CS så gick det hela ihop sig.
Till vänster befintliga objektiv:
- Basic 50mm objektiv
- Zoom objektiv 35-70mm
- Zoom objektiv 70-200mm
- Extension ring 2x.
Den sistnämnda utökar det större av de två zoom-objektiven till 140-400mm.
Fattningen till mina objektiv heter FD med focal distance 42.000mm. Lyckligtvis fanns det adapter att köpa mellan FD -> C. Och med den medföljande adaptern från C -> CS så gick det hela ihop sig.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Diabildsscanner av en fågelkamera av en hög med objektiv
Kul projekt.
Men du kan nog inte räkna med särskilt skarpa bilder eftersom sensorn är så liten, i jämförelse med vad objektiven ursprungligen är gjorda för.
Det blir en cropfaktor på nästan 5,5ggr, dvs det blir bara ett litet utsnitt från mitten av bilden som faller på sensorn och det utsnittet blir då hela bilden så att säga.
Objektivets alla fel och brister blir alltså uppförstorat 5,5ggr.
Men du kan nog inte räkna med särskilt skarpa bilder eftersom sensorn är så liten, i jämförelse med vad objektiven ursprungligen är gjorda för.
Det blir en cropfaktor på nästan 5,5ggr, dvs det blir bara ett litet utsnitt från mitten av bilden som faller på sensorn och det utsnittet blir då hela bilden så att säga.
Objektivets alla fel och brister blir alltså uppförstorat 5,5ggr.
Re: Diabildsscanner av en fågelkamera av en hög med objektiv
Precis! Så är det. Visserligen är objektiven av bra kvalitet, men det är helt korrekt det du skriver. Vi kan återkomma till det.
För de som inte är lika insatta (liksom gällde mig själv innan jag läste på) kan man förklara det lite närmare.
En beskärningssensor (crop) är en sensor som är mindre än den infångade bilden. En klassisk kamera för "35mm film" (såsom min Canon A1) har filmformatet (sensorformatet) 24x36mm, vilket ger en diagonal på 43.2mm. Det är alltså den yta som mina objektiv normalt projicerar bilden över. RPi HQ sensorn har diagonalen 7.9mm vilket ger en beskärning för RPi med faktorn 43.2/7.9= 5.5 (precis som @Gimbal snabbt räknade ut).
Vad gäller avbildningen ("förstoringen") kan man se det som att "mitt" system först zoomar in såsom anges av objektiven och därefter ytterligare 5.5 gånger genom att sensorn är mindre (ungefär som ett digitalt zoom). Fotofolket brukar anse att 50mm motsvarar vad ögonen uppfattar och då kan ses som en förstoring på 1. Motsvarande ekvivalenta "zoom" och förstoring blir då:
Objektiv Tot zoom Förstoring
400mm 2200mm 44 ggr
200mm 1100mm 22 ggr
70mm 385mm 7.7 ggr
35mm 192mm 3.8 ggr
Detta kan jämföras med den kanske vanligaste handhållna kikaren som har en förstoring på omkring 8-10 ggr.
Förutom den nackdel som @Gimbal tar upp så tar sensorn endast emot 1/(5.5*5.5) = 1/30 av det ljus som en fullstor sensor skulle hade gjort. Jag tycker mig märka detta som att jag måste ha relativt stor bländaröppning när det börjar skymma ute. Det gör i och för sig inte så mycket, men det kräver en besvärande noggrann skärpeinställning. Det finns inget autofokus.
Det är så jag har uppfattat det, men jag är absolut inte fotokunnig utan har läst på lite vartefter. Här och senare kan det säkert bli lite fel här och var.
För de som inte är lika insatta (liksom gällde mig själv innan jag läste på) kan man förklara det lite närmare.
En beskärningssensor (crop) är en sensor som är mindre än den infångade bilden. En klassisk kamera för "35mm film" (såsom min Canon A1) har filmformatet (sensorformatet) 24x36mm, vilket ger en diagonal på 43.2mm. Det är alltså den yta som mina objektiv normalt projicerar bilden över. RPi HQ sensorn har diagonalen 7.9mm vilket ger en beskärning för RPi med faktorn 43.2/7.9= 5.5 (precis som @Gimbal snabbt räknade ut).
Vad gäller avbildningen ("förstoringen") kan man se det som att "mitt" system först zoomar in såsom anges av objektiven och därefter ytterligare 5.5 gånger genom att sensorn är mindre (ungefär som ett digitalt zoom). Fotofolket brukar anse att 50mm motsvarar vad ögonen uppfattar och då kan ses som en förstoring på 1. Motsvarande ekvivalenta "zoom" och förstoring blir då:
Objektiv Tot zoom Förstoring
400mm 2200mm 44 ggr
200mm 1100mm 22 ggr
70mm 385mm 7.7 ggr
35mm 192mm 3.8 ggr
Detta kan jämföras med den kanske vanligaste handhållna kikaren som har en förstoring på omkring 8-10 ggr.
Förutom den nackdel som @Gimbal tar upp så tar sensorn endast emot 1/(5.5*5.5) = 1/30 av det ljus som en fullstor sensor skulle hade gjort. Jag tycker mig märka detta som att jag måste ha relativt stor bländaröppning när det börjar skymma ute. Det gör i och för sig inte så mycket, men det kräver en besvärande noggrann skärpeinställning. Det finns inget autofokus.
Det är så jag har uppfattat det, men jag är absolut inte fotokunnig utan har läst på lite vartefter. Här och senare kan det säkert bli lite fel här och var.
Re: Diabildsscanner av en fågelkamera av en hög med objektiv
Det fysiska slutresultatet ser ut så här med 35-70mm objektivet. Fågelmatarna sitter i fruktträden längst bort i trädgården.
Det större 70-200mm objektivet är så tungt att kameramodulen inte är lämplig för att hålla det uppe. Köpte därför en klammer och då blev det så här.
Den observante kan säkert se att det finns en besvärande bugg i detta utförande. Fokusinställning ska ske genom att man vrider det grepp som klammern nu sitter i. När objektivet väl är fastklamrat så måste fokusinställning alltså ske genom att istället vrida kameran och därmed vrids förstås bilden också! Det går förvisso att kompensera genom inställningarna i tripodden (upp till 90 grader), men nej, detta var en klar miss.
Det mindre zoom-objektivet är relativt lätt att rikta in. Det fungerar även med en mini-tripod utan alla inställningsfinesser som kan stå lite mer diskret på fönsterbrädan. Men att hitta rätt och rikta in det större zoomobjektivet på max är betydligt mer krävande. Speciellt inställt på 200mm vilket alltså motsvarar 1100mm. Det blir också oerhört känsligt för vibrationer i golvet när man går på det (uppreglat självbärande ekparkett).
Det större 70-200mm objektivet är så tungt att kameramodulen inte är lämplig för att hålla det uppe. Köpte därför en klammer och då blev det så här.
Den observante kan säkert se att det finns en besvärande bugg i detta utförande. Fokusinställning ska ske genom att man vrider det grepp som klammern nu sitter i. När objektivet väl är fastklamrat så måste fokusinställning alltså ske genom att istället vrida kameran och därmed vrids förstås bilden också! Det går förvisso att kompensera genom inställningarna i tripodden (upp till 90 grader), men nej, detta var en klar miss.
Det mindre zoom-objektivet är relativt lätt att rikta in. Det fungerar även med en mini-tripod utan alla inställningsfinesser som kan stå lite mer diskret på fönsterbrädan. Men att hitta rätt och rikta in det större zoomobjektivet på max är betydligt mer krävande. Speciellt inställt på 200mm vilket alltså motsvarar 1100mm. Det blir också oerhört känsligt för vibrationer i golvet när man går på det (uppreglat självbärande ekparkett).
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
- HUGGBÄVERN
- Tidigare soundbrigade
- Inlägg: 34730
- Blev medlem: 23 augusti 2006, 22:44:11
- Ort: Lilla Paris
- Kontakt:
Re: Diabildsscanner av en fågelkamera av en hög med objektiv
För maximalt resultat ska du egentligen ha ett långt makroobjektiv.
(Jag har skannat diabilder i en flatbäddsskanner och det blev "sådär" och i en diabildskanner jag hyrde - det blev också sådäe. Tänker inte skanna om diabilderna men väl remsor av sv/v negativfilm.))
(Jag har skannat diabilder i en flatbäddsskanner och det blev "sådär" och i en diabildskanner jag hyrde - det blev också sådäe. Tänker inte skanna om diabilderna men väl remsor av sv/v negativfilm.))
Re: Diabildsscanner av en fågelkamera av en hög med objektiv
Jag Köpte en beg Reflecta DigitDia 5000, har skannat in ca 60k bilder, med mycket bra resultat.
Använder VueScan till detta
Använder VueScan till detta
Re: Diabildsscanner av en fågelkamera av en hög med objektiv
Kul projekt och bra jobbat, särskilt mtp att mycket av grejerna är sådant du haft hemma. Då får man ju ofta kompromissa en del, det hör till men kan bli riktigt bra ändå.
Re: Diabildsscanner av en fågelkamera av en hög med objektiv
För att dämpa vibrationerna kan du försöka öka massan på kameran (eller det som sitter ovanpå stativet, montera nåt tungt där som du sen monterar kameran på). Kanske lägga gummi under stativets fötter.
Re: Diabildsscanner av en fågelkamera av en hög med objektiv
Som tur är så är 35-70mm objektivet ett makroobjektiv. Men kanske inte så "nära" som man hade önskat. Jag kan behöva lite hjälp här, men tar det när jag kommer till Diabilds-projektet.HUGGBÄVERN skrev: ↑12 maj 2025, 22:00:30 För maximalt resultat ska du egentligen ha ett långt makroobjektiv.
Re: Diabildsscanner av en fågelkamera av en hög med objektiv
Intressant. Den projektor jag håller på och modifierar är också en gammal Reflecta (Diamator AF). Då kanske själva mekaniken för att mata fram och centrera dian är av hyfsad kvalitet.
Re: Diabildsscanner av en fågelkamera av en hög med objektiv
Så mycket om hårdvaran till fågelkameran. Därpå väldigt mycket jobb med mjukvaran och användarsnittet. Ska försöka hålla detta mycket kort.
Provade första två fria applikationer MotionEye och Restreamer. Den förra inriktad på övervakning, den senare på internetöverföring av kameraströmmar. Efter mycket hackande och handpåläggning på grund av problem med inkompatibilitet mot senare utgåvor av RasperyPi OS, så gick det att få dem att fungera och var för sig göra det de var avsedda för. Men det var alldeles för mycket tingeltangel och komplicerade användargränssnitt för att bara tillhandahålla en ensam bra nätverkskamera för fåglar. Dessutom uppfyllde ingen av dem ensam de krav jag hade. MotionEye körde dessvärre endast i MJpeg (Moving Jpeg) vilket begränsade hastigheten till 2fps utan fläkt (som jag inte hade tänkt på).
Så valet blev att göra rätt mycket själv, framförallt i användargränssnittet. Dessa komponenter används:
Libcamera: Bibliotek (.so) som tillhandahåller C-API mot kameran. Ingår i standarddistributionen av Rpi OS. Äger kameran.
Picamera2: Python paket för kameran. En plattform för applikationer skrivna i Python. Använder libcamera.
Camera: Eget pythonprogram på Picamera2 för att konfigurera kameran och skapa en RTMP ström mot en streaming server.
Nginx: Webserver med tillägg för RTMP och strömning över HLS/HTTP. Går även att strömma vidare över RTMP.
VideoJS: Öppen standard HLS-spelare i JavaScript. Hämtas on-demand.
Streamer: Egen websida skriven i HTML och JS för video och bilder. Inkluderar VideoJS. Kör på Nginx.
Flask: Liten webapp server.
Webapp: Eget pythonprogram på Flask för att tillhandahålla info om CPU status via HTTP. Frontas av Nginx som reverse proxy.
För strömmande video mot standardbrowser eller TV över nätet så visade sig det enda vettiga formatet vara Mpeg/H264/HLS/HTTP. Fördelen är immuniteten mot paketförluster, fördröjningar och jitter i nätet. Dessutom det format som blivit defaktostandard för videomedia och klaras av alla browsers, TV, chromecast mm. Nackdelen (ska det visa sig) är den långa buffertering på 10-20s. Kodningen sker så här:
Raw -> H264: Fixas av Broadcoms hårdvara. Konfigurerad till 1920x1080, 30fps, samt 3Mb/s. HW-kodningen ger låg effekt.
H264 -> RTMP: FFMPEG sköter Inkappsling och segmentering. Skickas mot Nginx. Drar inte särskilt mycket CPU.
RTMP -> HLS: Nginx fixar hämtning från ett godtyckligt antal klienter över HTTP. Derar inte heller så mycket CPU.
För riktning och fokusering av kameran fungerar det förstås inte med 10-20s fördröjning. Då får man istället använda t.ex. VLC som kan ta emot realtidsströmmen RTMP. Nginx tillhandahåller även denna mot klienter.
När det kommer till stillbildstagning, också det över nätet förstås, får man problem med den långa bufferteringen. När man väl observerar fågeln och vill ta bilden i hög upplösning (högre än HDTV), så har fågeln med största säkerhet redan flugit därifrån. Det är liksom 10-20s för sent att då beordra kameran att ta en högupplöst stillbild. Enda sättet att lösa detta är att köra låglatens MJpeg i låg framrate (klaras också av de flesta webbrowsers) och bygga till fläktkylning. Detta skjuter jag på framtiden och nöjer mig nu med att koda in en stillbildstagning i klienten utgående från en fryst frame från videoströmmen. Det ger förstås inte bättre kvalitet i stillbilden än 1920x1080. Möjligen lite sämre.
Provade första två fria applikationer MotionEye och Restreamer. Den förra inriktad på övervakning, den senare på internetöverföring av kameraströmmar. Efter mycket hackande och handpåläggning på grund av problem med inkompatibilitet mot senare utgåvor av RasperyPi OS, så gick det att få dem att fungera och var för sig göra det de var avsedda för. Men det var alldeles för mycket tingeltangel och komplicerade användargränssnitt för att bara tillhandahålla en ensam bra nätverkskamera för fåglar. Dessutom uppfyllde ingen av dem ensam de krav jag hade. MotionEye körde dessvärre endast i MJpeg (Moving Jpeg) vilket begränsade hastigheten till 2fps utan fläkt (som jag inte hade tänkt på).
Så valet blev att göra rätt mycket själv, framförallt i användargränssnittet. Dessa komponenter används:
Libcamera: Bibliotek (.so) som tillhandahåller C-API mot kameran. Ingår i standarddistributionen av Rpi OS. Äger kameran.
Picamera2: Python paket för kameran. En plattform för applikationer skrivna i Python. Använder libcamera.
Camera: Eget pythonprogram på Picamera2 för att konfigurera kameran och skapa en RTMP ström mot en streaming server.
Nginx: Webserver med tillägg för RTMP och strömning över HLS/HTTP. Går även att strömma vidare över RTMP.
VideoJS: Öppen standard HLS-spelare i JavaScript. Hämtas on-demand.
Streamer: Egen websida skriven i HTML och JS för video och bilder. Inkluderar VideoJS. Kör på Nginx.
Flask: Liten webapp server.
Webapp: Eget pythonprogram på Flask för att tillhandahålla info om CPU status via HTTP. Frontas av Nginx som reverse proxy.
För strömmande video mot standardbrowser eller TV över nätet så visade sig det enda vettiga formatet vara Mpeg/H264/HLS/HTTP. Fördelen är immuniteten mot paketförluster, fördröjningar och jitter i nätet. Dessutom det format som blivit defaktostandard för videomedia och klaras av alla browsers, TV, chromecast mm. Nackdelen (ska det visa sig) är den långa buffertering på 10-20s. Kodningen sker så här:
Raw -> H264: Fixas av Broadcoms hårdvara. Konfigurerad till 1920x1080, 30fps, samt 3Mb/s. HW-kodningen ger låg effekt.
H264 -> RTMP: FFMPEG sköter Inkappsling och segmentering. Skickas mot Nginx. Drar inte särskilt mycket CPU.
RTMP -> HLS: Nginx fixar hämtning från ett godtyckligt antal klienter över HTTP. Derar inte heller så mycket CPU.
För riktning och fokusering av kameran fungerar det förstås inte med 10-20s fördröjning. Då får man istället använda t.ex. VLC som kan ta emot realtidsströmmen RTMP. Nginx tillhandahåller även denna mot klienter.
När det kommer till stillbildstagning, också det över nätet förstås, får man problem med den långa bufferteringen. När man väl observerar fågeln och vill ta bilden i hög upplösning (högre än HDTV), så har fågeln med största säkerhet redan flugit därifrån. Det är liksom 10-20s för sent att då beordra kameran att ta en högupplöst stillbild. Enda sättet att lösa detta är att köra låglatens MJpeg i låg framrate (klaras också av de flesta webbrowsers) och bygga till fläktkylning. Detta skjuter jag på framtiden och nöjer mig nu med att koda in en stillbildstagning i klienten utgående från en fryst frame från videoströmmen. Det ger förstås inte bättre kvalitet i stillbilden än 1920x1080. Möjligen lite sämre.
Re: Diabildsscanner av en fågelkamera av en hög med objektiv
Du kommer heller aldrig få någon skarp bild om du fotar genom ett villafönster. Det är helt hopplöst.