Forum: PC-Programmierung DIY "Streaming" Software


von Thomas (Gast)


Lesenswert?

Hallo, für ein Vogelbeobachtungs Projekt benötige ich folgendes:

An einer Position, an der es kein festes Internet gibt, dafür aber 
Mobiles Internet, soll ein Raspberry Pi oder ein Android-Gerät mit 
Kamera untergebracht werden.
Um einen Livestream zu sehen, müsste ich ja über das Mobilfunk Internet 
bis zu meinem Raspberry, bzw Android Gerät durchrouten was wohl mit den 
günstigen Mobile-Flats mit dyndns nicht geht.
Daher dachte ich mir, dass ich einfach vom Gerät aus Bilder an einen 
Webserver schicken würde. Da ich keinen eigenen Server habe, sondern nur 
einen bei Allinkl, kann ich ja nicht einfach ein beliebiges Programm 
laufen lassen um eine TCP Verbindung zu ermöglichen.
Wie würde man das den am geschicktesten Lösen? Bilder regelmäßig via. 
FTP oder HTTP hochladen? Oder gibt es dort etwas besseres?
Die Framerate ist nicht wichtig, aber sollte wohl unter 5 Sekunden 
liegen. Zielauflösung wäre 720x1280. Datenvolumen ist nicht so wild, da 
nur bei Bewegung gestreamt werden soll. Andernfalls bekommt man ein 
Standbild präsentiert.

Wäre nett wenn jemand weiterhelfen könnte.

Schöne Grüße

von Dirk D. (dicky_d)


Lesenswert?

Bei den üblichen Mobilfunk-Flatrates kannst du eh nicht von aussen eine 
Verbindung auf machen, du wirst GeNATed.

Bilder per HTTP-Post klingt doch ziemlich Sinvoll.

1: Ich würd das Zweistufig machen, du machst deine Aufnahmen und legst 
sie ins lokale dateisystem ab.

2: du Überträgst, je das älteste bild aus deinem Dateisystem an den 
Webserver und lässt dir das sinvoll quitieren, z.B. indem der Webserver 
dir nen Hash vom Bild nennt und du das vergleichst.
Dann kannst du das bei dir löschen, und mit dem nächsten weiter machen.

Damit verhinderst du Bildverlust bei "Stau" wenn grad dein Internet 
wegen schlechtem wetter oder so klemmt.

von Thomas (Gast)


Lesenswert?

Stimmt das ist eine Gute Idee. Hab mir schon überlegt, dass es hier zu 
einem immer größer werdenden Delay kommen könnte.

von Dirk D. (dicky_d)


Lesenswert?

Nur wenn du durchgänig Bilder verschicken willst.
wenn du immer wieder Pausen hast dann nicht.
Sollte das aber zu nem Problem werden kannst du z.B.
 - Einzelne Bilder verwerfen
 - Bei erhöhtem Delay die Qualität der Bilder vorm Hochladen reduzieren
 - Einzelne Bilder Überspringen und in Ruhezeiten Hochladen, wenn du nen 
Archiv der Bilder benötigst.

von physiker (Gast)


Lesenswert?

Wie wäre es mit einem reverse ssh tunnel? Damit sollte man alles umgehen 
können.

von Thomas (Gast)


Lesenswert?

Dazu muss ich mich mal einlesen, danke für den Tipp!

von imonbln (Gast)


Lesenswert?

Kling für mich erstmals nach einer Handelsüblichen IPCam, wenn es nicht 
um das Projekt geht sondern um das Vogel Beobachten, siehe Dich mal in 
Haus Sicherheitsbereich um da gibt es Fertige Kameras mit FTP Upload und 
viele mehr, vermutlich mit allen was du brauchst.

von Thomas (Gast)


Lesenswert?

Wäre denn der Aufbau einer VPN Verbindung die Lösung? Hätte ich so die 
Möglichkeit, direkt über VPN im gleichen Netzwerk wie das Gerät mit dem 
SurfStick zu sein? Vorrausgesetzt, das Gerät baut die VPN Verbindung 
nach irgendwohin auf. Gibt es vllt. sogar Mobile Router die das können?

von bastel_ (Gast)


Lesenswert?

Hab grad sowas ähnliches.
Hab RaspPi mit VPN mit der Fritz!Box gemacht, geht recht gut.
Du kannst auch die Bilder sammeln, als x264 komprimieren nachts oder so, 
und halt mit nem Tag Vyerzögerung senden. da sparst du Bandbreite.

Das Problem bisher ist der UMTS Stick... Nicht stabil. Habe schon offen, 
mit Kühlkörper und WP zwischen Chip und EMV Shield.. Macht keinen 
Unterschied. Habe mir jetzt einen miniPCIe Adapter v3 aus China kommen 
lassen, darauf dann eine MiniPCIe UMTS Karte, mal sehen ob das besser 
geht. Die v3 hat nen Linearregler, da kann ich nen Kühlkörper 
draufkleben, v2 macht es über nen superkleinen Schaltregler, der wird 
heiß und stabil lief es auch nicht. Mal schauen.

