IP-camera zonder snapshot mogelijkheid, m.b.v. script toch een snapshot verkrijgen uit RTSP-stream!

Door ThinkPad op maandag 3 augustus 2015 11:56 - Reacties (12)
Categorie: Domotica, Views: 11.935

Edit: Met hartelijke dank aan Tweaker 'Yorick87' blijkt nu dat met een firmware upgrade de camera rechtstreeks een JPEG-snapshot kan uitspugen!
Zie: ThinkPad's Tweakblog: IP-camera zonder snapshot mogelijkheid, m.b.v. script toch een snapshot verkrijgen uit RTSP-stream! en ThinkPad's Tweakblog: IP-camera zonder snapshot mogelijkheid, m.b.v. script toch een snapshot verkrijgen uit RTSP-stream!


Tijdje terug een camera gekocht (TOP-201 mini IP-camera (¤22.97)) om m'n voordeur in de gaten te houden. Handig om op afstand te zien dat de pakketbezorger voor de deur staat.
http://tweakers.net/ext/f/DfJMr27f5PljSaTQSuvk87R5/full.jpg

De camera levert een prima 720p beeld, maar heeft als nadeel dat hij alleen ONVIF en RTSP ondersteunt. Voor mijn doel zou ik graag een URL hebben waarmee ik rechtstreeks een (JPEG) snapshot kon opvragen. Helaas heeft de camera deze mogelijkheid niet.

Wel spuugt hij twee RTSP-streams uit die je bijv. in VLC kunt bekijken:

rtsp://IP_VAN_CAMERA//user=admin_password=_channel=1_stream=0.sdp (720p HD-kwaliteit)
rtsp://IP_VAN_CAMERA//user=admin_password=_channel=1_stream=1.sdp (VGA-kwaliteit)

Om toch een snapshot te verkrijgen, die ik dan op m'n telefoon kan bekijken als er wordt aangebeld, heb ik gekeken naar hoe je een snapshot van een RTSP-stream kunt maken. Dit schijnt met 'ffmpeg' goed mogelijk te zijn. Ik heb eerst geprobeerd om dit op m'n Synology NAS (DS114), waar ook Domoticz op draait, te regelen, maar de ffmpeg versie op de NAS wist geen raad met een RTSP-stream, hij kende het protocol niet. Ik heb geen zin om m'n NAS te gaan 'jailbreaken' (ipkg) dus daarom maar een Raspberry Pi gepakt die ik nog had liggen.

Daarmee geprobeerd om een snapshot te grabben van de stream en warempel, het lukte :D

Toen een script geklust:

Bash: snapshot.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/sh
today=`/bin/date '+%d-%m-%Y__%H-%M-%S'`;    #Used to generate filename
IP="192.168.4.20"                          # IP address Camera

#Ping IP-address of camera to see if it's online, otherwise we don't have to grab a snapshot
if ping -c 1 $IP > /dev/null ; then  

#Grab snapshot from RTSP-stream
/volume1/@appstore/MediaServer/bin/ffmpeg -rtsp_transport tcp -i 'rtsp://'$IP'/user=admin&password=&channel=1&stream=0.sdp' -f image2 -vframes 1 -pix_fmt yuvj420p /volume1/homes/admin/doorbellcam/Public/doorbell_snapshots/$today.jpeg

#Delete previous taken snapshots older than 7 days
find /volume1/homes/admin/doorbellcam/Public/doorbell_snapshots/ -name '*.jpeg' -mtime +7 -delete
else
   echo "Doorbell has just been pressed, but image is unavailable because camera is ofline"
fi


(Zie ook de discussie op het Domoticz forum)

Als ik nu 'snapshot.sh' aanroep op de commandline verschijnt er na enkele seconden een snapshot op de in het script ingestelde locatie 8)

Het blijkt dat op bijv. de Synology aanwezige 'ffmpeg' versie niet altijd support heeft voor een RTSP-stream. Op internet vond ik een workaround, de ffmpeg binary van een via de Package Center te installeren Synology package gebruiken. Er zijn meerdere mogelijkheden:
  • /volume1/@appstore/MediaServer/bin/ffmpeg
  • /volume1/@appstore/AudioStation/bin/ffmpeg
  • /volume1/@appstore/VideoStation/bin/ffmpeg
