Projektvorstellung: recman - Recording REST Dienst und Frontend

  • Hallo,


    da ich schon seit langer Zeit den VDR nutze und mir ein Feature zu Hause gefehlt hat, um problemlos Aufnahmen im Heimnetzwerk an jedem Gerät zu schauen, habe ich mich entschieden einen Webdienst für VDR Aufnahmen zu entwickeln. Habe ihn "recman" getauft.


    Er besteht allgemein aus 2 getrennt entwickelten Teilen (implementiert in Java, entwickelt für VDR 1.6 Aufnahmen/Timer Formate):


      1. recman-rest-service := Eine REST Schnittstelle/Dienst über den Informationen über VDR Aufnahmen/ Timer abgefragt werden können, und Aufnahmen komplett gestreamt (auch mit Spulfunktion etc.) werden können. Soweit alles nötige implementiert.
      2. recman-frontend: Web Frontend (Apache Wicket), zur Darstellung der Informationen von der REST Schnittstelle. Ist moment nur das wichtigste (meiner Meinung nach) implementiert.


    Ein großer Unterschied zu anderen Projekten ist der, dass ich nicht die SVDRP Schnittstelle nutze (ist nur eingeschränkt nutzbar...), sondern alle Informationen selber aus den Metdaten von Aufnahmen und Timern parse, und somit die Anwendung auch ohne lokalen VDR lauffähig ist.
    Welchen Vorteil hat das ?
    Man braucht nur ein Verzeichnis anzugeben mit den relevanten Aufnahmen etc. (z.B. NFS/Samba etc.), d.h. der Dienst kann auf anderen Maschinen laufen (sogar unter Windows sollte möglich sein, nur noch ungetestet und Windows Pfade bei der Implementierung nicht berücksichtigt.


    Ich hänge einfach mal ein paar Screenshots an, die sagen wohl mehr aus, als ich texten kann.


    Die Anwendung steht unter der OSS-Lizenz: Apache License Version 2.0


    Ansonsten wäre noch zu sagen, das dieses Stück Software natürlich keine Produktivsoftware ist, sondern nach meinen Wünschen entstanden ist, um Aufnahmen im Heimnetzwerk zu schauen. Sicherheitsmäßig bringt sie nur einen IP Filter mit, analog zur "svdrphosts.conf" vom VDR.


    Falls jemand Webspace für mich hat oder ähnliches, dann kann ich ja das Projekt mal hochladen. Vielleicht finden sich ja Leute die am Frontend weiterentwickeln möchten, um alle Informationen schön darzustellen (Apache Wicket).


    Impressionen zum Überblick von ein paar Features:
    http://sourceforge.net/apps/me…dex.php?title=Screenshots


    EDIT:
    Habe das Projekt auf Sourceforge umgezogen:
    http://sourceforge.net/projects/recman/


    Hab hier mal eine Wiki Seite angelegt, wie man das Projekt baut:
    http://sourceforge.net/apps/me…ex.php?title=ProjektBauen


    Kurzanleitung Installation/Konfiguration:
    http://sourceforge.net/apps/me…ex.php?title=Installation


    EDIT2:
    Ups, die URLs waren wohl falsch.


    Ciao,
    Marcus

  • Hallooooo, das klingt genau nach dem, was ich momentan suche... Kann die Software denn irgendwann auch mit den Aufnahmen von vdr-1.7.9 umhgehen (Neuer Verzeichnisaufbau und andere Videonamen)?


    Falls Du Webspace brauchst -> Mail/PN...


    cu
    Markus

  • Hi,


    schön das dir das Projekt vom Ansazt her gefällt.


    Klar kann ich eine Unterstützung für vdr-1.7.9 einbauen, sofern ich passende Informationen zum Format darüber finde.


    Danke für deine PN, ich habe ich gelesen, aber da ich im Moment kurz angebunden bin, melde ich mich heute Abend nochmal!


    Ciao,
    Marcus

  • Nettes Projekt, ich würde es gerne mal ausprobieren

    SAT Hardware: Gibertini SE75 | DuraSat Dur-Line UK-24 | DD OctopusNET V2 Rack (Firmware 1.1.6) mit MaxS8
    Server: Asus M5A78L-M/USB3 | Sempron 145@2Cores | 8GB ECC RAM | PicoPSU | Debian Stretch 64Bit | VDR 2.4.5 mit SAT>IP, epgsearch, live, markad
    Clients: RaspberryPI 2/3 | Yocto Poky Linux (Openembedded) 3.2+git | Linux Kernel 5.4.72 | VDR 2.4.5 mit SAT>IP, RpiHDDevice, SkinDesigner, Remote, Extrecmenu, Femon, Mlist


    R.I.P: Gigaset M740 mit VDR von open7x0.org

  • Hi das Projekt sieht sehr schön aus,
    hat einen funktionell sehr schönen Ansatz, ich würd mich denke auch gern an den Oberflächen beteiligen, wenn das Projekt soweit ist meld dich einfach nochmal bei mir,


    nen Favoritenvermerk hat es:)

    HD-VDR (Wohnzimmer)
    HW: Zotac IONITX-F-E, 160GB SSD 2.5" & 320GB HDD 2,5", 2x1GB, Cine S2
    SW: yaVDR 0.6
    VDR:
    HW: SMT-7020S, 160GB Seagate 2.5"
    SW: zen2mms 1.1


  • Die Binaries und Sourcen haben momentan bei mir einen (vorübergehenden, falls Umzug nach vdrdeveloper.org geplant ist) Platz bekommen.


    Downloadbereich für Binary und Source: http://link.vdrserver.de/?id=106
    Readme (ist auch in den Paketen mit drin): http://link.vdrserver.de/?id=107


    cu
    Markus

  • mahlzeit


    Danke!


    Sowohl das Frontend und der REST Dienst besitzen jeweils eine eigene README_de.txt, in welcher in hoffentlich alles nötige beschrieben habe.


    Wie gesagt, das Projekt ist in einem frühen Entwicklungsstand ... läuft bei mir (24/7) zufriedenstellend.
    Ideen habe ich viele ....


    jensa


    Ich werde mal vdr-developer kontaktieren und mich melden ! Bzw. den weiteren Stand hier vermerken.


    Für Leute die etwas über die benutzten Frameworks (Java) erfahren wollen, hier mal eine kleine Beschreibung:


    Frontend (recman-frontend):


      1. Apache Wicket
      2. das übliche (Spring etc.)


    REST Dienst (recman-rest-service):


      1. RESTEasy
      2. Daten werden in einer HSQLDB (java-basierte relationale DB) abgelegt
      3. das Übliche (Spring, Hibernate etc.)


    Ich habe versucht, alles in möglichst stimmige Einzelmodule (Maven Projekte) zu zerlegen. Einfach mal einen Blick in die Sourcen riskieren.


    Erweiterbarkeit:
    Durch RESTEasy hat man die einfache Möglichkeit, auch ohne größeren Aufwand (noch nicht implementiert) Daten im "JSON"-Format (eventuell auch andere) statt wie bisher im XML-Format von der REST Schnittstelle abzufragen.


    Ist also alles relativ flexibel gehalten, um andere Frontends / Dienste zu Erstellen, die den REST Dienst nutzen können. Sind ja alles nur HTTP Request/Responses ...


    Ciao,
    Marcus

  • Ich habe das Tool jetzt mal zu Hause installiert und es läuft sehr gut. Am Frontend hätte ich noch den einen oder anderen Wunsch (z.B. zusammengefasste Aufnahmeansicht wie im Verzeichnis), aber das ist ja nur eine Formsache.


    Wie sieht es mit einer stärkeren Komprimierung aus? So wie ich das sehe, wird ja ffmeg benutzt, um den Stream zu generieren. Könnte man da nicht auch die Aufnahme z.B. live (Prozessorpower vorausgesetzt) in XVid konvertieren und dann z.B. über DLS/Inet streamen? So wie es beim streamdev-server plugin über "EXTERNAL" auch geht?


    Ansonsten: Weiter so!


    cu
    Markus

  • Guten Morgen!


    Habe heut Nacht mal den Support für VDR Aufnahmen >= 1.7.9 eingebaut.
    Das Streamen und Spulen funktioniert soweit mit allen 3 TS Formaten (720p, 1080i, SDTV), wie für normale 1.6.0 er Aufnahmen (soweit dass mein Laptop hergibt :-D).


    Müsste man natürlich noch mit einem prallgefültten Aufnahmenverzeichnis weitertesten, ob das alles so läuft, wie es soll ;)


    Habe das jetzt so integriert, dass recman beide Formate erkennt (kann man z.B. nutzen um 2 Aufnahmenverzeichnisse unterschiedlicher VDR Version in ein Verzeichnis linkt, auf das dann der recman zugreifen kann).


    mahlzeit


    Habe das sogar schon getestet und teilweise im recman eingebaut (aka encoded recordings).
    Habe das mit FFMPEG versucht. Das ist zum Teil im Backend experimentell implementiert und im Frontend. Erreichbar unter: http://localhost:9999/?wicket:bookmarkablePage=modal-dialog-pagemap:de.mackus.recman.frontend.wicket.pages.EncodingPage&id=ID_DER_AUFNAHME


    Habe das damals mit Konvertierung in FLV probiert und hatte nur das Problem, dass ich noch keine vernünftige Methode gefunden habe, die momentan konvertierte Aufnahme zu streamen. Ein mkfifo macht Java leider nicht mit ;)
    Vielleicht hat ja jemand eine Idee ? ;)


    Die Sache mit FFMPEG werde ich wohl noch flexibler machen, um eigene Versionen von FFMPEG angeben zu können, bzw. noch andere Encoder zu unterstützen (mencoder etc.).
    Die mitgelieferte FFMPEG kann z.B. keine Vorschaubilder von TS Aufnahmen machen.


    Bis dann,
    Marcus

  • Zitat

    Original von mackus
    ...
    Müsste man natürlich noch mit einem prallgefültten Aufnahmenverzeichnis weitertesten, ob das alles so läuft, wie es soll ;)
    ...


    ich stelle gerne mein kleines Aufnahmeverzeichnis mit >2000 Aufnahmen zur Verfügung :)


    kleine Frage noch: die beiden Archive entpacke ich so komplett nach /var/www/ bzw. /var/www/recman ?


    und das Frontend kann ich - Freigabe von z.B. 8008 in der Firewall im Router vorausgesetzt .- auch von außen erreichen ?

  • Servus,


    wenn ich kurz dazu antworten darf:

    Zitat

    Original von sigiberlin
    kleine Frage noch: die beiden Archive entpacke ich so komplett nach /var/www/ bzw. /var/www/recman ?


    Ich habe es nach /opt entpackt, der Ort dürfte wohl keine Roll spielen.


    Zitat

    und das Frontend kann ich - Freigabe von z.B. 8008 in der Firewall im Router vorausgesetzt .- auch von außen erreichen ?


    Ja, hab ich hier auch so, darum auch meine Frage, ob man das recoden kann... DSL6000 reicht nicht ganz im Upload... :/


    cu
    Markus

  • Zitat

    Ja, hab ich hier auch so, darum auch meine Frage, ob man das recoden kann... DSL6000 reicht nicht ganz im Upload... :/


    meine frage ist etwas offtopic, wieviel upload benötigt man den für "normale" sd aufzeichnungen bzw livestream. ich habe ca 5Mbit zu verfügung. ich glaub mich aber zu errinnern das femon eine größere datenrate angezeigt hat zb bei zdf.

  • Zitat

    Original von NemoN


    meine frage ist etwas offtopic, wieviel upload benötigt man den für "normale" sd aufzeichnungen bzw livestream. ich habe ca 5Mbit zu verfügung. ich glaub mich aber zu errinnern das femon eine größere datenrate angezeigt hat zb bei zdf.


    Hm, DVB-T könnte grade so gehen, DVB-S hat aber höhere Datenraten, da wird ein Umkodieren wohl nicht ausbleiben... 5MBit, das hätt ich auch gerne... Wo bekommt man sowas? ;) VDSL, oder? Naja, hier auf dem "Land" wohl noch nicht so schnell...


    cu
    Markus

  • sigiberlin


    Der Ort wo du die Archive entpackst ist egal. Falls du sie nach /var/www hinlegen wolltest, wegen einem Apache HTTP Server oder so, ist das nicht nötig.
    Das Frontend und der REST Dienst bringen jeweils ihren eigenen HTTP Server mit.


    Allgemein würde ich es momentan NICHT empfehlen, das Frontend oder die REST Schnittstelle von außen erreichbar zu machen! Es gibt ja nur den IP Filter, und den für das "Internet" zu konfigurieren dürfte wohl eher ohne Kompromisse schwierig sein ...


    Wegen der Bandbreite:
    Der Dienst streamt die Aufnahme so wie sie ist einfach per HTTP raus. Wieviel Bandbreite das braucht, ist abhängig von der Bitrate(n) der Aufnahme.


    Sollte ich eine vernünftige Möglichkeit finden, mit Java "on the fly" ein live encodete Aufnahme zu streamen,bzw. die Bitrate einer Aufnahme dynamisch zu verringern, dann würd ich mich versuchen.


    Ciao,
    Marcus

  • Zitat

    Original von mackus
    Allgemein würde ich es momentan NICHT empfehlen, das Frontend oder die REST Schnittstelle von außen erreichbar zu machen! Es gibt ja nur den IP Filter, und den für das "Internet" zu konfigurieren dürfte wohl eher ohne Kompromisse schwierig sein ...


    mhmmm - die meiste Zeit des Tages verbringe ich m Büro :)


    sollte aber auch nicht das problem sein - sowohl das Live-Plugin als auch xxv als auch phpmyadmin erreiche ich über verschiedene Ports, die ich vom Router entsprechend weiterleite, von außen. Sowas muß dann auch mit diesem Projekt gehen - muß mir nur ne Portkombi einfallen lassen ...


    werd das heute abend mal installieren und ausprobieren....

  • Hey,


    es gibt eine aktualisierte Version mit Support für:


      1. TS Aufnahmen VDR >= 1.7.9
      2. Für FFMPEG (Generierung Vorschaubilder) kann jetzt eine eigene Version benutzt werden (siehe CHANGELOG), oder die mitgelieferte


    Muss natürlich getestet werden ;)


    Hier zu haben: http://www.vdreceiver.de/index.php/projekte/recman.html (Danke an mahlzeit)


    Für Leute die sich die Pakete aus den Sourcen bauen wollen, die benötigen ein installiertes Maven (http://maven.apache.org/).
    Hier eine kleine Kurzanleitung:
    1. Sourcen entpacken

    Code
    tar xvzf recman-all-sources-18.11.09.tar.gz
    cd recman-all/


    2. Bibliotheken bauen und ins lokale mvn Repo installieren:

    Code
    mvn -Dmaven.test.skip=true clean package install


    3. Ausführbares Frontend Paket bauen:

    Code
    cd recman-frontend/
    mvn -Dmaven.test.skip=true clean source:jar package assembly:assembly


    Im Unterverzeichnis target/ liegen dann eine fertige *.tar.gz und eine *.zip. Eine aussuchen und dann sind wird auch schon fertig.


    4. Ausführbare REST Dienst: selber Ablauf wie in 3.:

    Code
    cd recman-rest-service/
    mvn -Dmaven.test.skip=true clean source:jar package assembly:assembly


    5. Für Leute die an den Sourcen rumwerkeln wollen. Hier ein Beispiel für den Import als Eclipse Projekt:

    Code
    cd recman-frontend/
    mvn eclipse:eclipse


    Und dann einfach beim Import in Eclipse den Ordner auswählen und importieren!


    Ciao,
    Marcus

  • Zitat

    Original von mackus
    Allgemein würde ich es momentan NICHT empfehlen, das Frontend oder die REST Schnittstelle von außen erreichbar zu machen! Es gibt ja nur den IP Filter, und den für das "Internet" zu konfigurieren dürfte wohl eher ohne Kompromisse schwierig sein ...


    Ein kleiner Apache als Reverse Proxy konfiguriert sollte zumindest mit Benutzername/Passwort-Abfrage oder auch ClientCert-Abfrage schon sicherer sein. Damit brauchst Du nicht den Dienst an sich in der Firewall freigeben, sondern nur den Apache. Ich werde meine alten Config-Files mal rauskramen, das hatte ich schon mal so gemacht...


    cu
    Markus

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!