Autor Thema: ffmpeg und der rtsp stream  (Gelesen 690 mal)

Offline heicar

  • New Member
  • *
  • Beiträge: 26
ffmpeg und der rtsp stream
« am: 23 Juni 2020, 10:48:32 »
Moin zusammen,
ich brauche mal euer Schwarmwissen, und zwar habe ich eine IPcam Reolink die einen RTSP Stream anbietet.
Jetzt soll dieser Stream über einen externen Trigger (bei mir ein Reedkontakt) den Stream abgreifen und aufzeichnen auf der Festplatte.
Läuft auch, aber
ffmpeg zeichnet erst mit einer Verzögerung von ca. 2-3 sek den Stream auf. Die Startphase von ffmpeg ist unglaublich lang, jetzt meine Frage wer hat Tipps um ffmpeg schneller starten zu lassen (also bis ca. ne Sekunde  dann solls aber auch losgehen mit der Aufnahme)
Ich hab gefühlt das komplette INet nach Parametern durchforstet aber besser wird es nicht. Gibts noch andere Alternativen als ffmpeg zum Streamabgreifen?

Hier meine ffmpeg Ausgabe

Di 23. Jun 10:32:46 CEST 2020
Input #0, rtsp, from 'rtsp://192.168.178.210:554/h264Preview_01_sub':
  Metadata:
    title           : Session streamed by "preview"
    comment         : h264Preview_01_sub
  Duration: N/A, start: 1592901170.400063, bitrate: N/A
    Stream #0:0: Video: h264 (High), yuv420p(progressive), 640x480, 9.92 tbr, 90k tbn, 180k tbc
    Stream #0:1: Audio: aac (LC), 16000 Hz, mono, fltp
