Was ich über die Ostertage rausgefunden hab
Hallo Leute,
ich hatte die Ostertage Zeit, mich mit der Kamera eingängig zu beschäftigen.
Aktuell kenne ich keine Möglichkeit, der Kamera mehr als 640x480 per cgi-Aufruf zu entlocken. Theoretisch sollte 96 das richtige Setting für die 720p Auflösung sein.
Wenn man die Kamera im Browser auf 720p stellt, bekommt man das Setting der Kamera per folgenden cgi-Aufruf:
Rich (BBCode):
http://192.168.178.5/get_camera_params.cgi?user=admin&pwd=Geheim
Das Setting der Kamera:
Rich (BBCode):
var resolution=96;
var brightness=128;
var contrast=128;
var mode=0;
var flip=0;
Dummerweise liefert dieser Aufruf dann aber auch nur VGA:
Rich (BBCode):
http://192.168.178.5/videostream.cgi?user=admin&pwd=Geheim&resolution=96
Man kann aber dem Stream vom Browser bekommen:
Rich (BBCode):
http://192.168.178.5/videostream.flv?pwd=Geheim&user=admin
Leider ist dieser Stream ziemlich komisch. Das Video ist mit h264 encoded worden. Aber so ganz sauber ist dieser Stream leider nicht. Daher schmiert etwa ein VLC nach ein paar Sekunden einfach ab. Zuerst dachte ich, die cgi-Status aufrufe der Web-Gui wirken als KeepAlive.
ffmpeg ist theoretisch in der Lage, aus einem eingehenden Stream einen Stream in einem anderen Format zu machen. Etwa mjepg oder rtsp. Praktisch hat sich ffmpeg hier etwas geziert. Das Programm ist nicht ganz trivial zu bedienen und der merkwürdige flv-Stream macht es nicht besser.
Ich konnte zwar den Stream in ffmpeg reinstecken und dann vom ffserver als rtsp abfragen, aber funktionieren tut das gestreamte rtsp-Video dann leider nicht.
Hier mein Setting vom ffserver.conf
Rich (BBCode):
HTTPPort 1234
RTSPPort 554
RTSPBindAddress 0.0.0.0
HTTPBindAddress 0.0.0.0
MaxClients 100
MaxBandwidth 10000
CustomLog -
<Feed feed1.ffm>
File /tmp/feed1.ffm
FileMaxSize 10M
ACL allow 127.0.0.1
ACL allow localhost
ACL allow 192.168.0.0 192.168.255.255
</Feed>
<Stream live.sdp>
Format rtp
Feed feed1.ffm
VideoCodec libx264
VideoBitRate 10000
VideoSize 1280x720
AVOptionVideo crf 23
AVOptionVideo preset medium
AVOptionVideo flags +global_header
Noaudio
</Stream>
<Stream status.html>
Format status
ACL allow localhost
ACL allow 192.168.0.0 192.168.255.255
</Stream>
<Redirect index.html> # Just an URL redirect for index
# Redirect index.html to the appropriate site
URL http://192.168.178.4/status.html
</Redirect>
Der Aufruf für das ffmpeg:
Rich (BBCode):
ffmpeg -r 15 -i http://192.168.178.5/videostream.flv?pwd=Geheim\&user=admin -i http://127.0.0.1:1234/feed1.ffm
Vielleicht ist das Setup ja für jemanden hilfreich, der hier weiter machen möchte. Ich nutze ffmpeg 2.8.6 unter Ubuntu 16.04. Testweise hab ich es mit unstable ffmpeg 3.0 aus dem git-Repository probiert. Allerdings kommt die unstable Version vom ffmpeg nicht mit dem Stream von der Kamera klar.
Speichern kann man immerhin mittels ffmpeg:
Rich (BBCode):
ffmpeg -r 15 -i http://192.168.178.5/videostream.flv?pwd=Geheim\&user=admin -r 15 mein_stream.mkv
- Ich hab hier als Container das Matroska-Format mittels der Endung .mkv gewählt. ffmpeg ist dann schlau genug, auch die Encoder entsprechend zu nutzen. Es sind aber auch andere Formate wie avi oder etwa mp4 möglich. Auch etwa mjpeg.
- -r 15 steht für 15 Bilder pro Sekunde
- Der Backslash ist unter Linux nötig, damit das & nicht interpretiert wird. Nutzt man Windows, muß man das entsprechend anpassen.
Ich habe es nicht hinbekommen, der Kamera mehr als 15 fps in 720p stabil zu entlocken.
Sollte jemand das Update für die Software vom Webinterface detailiert begucken wollen, das Passwort ist "vstarcam!@#$%". Leider sind die Updates keine vollständige Firmware, sondern es werden nur einzelne Dateien ausgetauscht.
Ich werde heute abend nochmal probieren, ob man ffmpeg direkt zum streamen ohne den ffserver überreden kann.
Achso .. als ich die Kamera erstmals direkt ans Netz geklemmt hab, hat dieses Kamera Port 80 (da wo normal http drauf läuft) auf dem Router per upnp aufgemacht. Und ja klar, die Kamera hat dort einen http-Server laufen, der bei Auslieferung ein leeres Admin-Passwort hat. Natürlich hab ich der Kamera aktuelle Firmware drauf getan, ein Passwort gesetzt und den upnp-Dienst auf dem Router ausgeschaltet. Da der Hersteller schon in der Vergangenheit mit Sicherheitslücken auf sich aufmerksam gemacht hat, hab ich echt doof und sehr ungläubig geschaut, als ich einen offenen Port 80 gesehn hab.