Het package hoeft niet te draaien, als het script maar bij de ffmpeg binary kan. In mijn geval bleek de standaard ffmpeg versie 1.0 te zijn, de versie die met het 'MediaServer' package kwam had versie 2.02 aan boord en daarmee werkte het wel :)

De camera is ook bruikbaar met het 'Surveillance Station' package op de Synology ('Generic ONVIF' en dan poort 8899 geloof ik) en heb geprobeerd om via de API van Surveillance Station een snapshot eruit te trekken. Dit werkte redelijk, maar de helft van de tijd kreeg ik geen plaatje terug en ook duurde het vrij lang voordat het snapshot tevoorschijn kwam. Voor mij geen serieuze optie dus.

Al met al is een IP-camera met alleen een RTSP-stream op deze manier toch weer wat breder in te zetten dan voor alleen het bekijken van de stream.
Ik heb in m'n router overigens wel al het verkeer van deze camera richting internet geblokkeerd. Volgens reviews wil het ding nog wel eens contact zoeken met servers op internet. Misschien is het heel onschuldig (tijd updaten via NTP of checken op nieuwe firmware), maar het idee staat mij niet echt aan.

P.S. Je kunt ook in de camera komen via Telnet, username: root en wachtwoord: xmhdipc
Doe daar zelf verder niks mee, maar leuk om te weten. De camera gebruikt de Hi3518 chipset. Op www.ipcamtalk.com is een uitgebreide review te vinden (zoek op "TOP-201 ipcamtalk" en je vind hem wel).

Volgende: Modem automatisch powercyclen bij internetproblemen 08-'15 Modem automatisch powercyclen bij internetproblemen
Volgende: Deurbel ombouw naar 433Mhz 08-'15 Deurbel ombouw naar 433Mhz

Reacties


Door Tweakers user The Zep Man, maandag 3 augustus 2015 13:26

Ik heb in m'n router overigens wel al het verkeer van deze camera richting internet geblokkeerd. Volgens reviews wil het ding nog wel eens contact zoeken met servers op internet. Misschien is het heel onschuldig (tijd updaten via NTP of checken op nieuwe firmware), maar het idee staat mij niet echt aan.
Geef het apparaat handmatig een IP (of een fixed lease, al wil je met DHCP spelen), geef het geen gateway en het zal geen verbinding met Internet maken. Lokaal (in hetzelfde subnet, bijvoorbeeld op je Pi) kan je mogelijk een NTP server opzetten en die handmatig instellen in de camera. Zo blijft zijn datum/tijd ook correct.

In het algemeen adviseer ik ook om dit soort apparaten niet via het Internet te gebruiken. Daarvoor zit er te veel complexe software in die te snel verouderd. ;)

[Reactie gewijzigd op maandag 3 augustus 2015 13:27]


Door Tweakers user ThinkPad, maandag 3 augustus 2015 13:30

The Zep Man schreef op maandag 03 augustus 2015 @ 13:26:
[...]
Geef het apparaat handmatig een IP (of een fixed lease, al wil je met DHCP spelen), geef het geen gateway en het zal geen verbinding met Internet maken. Lokaal (in hetzelfde subnet, bijvoorbeeld op je Pi) kan je mogelijk een NTP server opzetten en die handmatig instellen in de camera. Zo blijft zijn datum/tijd ook correct.

In het algemeen adviseer ik ook om dit soort apparaten niet via het Internet te gebruiken. Daarvoor zit er te veel complexe software in die te snel verouderd. ;)
Bedankt. Wat ik wellicht had kunnen vermelden is dat ik zoiets al doe. De camera staat op DHCP en geef ik via een 'Static DHCP lease' in de router (OpenWRT) telkens hetzelfde IP-adres. Op m'n NAS draait een NTP-client (tijd binnenhalen via nl.pool.ntp.org) maar tevens een NTP-server. Ik gebruik op die manier de NAS als NTP-server voor de camera, ook omdat de camera achter een tijdschakelaar zit en van 22:30 - 06:00 uit staat (dan ziet de camera toch niks omdat hij geen IR-leds heeft en de buitenlamp tussen de persoon aan de deur en de camera hangt waardoor je de persoon aan de deur toch niet kunt onderscheiden. Scheelt ook weer wat stroom). De tijd wordt elke keer netjes goedgezet bij aanzetten van de cam

