NEWS
[HowTo] rtsp mit ffmpeg für vis konvertieren
-
Hi ich hätte da eine Frage, bin neu hier und habe iobroker erst am WE installiert und meine HM umgebung eingebunden.
jetzt fehlt mir noch meine Cam ich habe eine HiKam Q7 sowie eine A7 könnt ihr mir hier helfen wie ich diese angezeigt bekomme.
vielen Dank
Jörg
-
Hallo,
prima Anleitung. Danke fürs Teilen.
Läut super mit der ersten Cam.
Verstehe ich das richtig, dass ich dann für mehrere IPCams auch mehrere Scripte brauche oder kann ich die alle in ein Script schmeißen?
Grüße
-
Hallo,
prima Anleitung. Danke fürs Teilen.
Läut super mit der ersten Cam.
Verstehe ich das richtig, dass ich dann für mehrere IPCams auch mehrere Scripte brauche oder kann ich die alle in ein Script schmeißen?
Grüße `
ich schätze mal das du die Variable hier ändern kannst in z.B auch cam1 und den Pfad anpassen bzw. die ausgabeurl ändern
var ffmpegStartCmd = "ffmpeg -i \"rtsp://user:user@192.168.1.yyy:554/cam/realmonitor?channel=1&subtype=2\" http://localhost:8090/ipcam1.ffm";
Kamera 2
var ffmpegStartCmdCam2 = "ffmpeg -i \"rtsp://user:user@192.168.1.yyy:554/cam/realmonitor?channel=1&subtype=2\" http://localhost:8090/ipcam2.ffm";
Danach dann noch im dem Startabschnitt die Variable mitstarten
exec(ffserverStartCmd, function(err, stdout, stderr) { if (err) { console.log("ffserver error: " + stderr); }
darin noch einfügen (2. Kamera)
exec(ffmpegStartCmdCam2, function(err, stdout, stderr) { if (err) { console.log("ffserver error: " + stderr); }
-
Du meinst in Deinem 2. Abschnitt ffmpegStartCmd anstatt ffserverStart oder?
Sonst wäre ja der Eintrag doppelt… oder übersehe ich etwas?
-
ffserver läuft ja bereits….
einfach die variable ersetzen die du oben genommen hast (url zur 2. cam)
Und in der Config Datei (etc/ffserver.conf) noch die 2. cam als stream einfügen
! ````
########################################IP camera feed...
<feed ipcam1.ffm="">File /tmp/ipcam1.ffm
FileMaxSize 1M
ACL allow 127.0.0.1</feed>! ########################################
Streams...
<stream ipcam1.mjpg="">Feed ipcam1.ffm
Format mpjpeg
VideoQMin 1
VideoQMax 4
VideoFrameRate 10
VideoSize 480x390
VideoBufferSize 1024
VideoBitRate 1024
NoAudio
Strict -1</stream>
<stream ipcam1.jpg="">Feed ipcam1.ffm
Format jpeg
Qscale 2
VideoFrameRate 2
VideoSize 704x576
VideoIntraOnly
NoAudio
NoDefaults
Strict -1</stream>Alles ohne Gewähr…..ich habe das nicht getestet ;)
-
Es läuft! :lol:
Aber ich musste die ffserver.conf auch noch anpassen.
Wenn dort auch alle Streams drin stehen, klappt es prima.
Dankeschön für die Unterstützung!
Gruß
-
Bin grad am Testen. ffserver läuft schon mal.
Geht das ganze nur mit rtsp-streams oder auch mit http-streams?
-
Also ich nutze seit Jahren auf meinem Raspi das https://elinux.org/RPi-Cam-Web-Interface. Läuft sehr stabil und bietet extrem viele Einstellmöglichkeiten; so z.B. auch eine integrierte Bewegungserkennung.
Streams lassen sich per
http://<ip-adresse>/cam_pic_new.php?</ip-adresse>
einbinden oder per
http://<ip-adresse>:</ip-adresse>
direkt im Browser ansehen (Der Port ist nur nötig, wenn man vom Standardwert 80 abweicht). Zudem ist eine sehr einfache Konfiguration über den Web-Server möglich.
Gruß,
Thorsten
-
Bin grad am Testen. ffserver läuft schon mal.
Geht das ganze nur mit rtsp-streams oder auch mit http-streams? `
Das ist dann ein MJPEG Stream….also ein HTTP Stream.
Ja du kannst auch RTSP Stream von ffSERVER "konvertieren" lassen
Einfach zu probieren wenn du im Skript einfach mal einen anderen Stream zu ffServer schickst
-
Bin grad am Testen. ffserver läuft schon mal.
Geht das ganze nur mit rtsp-streams oder auch mit http-streams? `
Keine Ahnung was du mit "http-stream" meinst, aber prinzipiell kann ffmpeg so ziemlich alles konvertieren,auf deren Homepage gibt es detailierte Infos.
-
Ich habe es nun mit einer camera probiert, die ein rtsp-stream macht.
Läuft wohl so halb, wenn man die Werte liest. Nur Bild habe ich nicht und keine zusätzliche CPU-Beanspruchung.
Ich verstehe nicht was die synology (192.168.178.24) damit zu tun hat? Achso… dort läuft synology suvaillance mit der camera. Vielleicht sollte ich dort erstmal ausschalten... probiere ich mal aus... Edit: hat keinen Unterschied gemacht.
Laufen tut ffmpeg auf dem server wo auch ioBroker läuft (192.168.178.18).
1146_ffserver.png
1146_ffserver2.png -
So sieht das bei mir auch aus.
Gibt es dafür eine Lösung?
-
So sieht das bei mir auch aus.
Gibt es dafür eine Lösung? `
Im ursprünglichen Skript fehlt am Ende in der start-Funktion der Befehl ffmpegStart() um den Stream zu starten. Allerdings auf meinem RPi2 kaum umsetzbar, da zuviel Leistung benötigt wird.
function start() { ffserverStart(); ffmpegStart(); }
-
Bei mir startet das Script nicht.
Ich habe bei der Adresse der Kamera einen Fehler.
Komme aber nicht drauf was:
javascript.0 2018-12-26 23:08:40.399 error at TCP.onread (net.js:601:20) javascript.0 2018-12-26 23:08:40.399 error at Socket.Readable.push (_stream_readable.js:208:10) javascript.0 2018-12-26 23:08:40.399 error at readableAddChunk (_stream_readable.js:250:11) javascript.0 2018-12-26 23:08:40.399 error at addChunk (_stream_readable.js:263:12) javascript.0 2018-12-26 23:08:40.399 error at Socket.emit (events.js:211:7) javascript.0 2018-12-26 23:08:40.399 error at emitOne (events.js:116:13) javascript.0 2018-12-26 23:08:40.399 error at Socket. <anonymous>(/opt/iobroker/node_modules/redis/index.js:274:27) javascript.0 2018-12-26 23:08:40.399 error at JavascriptRedisParser.execute (/opt/iobroker/node_modules/redis-parser/lib/parser.js:574:12) javascript.0 2018-12-26 23:08:40.398 error at JavascriptRedisParser.returnReply (/opt/iobroker/node_modules/redis/index.js:192:18) javascript.0 2018-12-26 23:08:40.398 error at RedisClient.return_reply (/opt/iobroker/node_modules/redis/index.js:824:9) javascript.0 2018-12-26 23:08:40.398 error at normal_reply (/opt/iobroker/node_modules/redis/index.js:726:21) javascript.0 2018-12-26 23:08:40.398 error at Command.callback (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:236:17) javascript.0 2018-12-26 23:08:40.398 error at adapter.getForeignState (/opt/iobroker/node_modules/iobroker.javascript/main.js:823:17) javascript.0 2018-12-26 23:08:40.398 error at createActiveObject (/opt/iobroker/node_modules/iobroker.javascript/main.js:1200:20) javascript.0 2018-12-26 23:08:40.398 error at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1146:37) javascript.0 2018-12-26 23:08:40.398 error at compile (/opt/iobroker/node_modules/iobroker.javascript/main.js:957:28) javascript.0 2018-12-26 23:08:40.398 error at Object.createScript (vm.js:80:10) javascript.0 2018-12-26 23:08:40.397 error SyntaxError: Unexpected identifier javascript.0 2018-12-26 23:08:40.397 error ^^^^ javascript.0 2018-12-26 23:08:40.397 error var ffmpegStartCmd = "ffmpeg -i \"rtsp://192.168.8.90:554/user=XXXXXX_password=XXXXXXXX_channel=1_stream=0.sdp?real_stream" http://localhost:8090/ipcam1.ffm"; javascript.0 2018-12-26 23:08:40.397 error at script.js.Klingel.Kamera:6 javascript.0 2018-12-26 23:08:40.397 error script.js.Klingel.Kamera compile failed:</anonymous>
Scriptkopf:
// ********************************************************************** // Settings var ffserverStartCmd = "/usr/bin/ffserver &"; var ffserverStopCmd = "killall ffserver"; var ffmpegStartCmd = "ffmpeg -i \"rtsp://192.168.8.90:554/user=XXXX_password=XXXXXX_channel=1_stream=0.sdp?real_stream" http://localhost:8090/ipcam1.ffm"; var ffmpegStopCmd = "killall ffmpeg";
-
Da fehlt ein Backslash \ nach real_stream
Gesendet von iPad mit Tapatalk
-
… und läuft!
Ganz herzlichen Dank :!:
-
` > * javascript.0 2018-12-28 01:22:59.897 info script.js.Alarmanlage.ffmpeg: ffmpeg has exited unexpected! Restart in 30s!
javascript.0 2018-12-28 01:22:59.897 info script.js.Alarmanlage.ffmpeg: getState(id=ffmpegCam.run, timerId=0) => [object Object] javascript.0 2018-12-28 01:22:59.897 info script.js.Alarmanlage.ffmpeg: ffmpeg error: ffmpeg version 3.2.12-1~deb9u1 Copyright © 2000-2018 the FFmpeg developers built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516 configuration: --pre javascript.0 2018-12-28 01:22:54.447 info script.js.Alarmanlage.ffmpeg: ffmpeg stop failed: ffmpeg: Kein Prozess gefunden javascript.0 2018-12-28 01:22:54.447 info script.js.Alarmanlage.ffmpeg: exec: ffmpeg -i "rtsp://xxx:xxxx12@192.168.181.53:554/onvif/profile1/media.smp" [http://localhost:8090/ipcam1.ffm](http://localhost:8090/ipcam1.ffm) javascript.0 2018-12-28 01:22:54.447 info script.js.Alarmanlage.ffmpeg: ffmpeg start... javascript.0 2018-12-28 01:22:54.447 info script.js.Alarmanlage.ffmpeg: exec: killall ffmpeg javascript.0 2018-12-28 01:22:54.447 info script.js.Alarmanlage.ffmpeg: ffmpeg stop... javascript.0 2018-12-28 01:22:54.447 warn script.js.Alarmanlage.ffmpeg: clearTimeout() => not found javascript.0 2018-12-28 01:22:54.447 info script.js.Alarmanlage.ffmpeg: setForeignState(id=javascript.0.ffmpegCam.statistics.cntRestart, state=45) javascript.0 2018-12-28 01:22:54.447 info script.js.Alarmanlage.ffmpeg: getState(id=ffmpegCam.statistics.cntRestart, timerId=0) => [object Object] javascript.0 2018-12-28 01:22:54.447 info script.js.Alarmanlage.ffmpeg: setForeignState(id=javascript.0.ffmpegCam.statistics.lastRestart, state="2018-12-28 01:22:54") javascript.0 2018-12-28 01:22:24.421 info script.js.Alarmanlage.ffmpeg: setTimeout(ms=30000) javascript.0 2018-12-28 01:22:24.421 info script.js.Alarmanlage.ffmpeg: ffmpeg has exited unexpected! Restart in 30s! javascript.0 2018-12-28 01:22:24.421 info script.js.Alarmanlage.ffmpeg: getState(id=ffmpegCam.run, timerId=0) => [object Object] javascript.0 2018-12-28 01:22:24.418 info script.js.Alarmanlage.ffmpeg: ffmpeg error: ffmpeg version 3.2.12-1~deb9u1 Copyright © 2000-2018 the FFmpeg developers built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516 configuration: --pre javascript.0 2018-12-28 01:22:18.922 info script.js.Alarmanlage.ffmpeg: exec: ffmpeg -i "rtsp://xxx:xx@192.168.181.53:554/onvif/profile1/media.smp" [http://localhost:8090/ipcam1.ffm](http://localhost:8090/ipcam1.ffm) javascript.0 2018-12-28 01:22:18.922 info script.js.Alarmanlage.ffmpeg: ffmpeg start... javascript.0 2018-12-28 01:22:18.921 info script.js.Alarmanlage.ffmpeg: Start ffmpeg... javascript.0 2018-12-28 01:22:18.921 info script.js.Alarmanlage.ffmpeg: Run state changed from false to true javascript.0 2018-12-28 01:22:05.055 info script.js.Alarmanlage.ffmpeg: exec: /usr/bin/ffserver & javascript.0 2018-12-28 01:22:05.055 info script.js.Alarmanlage.ffmpeg: ffserver start... `
ich bekomme immer diesen fehler. kann mir jemand helfen?
-
Das ist eventuell der gleiche Fehler wie bei mir.
aus
rtsp://xxx:xx@192.168.181.53:554/onvif/profile1/media.smp
muss
rtsp://xxx:xx@192.168.181.53:554/onvif/profile1/media.smp\
werden. dann sollte es funktionieren.
Allerdings wundert mich die Adresse. Bist du sicher das da drüber der Stream kommt?
Allerdings funktioniert bei mir jetzt zwar das Script, aber der Stream leider nicht.
-
Ob der Stream funktioniert kannst du schnell mit VLC unter "Medien –> Netzwerkstream öffnen" testen.
-
Ich versuche auch gerade einen restream per ffmpeg aufzubauen.
Habe aber ein Problem.Irgendwie scheitert die Verbindung zum localhost.
Ich habe auch versucht localhost durch 127.0.0.1 oder die IP des servers zu ersetzen.
Keine Änderung...ffmpeg version 3.2.12-1~deb9u1 Copyright (c) 2000-2018 the FFmpeg developers built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516 configuration: --prefix=/usr --extra-version='1~deb9u1' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libebur128 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared libavutil 55. 34.101 / 55. 34.101 libavcodec 57. 64.101 / 57. 64.101 libavformat 57. 56.101 / 57. 56.101 libavdevice 57. 1.100 / 57. 1.100 libavfilter 6. 65.100 / 6. 65.100 libavresample 3. 1. 0 / 3. 1. 0 libswscale 4. 2.100 / 4. 2.100 libswresample 2. 3.100 / 2. 3.100 libpostproc 54. 1.100 / 54. 1.100 Input #0, rtsp, from 'rtsp://USER:PASS@10.0.0.21:554/Streaming/Channels/102': Metadata: title : Media Presentation Duration: N/A, start: 0.310000, bitrate: N/A Stream #0:0: Video: h264 (Main), yuvj420p(pc, bt709, progressive), 640x360 [SAR 1:1 DAR 16:9], 20 fps, 25 tbr, 90k tbn, 40 tbc [tcp @ 0x55fc826e03a0] Connection to tcp://localhost:8090 failed (Connection refused), trying next address [tcp @ 0x55fc826e03a0] Connection to tcp://localhost:8090 failed: Connection refused http://localhost:8090/Eingang.ffm: Connection refused
Der FFserver bzw. das WebIF ist aber auch nicht über die IP.des.Servers:8090 zu erreichen...
Das scheint wohl das Problem zu sein.