[libx264 @ 0x55c3e62485c0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2
[libx264 @ 0x55c3e62485c0] profile High, level 2.2
[libx264 @ 0x55c3e62485c0] 264 - core 148 r2748 97eaef2 - H.264/MPEG-4 AVC codec - Copyleft 2003-2016 - http://www.videolan.org/x264.html - options: cabac=1 ref=1 deblock=1:0:0 analyse=0x3:0x3 me=dia subme=1 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=2 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=1 keyint=250 keyint_min=9 scenecut=40 intra_refresh=0 rc=crf mbtree=0 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 pb_ratio=1.30 aq=1:1.00
Output #0, mp4, to '/tmp/film.mp4':
  Metadata:
    title           : Session streamed by "preview"
    comment         : h264Preview_01_sub
    encoder         : Lavf57.56.101
    Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 640x480, q=-1--1, 9.92 fps, 15232 tbn, 9.92 tbc
    Metadata:
      encoder         : Lavc57.64.101 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
    Stream #0:1: Audio: aac (LC) ([64][0][0][0] / 0x0040), 16000 Hz, mono, fltp, 69 kb/s
    Metadata:
      encoder         : Lavc57.64.101 aac
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
  Stream #0:1 -> #0:1 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
frame=   50 fps= 20 q=-1.0 Lsize=     268kB time=00:00:04.98 bitrate= 439.5kbits/s dup=17 drop=0 speed=2.02x
video:237kB audio:27kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.393884%
[libx264 @ 0x55c3e62485c0] frame I:1     Avg QP:19.85  size: 52451
[libx264 @ 0x55c3e62485c0] frame P:13    Avg QP:12.57  size: 12287
[libx264 @ 0x55c3e62485c0] frame B:36    Avg QP:13.83  size:   815
[libx264 @ 0x55c3e62485c0] consecutive B-frames:  4.0%  0.0%  0.0% 96.0%
[libx264 @ 0x55c3e62485c0] mb I  I16..4:  4.2% 33.2% 62.7%
[libx264 @ 0x55c3e62485c0] mb P  I16..4:  0.1%  0.1%  0.0%  P16..4: 77.0%  0.0%  0.0%  0.0%  0.0%    skip:22.9%
[libx264 @ 0x55c3e62485c0] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8: 13.3%  0.0%  0.0%  direct:12.2%  skip:74.5%  L0:19.5% L1:79.9% BI: 0.6%
[libx264 @ 0x55c3e62485c0] 8x8 transform intra:33.2% inter:32.4%
[libx264 @ 0x55c3e62485c0] coded y,uvDC,uvAC intra: 93.3% 89.3% 61.2% inter: 13.3% 20.9% 4.0%
[libx264 @ 0x55c3e62485c0] i16 v,h,dc,p:  5%  0% 45% 50%
[libx264 @ 0x55c3e62485c0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 11%  7% 16%  7%  9% 12% 19%  8% 12%
[libx264 @ 0x55c3e62485c0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 12% 17% 13%  9%  9%  7% 12%  6% 15%
[libx264 @ 0x55c3e62485c0] i8c dc,h,v,p: 39% 24% 23% 14%
[libx264 @ 0x55c3e62485c0] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x55c3e62485c0] kb/s:383.22
[aac @ 0x55c3e62b4900] Qavg: 65494.328

Di 23. Jun 10:32:56 CEST 2020


aufgerufen mit:

date && /usr/bin/ffmpeg -hide_banner -rtsp_transport tcp -use_wallclock_as_timestamps 1 -i rtsp://192.168.178.210:554/h264Preview_01_sub -c:v libx264 -threads 2 -vcodec 'libx264' -acodec 'aac' -t 5 -preset superfast -vsync 1 -y "/tmp/film.mp4" && date
Was kann ich verbessern zur Speeduptime?

Danke und Gruß Heinz

Offline Wernieman

  • Developer
  • Hero Member
  • ****
  • Beiträge: 6379
Antw:ffmpeg und der rtsp stream
« Antwort #1 am: 24 Juni 2020, 07:38:20 »
Nur mal so als Gedanken beides noch nicht gemacht, mangels rtsp stream Quelle auch nicht ausprobierbar). Ob es schneller ist, würde ich aus dem Bauch heraus verneinen:

1. VLC
2. openrtsp

Eine schnelle Google Suche:
https://superuser.com/questions/766437/capture-rtsp-stream-from-ip-camera-and-store

Edit:
Grundfrage: Auf was für ein System/HW läuft Dein "Aufzeichnungssystem"?

Edit2:
openrtsp ist ebi Debian-Systemen (incl.Ubuntu) zu finden unter den livemedia-utils
« Letzte Änderung: 24 Juni 2020, 07:41:48 von Wernieman »
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Offline heicar

  • New Member
  • *
  • Beiträge: 26
Antw:ffmpeg und der rtsp stream
« Antwort #2 am: 24 Juni 2020, 14:09:14 »
Hi,
vlc ist noch schlechter in der Performance - openrtsp hatte ich schon vorher getestet - gleiches Ergebnis.
Den Link hatte ich auch schon gefunden.
Das ganze läuft auf einem i3 Nuc / Debian Stretch

Ist echt schade, gefühlt im ganzen Inet ist keiner der einen Stream sofort (kleine Latenz selbstverständlich) aufnehmen möchte

Leider bieten die Reolinks keine externen Trigger an (oder http request trigger, whatever) das wäre sicher das optimalste.

Ich frag mal bei reolinks support nach.

Viele Grüße Heinz

Offline MadMax-FHEM

  • Hero Member
  • *****
  • Beiträge: 8257
  • NIVEAu ist keine Creme...
Antw:ffmpeg und der rtsp stream
« Antwort #3 am: 24 Juni 2020, 14:20:43 »
Bietet reolink nicht auch die Möglichkeit mit entsprechender Vorlaufszeit eine Aufnahme auch auf ftp abzulegen!?

Ich hatte ja eine reolink nur kurz zum Test, da aber die cgi-Schnittstelle echt naja ist...
...habe ich aktuell eine Foscam da.

Die kann das (angeblich, noch nicht getestet / ist aber noch geplant) und v.a. auch per Web-Aufruf (NICHT Weboberfläche) die Bewegungserkennung ein-/ausschalten, das konnte die reolink nicht (oder ich hab's nicht geschafft)...

Daher ging die reolink wieder zurück...
...weil eben deswegen eine Integration in fhem schwierig/unmöglich ist...

Zuvor habe ich mit einer Unifi Dome "rumgespielt", die habe ich auch noch, liegt aber aktuell in der Ecke...
Für die habe ich mal mit Zoneminder rumprobiert, da geht Aufnahme ja auch!?

Es gibt auch ein Modul für Zoneminder...
...gut man braucht halt noch ne Büxe wo Zoneminder drauf läuft (ich hatte noch einen PI über zum Test "über" ;)  )...

Gruß, Joachim
FHEM PI3B+ Buster: HM-CFG-USB, 40x HM, ZWave-USB, 6x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, KODI, alexa-fhem, ...
FHEM PI2 Stretch: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, KODI, ha-bridge, ...
FHEM PI3 Buster (Test)
FHEM PI3 Stretch (Test)

Offline heicar

  • New Member
  • *
  • Beiträge: 26
Antw:ffmpeg und der rtsp stream
« Antwort #4 am: 24 Juni 2020, 14:33:47 »
ja reolink bietet postrecording. Ich möchte aber zwei cam gleichzeitag die Aufnahme starten lassen, mit wenig Latenz halt.
Ist halt leider so, wenn die Geräte da sind, wachsen die Anspüche....   8)
Also wenn man programmieren kann sollte es möglich sein alles einzustellen an der reolink. Gibt ja den Windows Client von Reolink. Der schickt seine Daten dann an die Kamera. Hatte mal dazu einen Link im Inet gefunden. Leider ist die api Programmierung nicht gerad mein so mein Ding.  ;)
Ich hab mal Reolink angeschrieben. Vielleicht gibt es von da einen Tip, oder ich muss mich an der Programmierung versuchen..... :P
Viele Grüße Heinz