Gateway niet invullen was ook een idee geweest, maar op deze manier weet ik zeker dat het verkeer geblokkeerd wordt :)

[Reactie gewijzigd op maandag 3 augustus 2015 13:32]


Door Tweakers user marigo, woensdag 16 september 2015 13:45

Heb jij ook dat het beeld niet meteen beschikbaar is als je deze live bekijkt op jouw Synology?

Bij mij staat het beeld eerst even stil en na een paar seconden (5 - 10) begint het beeld pas live af te spelen.

De Motion detection mist dan ook net even een gedeelte. Ik heb de default waarde laten staan; dat er 5 seconden voor de "motion" al wordt vastgelegd en ook 5 seconden erna.

[Reactie gewijzigd op woensdag 16 september 2015 13:46]


Door Tweakers user ThinkPad, woensdag 16 september 2015 14:02

marigo schreef op woensdag 16 september 2015 @ 13:45:
Heb jij ook dat het beeld niet meteen beschikbaar is als je deze live bekijkt op jouw Synology?

Bij mij staat het beeld eerst even stil en na een paar seconden (5 - 10) begint het beeld pas live af te spelen.

De Motion detection mist dan ook net even een gedeelte. Ik heb de default waarde laten staan; dat er 5 seconden voor de "motion" al wordt vastgelegd en ook 5 seconden erna.
Geen idee, ik gebruik de cam niet (meer) op de Synology. Gaat mij er puur om dat ik kan zien wie er aanbelt. Opnemen bij beweging heeft in mijn geen zin, omdat ik aan een galerij woon en daar de hele dag door wel mensen langslopen.

Je zou de NAS ook continu (24/7, of alleen in bepaald tijdsvak) kunnen laten opnemen. Zo extreem veel schijfruimte kost dat niet volgens mij. En je kunt instellen dat hij oude opnames automatisch moet weggooien, als ze ouder zijn dan xx-dagen of als de map groter wordt dan xx GB.

Door Tweakers user marigo, woensdag 16 september 2015 18:08

Tja, dat is ook een mogelijkheid.

Ik ga er nog wel eens mee stoeien. Kijken of het toch misschien ergens een instelling is.
Ik weet wel dat de ESCAM 500 dit ook heeft. Het lijkt ook wel allemaal dezelfde web interface die deze camera's gebruiken.

Zodra ik wat heb gevonden; post ik het hier wel.

thx voor het meedenken.

Door Tweakers user TotallyJorden, vrijdag 25 september 2015 17:12

Ik probeer ditzelfde geintje uit te voeren, heb ook een 2.02 versie ffmpeg gevonden maar krijg na enkele tientallen secondes deze foutmelding:

[rtsp @ 0x808dd60] Could not find codec parameters for stream 0 (Video: h264): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
rtsp://192.168.1.10/user=...d=&channel=1&stream=0.sdp: could not find codec parameters

Iemand enig idee?

Door Tweakers user jphsch, zaterdag 30 januari 2016 17:05

Op https://www.raspberrypi.o...iewtopic.php?f=43&t=53936 staat een link
naar http://www67.zippyshare.com/v/xe4mUV0Q/file.html
om een kant-en-klare ffmpeg 2.8.4 uit te pakken op de raspberry. In het script hierboven moeten nog wat paden aangepast worden, maar dan kun je de raspberry gebruiken om een snapshot vast te leggen.

Iemand een idee hoe de image-URL er uit moet zien om hem in Domoticz op te nemen?

Door Tweakers user Yorick87, woensdag 6 april 2016 18:49

Ik was ook op zoek naar de snapshot mogelijkheid van deze camera, en die blijkt er (inmiddels) stiekem wel te zijn. Probeer http://ipvancamera/webcapture.jpg?command=snap&channel=0 maar eens! Geen idee of het firmware versie afhankelijk is, ik heb de meest recente.

Door Tweakers user ThinkPad, woensdag 27 april 2016 14:04