Also kurz, das würde gehen, was du willst, mit VPN sogar recht gut, aber 
die UMTS Verbindung ist das Problem.

von Thomas (Gast)


Lesenswert?

Gibt es da eine Anleitung, wie man das VPN einzurichten hat? Bin da 
leider nicht so fit. Ich muss einen VPN Server zur Verfügung stellen, 
nehme ich an?

von Karl (Gast)


Lesenswert?

Du brauchst einen Server oder besser Router, zu dem du die 
VPN-Verbindung aufbaust, dann brauchst du eine feste IP oder einen 
DynDNS-Service und einen VPN-Client auf dem RPi. Auf dem Router Musst du 
DynDNS und VPN nach Herstellervorgaben einrichten (eine FritzBpx hat 
beides und lässt sich gut bedienen) und dann den Client entsprechend den 
Einstellungen konfigurieren. Zum Schluss musst du noch ein kleines 
Skript schreiben,  dass als Corn-Job läuft und prüft, ob die Internet- 
und VPN-Verbindung steht. Wenn sie getrennt ist, muss das Skript die 
wieder aufbauen.

von Dirk D. (dicky_d)


Lesenswert?

Karl schrieb:
> [...] Zum Schluss musst du noch ein kleines
> Skript schreiben,  dass als Corn-Job läuft und prüft, ob die Internet-
> und VPN-Verbindung steht. Wenn sie getrennt ist, muss das Skript die
> wieder aufbauen.

Oder du benutzt dafür die ifdown / ifup scripte :)

von Bippo (Gast)


Lesenswert?

Wie wäre es mit der Android-App Track View?

https://play.google.com/store/apps/details?id=com.trackview&hl=de

von Karl (Gast)


Lesenswert?

P.S. ich bin mir nicht sicher, ob ich das über VPN machen würde. Ich 
würde ehr einen FTP-Server von einem Hoster nehmen. Zur Darstellung der 
Bilder kann man noch eine kleine Homepage basteln und fertig. Ich habe 
mal über ein Jahr Messdaten über eine Mobilverbindung gesammelt, da hat 
ein Python-Skript die daten auch an einen FTP-Server gesendet und ich 
habe sie dann dort abgeholt. Das einzige, die Daten wahren ca. 300 MB 
groß, ich habe sie in kleinere Blöcke a 10 MB aufgeteilt, aber bei 
deinen Bilden ist das nicht nötig. Prüfsummen brauchst du auch nicht vom 
FTP-Server berechnen lassen. Ein vergleich der Dateigröße sollte 
ausreichen. Checksummen sind im TCP/IP-Protokoll implementiert.

von Oliver R. (superberti)


Lesenswert?

Also, für den Urlaub stand ich vor der gleichen Problemstellung: Ich 
wollte gerne alle 15 Minuten ein Bild von unseren Sittichen haben.
Sehr schnell habe ich das Problem mit einem Raspi 2, der Raspi-Kamera 
(2. Version) und einem Upload auf das Google-Drive gelöst.
Hierfür bedarf es nur eines kleinen Python-Scripts, welches die Bilder 
macht und hochlädt.
Hat störungsfrei über den Urlaub funktioniert (hat selbst den KD-Ausfall 
überstanden).
Vorteil: Nur kleines Python-Script, kein DynDNS nötig, Google-Drive gibt 
es auch für jedes Android-Handy.

Wenn Du magst, dann poste ich das Script.

Gruß,
Oliver

von Blubb (Gast)


Lesenswert?

Oliver R. schrieb:
> Wenn Du magst, dann poste ich das Script.

Wäre nett :)

von Oliver R. (superberti)


Lesenswert?

So, hier das wirklich karge Script. Noch nicht mal Python:
1
#!/bin/bash
2
DATE=$(date +"%Y-%m-%dT%H%M%S")
3
raspistill -drc high -ex verylong -vf -hf -n -q 10 -a 12 -a "%d-%m-%Y %X" --width 1600 --height 1200 -o /tmp/$DATE.jpg
4
/home/pi/gdrive upload /tmp/$DATE.jpg -p MY_DIR_ID
5
if [ $? -eq 0 ]
6
then
7
  rm /tmp/$DATE.jpg
8
else
9
  mv /tmp/$DATE.jpg /home/pi/Pictures/$DATE.jpg
10
fi

Dieses Script habe ich dann von einem cron-job alle 15 Minuten aufrufen 
lassen.
Man lese die Anleitung zu 'gdrive', wie man 'MY_DIR_ID' erstellt 
(Zielordner auf dem Google-Drive). Mit den Einstellungen von raspistill 
muss man entsprechend der Anwendung ein wenig herumspielen. Ich habe 
eine recht große Belichtungszeit gewählt, um auch im Dämmerlicht ein 
halbwegs gutes Bild zu bekommen.

Gruß,
Oliver

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.