Offline MadMax-FHEM

  • Hero Member
  • *****
  • Beiträge: 8257
  • NIVEAu ist keine Creme...
Antw:ffmpeg und der rtsp stream
« Antwort #5 am: 24 Juni 2020, 15:11:09 »
Ja, den Webclient habe ich auch "reverse engineered", das geht schon irgendwie...

ABER es gibt ja das Modul IPCAM und damit gehen die Post-Requests, die bei reolink nötig sind nicht (oder: ich habe es nicht geschafft).

Auf jeden Fall sind es keine "normalen" GET-Requests "gegen" eine cgi-Schnittstelle UND: es gibt nicht wirklich viel Doku...
Auch in den Foren nur "reverse engineerte" Sachen/Aufrufe...
Spärlich.

Und selbst ein Modul programmieren oder auf Basis von HTTPMOD mir was "abturnen" wollte ich nicht.
Da war zurückschicken und die Foscam anschen deutlich angenehmer...

Auch glaube ich gibt es selbst per Webclient keine Möglichkeit die Bewegungserkennung zu deaktivieren...
Außer löschen und neu anlegen, klar kann man machen...
...aber bei der Foscam sind das 2 simple Web GET-Requests: einen für einschalten und einen für ausschalten :)

Foscam ist anders, da gibt es ausführliche Dokumentation der cgi-Schnittstelle :)


Aber eine parallele Aufnahme per "Programmaufruf", hmmm, sollte aber doch mit Zoneminder gehen!?
Habe allerdings nur kurz damit "rumgespielt"...
Und werde ich wohl mit der Foscam auch nicht mehr brauchen...

Ich muss den Zoneminder oder was Vergleichbares nur wieder "rausziehen", wenn ich dann doch die Unifi wieder in Betrieb nehme(n sollte)...

Dann mal: viel Erfolg!

Gruß, Joachim
« Letzte Änderung: 24 Juni 2020, 15:13:49 von MadMax-FHEM »
FHEM PI3B+ Buster: HM-CFG-USB, 40x HM, ZWave-USB, 6x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, KODI, alexa-fhem, ...
FHEM PI2 Stretch: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, KODI, ha-bridge, ...
FHEM PI3 Buster (Test)
FHEM PI3 Stretch (Test)

Offline micky0867

  • Full Member
  • ***
  • Beiträge: 290
  • Welcome to the Unixverse!
Antw:ffmpeg und der rtsp stream
« Antwort #6 am: 28 Juli 2020, 15:51:36 »
Ich habe neuerdings 2 Reolinks mit SD Karte.
Die Aufzeichnung macht die cam selber und mein Server holt per CGI die aufnahmen, wenn bestimmte Ereignisse in fhem gemeldet wurden (Bewegungsmelder, Anwesenheit,...).

Falls du keine SD Karte hast:
Bei meinen alten cams habe ich per cron job und mittels vlc dauernd 2 Minuten schnipsel als mp4 aufgezeichnet und die, an denen ich nicht interessiert war (Keine Ereignisse in fhem) automatisch gelöscht.

Persönlich finde ich die Aufzeichnung auf SD besser, bis auf die Tatsache, dass die Bewegungserkennung bei den Reolinks nicht gut justierbar ist. Daher schaltet ich die jetzt automatisch per Anwesenheitserkennung ein und aus. Geht auch per CGI.

Welche cam hast du denn?

Edit: die Bewegungsmeldungen der Reolinks per Onvif, mail bzw FTP gefielen mir alle nicht, deshalb habe ich jetzt einen kleinen Python service laufen, der auf bestimmten Ports lauscht und bei einem Connect eine Aktion auf dem Server ausführt und dann die Verbindung für 60 Sekunden blockiert, damit nicht zuviele events kommen.
Die ports wiederum habe ich auf den cams als FTP ports angegeben ;-)
« Letzte Änderung: 28 Juli 2020, 15:58:22 von micky0867 »

 

decade-submarginal