Yorick87 schreef op woensdag 06 april 2016 @ 18:49:
Ik was ook op zoek naar de snapshot mogelijkheid van deze camera, en die blijkt er (inmiddels) stiekem wel te zijn. Probeer http://ipvancamera/webcapture.jpg?command=snap&channel=0 maar eens! Geen idee of het firmware versie afhankelijk is, ik heb de meest recente.
Een late reactie, ik was namelijk op vakantie :+ Nu weer thuis en gelijk geprobeerd. Helaas werkt jouw URL niet. Ik krijg dan een The requested URL was not found on this server

Mijn firmware versie:

code:
1
2
Build Date:2015/3/17 9:44:44
System: V4.02.R12.00006510.10010.1403



ECHTER...
Na wat zoeken heb ik firmware "General_HZXM_IPC_HI3518E_50H10L_S38_V4.02.R12.20150910_ALL.bin" gevonden, daarmee werkt het WEL.

De camera geeft nu aan deze versie te hebben:

code:
1
2
Build Date:2015/9/10 10:20:36
System: V4.02.R12.00006510.10010.140300



Ik wil je dus HEEL hartelijk bedanken, want dit was precies wat ik mistte en DE reden dat deze blogpost bestaansrecht had :P

Omdat mijn ervaring is dat dit soort bestanden na een jaar ofzo vaak niet meer te downloaden zijn (broken links), heb ik de firmware even gemirrord om anderen wellicht te kunnen helpen in de toekomst: https://ln.sync.com/dl/45...jvkpe7a-dhrx9tv7-k4eeb7m9
MD5: bf7aba36a1597030932fff952d17fb3e

Alles lijkt nog gewoon te werken zoals het werkt, maar nu dus met toevoeging dat die snapshot url werkt :D Of er ook bugs bij zijn gekomen kan ik pas over een tijdje vertellen, maar voor nu lijkt het een dikke verbetering te zijn door die extra mogelijkheid 8)

[Reactie gewijzigd op vrijdag 29 april 2016 21:59]


Door Tweakers user Yorick87, dinsdag 10 mei 2016 21:35

Haha, blij dat ik je heb kunnen helpen! Mijn versie is V4.02.R12.00006510.10010.140700 met vreemd genoeg exact dezelfde build date. Ik heb er inmiddels drie hangen, gekoppeld aan dit mooie apparaatje http://www.ebay.com/itm/182075157745. Werkt allemaal verbazingwekkend goed!

Ik ben wel benieuwd hoe jij de camera bij je voordeur gemonteerd hebt. Ik vind hem, ondanks dat hij de kleinste in zijn soort is, nog veel te opvallend. Ik zoek een zo onzichtbaar mogelijke oplossing omdat ik bij camera's bij woonhuizen altijd denk dat er drugsdealers ofzo zullen wonen.

Door Tweakers user ThinkPad, dinsdag 10 mei 2016 23:02

Yorick87 schreef op dinsdag 10 mei 2016 @ 21:35:
[...]
Ik ben wel benieuwd hoe jij de camera bij je voordeur gemonteerd hebt. Ik vind hem, ondanks dat hij de kleinste in zijn soort is, nog veel te opvallend. Ik zoek een zo onzichtbaar mogelijke oplossing omdat ik bij camera's bij woonhuizen altijd denk dat er drugsdealers ofzo zullen wonen.
Ik heb een raam (slaapkamer) naast m'n voordeur. Daar heb ik hem in de bovenhoek van het kozijn geschroefd aan de binnenkant. Hij kijkt dus bijna langs het glas eigenlijk. Van buitenaf zo goed als onzichtbaar als de luxaflex op dezelfde hoogte hangt (camera valt dan weg tegen de zwarte luxaflex).

[Reactie gewijzigd op dinsdag 10 mei 2016 23:02]


Door Tweakers user Freekers, zaterdag 28 april 2018 19:46

Hartelijk dank voor het delen van je script! Zonder dat was het me waarschijnlijk niet gelukt om mijn Chinese IP camera aan de praat te krijgen op de manier zoals ik wilde.

Thanks :) !

Om te kunnen reageren moet je ingelogd zijn. Via deze link kun je inloggen als je al geregistreerd bent. Indien je nog geen account hebt kun je er hier één aanmaken.