Beiträge von mackus

    Hallo,


    habe das Recman Projekt weiterentwickelt --> Thread


    Was ist recman-web ?


    Es ist ein in Java entwickelter Webdienst, der das Streamen von VDR Aufnahmen ermöglicht. Desweiteren kann man sich Details zu allen vorhandenen Aufnahmen in einer Web Oberfläche anschauen. Zusätzlich ist eine REST Schnittstelle eingebaut, die es ermöglicht Informationen im XML Format mit externen Apps/Tools abzurufen.


    Momentane Features:


    Basis:
    - Spulbare HTTP Streams von VDR Aufnahmen
    - Parsen der Aufnahmen/Timer wird selbst übernommen, _keine_ Abhängigkeit zu SVDRP
    - Generierung von Vorschaubildern einer Aufnahme mit VLC Player >= 1.0. Anbindung per JNA realisiert (über jvlc), also Nutzung der nativen Bibliothek
    - Web Oberfläche
    - REST Schnittstelle (momentan Rückgabe von XML-Format)
    - Suche von Aufnahmen
    - Timer Anzeige


    Web-Oberfläche (realisiert mit Apache Wicket):
    - Meine Interpretation einer Tuben-ähnlichen Gallery der vorhandenen Aufnahmen mit grundlegendenen Informationen über die Aufnahme
    - Integration des VLC Player Plugins mit Hilfe von Javascript
    - Anzeige der Vorschaubilder als Slideshow bei Coursor
    - Suche mit Begriffsvorschlägen
    - Anzeige aktueller Timer


    REST:
    - Format XML
    - alle möglichen Arten von Abrufen von Informationen über die Aufnahmen


    Datenhaltung:
    - XQuery Backend als "Datenbank", Datenhaltung in XML


    TODOs:
    - Web Oberfläche braucht noch ein wenig Arbeit (vielleicht finden sich ja hier begeisterte Designer für ein schöneres Layout ;) )
    - Ausgabe von Streams in verschiedenen Formaten (Encoding)
    - ....


    Ist natürlich ne Entwicklerversion und daher fehlersüchtig ...
    Das Projekt ist für mich ein Spielkasten zum ausprobieren aller möglichen
    Dinge.


    Voluntäre/Entwickler können gerne mithelfen und sind willkommen, falls Interesse besteht.


    Hier ein akuteller Snapshot mit integriertem Webserver:
    Download zip


    Entpacken und ins entpackte Verzeichnis wechseln:

    Code
    cp webapps/root/WEB-INF/classes/conf/default-recman-config.xml ~/recman/recman-config.xml


    Gegebenfalls noch den Ordner "recman" im Home Verzeichnis erstellen.


    Diese Konfigurationsdatei anpassen:

    Code
    vi ~/recman/recman-config.xml


    Ich denke die Konfiguration sollte relativ selbsterklärend sein.


    Starten des Dienstes aus dem Projektverzeichnis mit:

    Code
    ./recman.sh


    Stoppen mit Strg-C


    Aufruf im Browser der normalen Oberfläche mit:

    Code
    http://localhost:8080/


    Alternativ mit einer simplen Oberfläche (generiert über XQuery):

    Code
    http://localhost:8080/html/simple


    Alternativ kann man auch direkt das War Archiv nutzen, falls man einen
    Servlet Container wie Tomcat oder sonstiges betreibt.
    Download war


    Beispiele der REST Schnittstelle:
    Die letzten 20 Aufnahmen absteigend nach Datum.

    Code
    http://localhost:8080/recman/1.0/xml/recordings/all?first=0&count=20&order=desc


    Eine spezielle Aufnahme mit der ID: RECORDING_ID

    Code
    http://localhost:8080/recman/1.0/xml/recordings/RECORDING_ID


    Anzahl aller Aufnahmen

    Code
    http://localhost:8080/recman/1.0/recordings/count


    Suche nach Aufnahmen mit "doku"

    Code
    http://localhost:8080/recman/1.0/xml/recordings/find?first=0&count=20&like=doku


    Bekomme Aufnahmen Vorschläge für gegebenen Begriff

    Code
    http://localhost:8080/recman/1.0/xml/suggestions/?like=doku


    Bekomme Anzahl der Vorschläge

    Code
    http://localhost:8080/recman/1.0/xml/suggestions/count?like=doku


    Projekt SVN:

    Code
    https://recman.svn.sourceforge.net/svnroot/recman/


    Screenshots:
    [Blockierte Grafik: http://recman.sourceforge.net/screens/recman-gallery-top.png]
    [Blockierte Grafik: http://recman.sourceforge.net/screens/recman-gallery-bottom.png]
    [Blockierte Grafik: http://recman.sourceforge.net/screens/recman-web-player.png]



    Ciao,
    Marcus

    Hey,


    da jetzt ein SVN zur Verfügung steht, bietet es sich an, aus den Quellen die Pakete zu bauen. Dazu benötigt man nur Maven. Link zu einer Anleitung ist im 1. Beitrag.
    Ständig neue Binaries hochzuladen dauert bei mir etwas lange.


    Wenn vielleicht ein paar Freiwillige testen/mitmachen möchten, würde ich das sehr begrüßen. Am Besten Bugs etc. bei Sourceforge posten


    Bis dann,
    Marcus.

    sigiberlin


    Hi, werde am Wochenende mal die Ursache erforschen, warum er bei großen Mengen schlapp macht. Eventuell müsste man bei der HSQLDB/Hibernate etwas drehen, oder der FAM (file alteration monitor, ist eine relativ simple Implementierung, siehe hier: http://commons.apache.org/jci/usage.html) macht bei einer solchen Menge an Daten schlapp.


    Hast du mal versucht den REST Dienst zu stoppen und wieder zu starten ?
    Geh ins Verzeichnis des REST Dienses (cd :

    Code
    cd recman-rest-service-1.0-SNAPSHOT/
    ./recman-rest-service.sh stop


    Warten bis der Dienst wirklich beendet ist (dauert bis zu 1-2 Minuten).
    Ob er beendet ist kannst du nachprüfen mit:

    Code
    ./recman-rest-service.sh status


    Und dann starte ihn neu, und schau mal ins LOG ob er weitermacht:

    Code
    ./recman-rest-service.sh start



    Habe mich mal vdr-developer (Thomas) gemeldet, ob er ein wenig Platz hätte für das Projekt (Versionkontrolle etc).


    Ciao,
    Marcus

    sigiberlin


    Das wird wohl im Moment leider noch nicht funktionieren. Da im Frontend die IP des REST Dienstes fest eingetragen wird, und somit wohl auch außen vom Frontend die fest konfigurierte IP als Stream Adresse angegeben wird.


    Müsst ich dann natürlich noch abändern.


    Eine Abhilfe hierfür wäre:


      1. wenn man die externe IP (Internet) einträgt: Beispielkonfiguration in der recman-frontend.properties:

    Code
    recman.frontend.rest.service = http://EXTERNE_IP:9998/


    2. oder die im Frontend interne angebenen URLs nimmt, und sie händisch auf die externe IP umbiegt ;)


  • Ciao,
    Marcus

    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

    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

    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

    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

    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

    Hi,


    super Plugin. Installation als Debian Paket erfolgreich. Abspielen per xineliboutput auch ohne Probleme.


    Gibts eine Möglichkeit nach dem Abspielen eines Videos wieder zum OSD Menu mit den Suchergebnissen zurückzukehren ?
    Die Eingabe von Suchbegriffen mit der Fernbedienung find ich super. Aber nach jedem Video wieder den Begriff neu einzugeben ist ein wenig umständlich.


    Irgendein Magic Key vorhanden ? :)


    Ciao

    Hallo,


    ich habe meinen VDR um die Fähigkeit erweitert über einen svdrp Command
    beliebige Medien Resourcen entgegenzunehmen und diese über xineliboutput abzuspielen.


    Dazu waren nur wenige Änderungen nötig.
    Da ich kein C/C++ Programmierer bin und nur ausschließlich Java programmiere,
    gibt es hier keine Fehlerbehandlung.


    Zur Funktionsweise:
    Der VDR nimmt ja per Port 2001 (u.a) einfache Befehle entgegen.


    Da ich nun auch von außen Medien Resourcen in meinen VDR schießen wollte,
    die er mir direkt über xineliboutput abspielen soll, bzw. in die Playlist legen soll, habe
    ich einen einfachen Weg gesucht die zu erledigen.


    Dazu habe ich das xineliboutput Plugin um einen (bzw. 2) svdrp Commands erweitert:

    Code
    PLUG xineliboutput QUEU "medienurl"


    Wobei medienurl alles sein kann (http, file, mms usw ...).


    Dadurch ergibt sich jetzt die Möglichkeit z.B. von außen Medien über den xineliboutput player (vdr-sxfe usw.) abzuspielen.


    Der erste Aufruf von QUEU führt zu einer sofortigen WIedergabe am lokalen xineliboutput Frontend.
    Die folgenden Aufrufe von QUEU führen zu einem QUEUE in die Playlist, werden also angehängt.
    Dabei hat man am Frontend die gewohnte Menus die man bedienen kann.


    Meine Anwendung dieser Erweiterung:
    1. Ich habe hier lokal einen Tomcat auf meinem VDR Rechner laufen.
    Im Tomcat laufen 2 kleine Webanwendungen die mir erlauben beliebige Weburls im Frontend einzugeben die dann direkt im VDR wiedergegben werden / hinzugeüfgt werden.
    Die andere Webanwendung ist eine Art Dateibrowser mit meinen Medien die ich dann direkt mit ein paar Klicks zu einer Playlist hinzufügen kann und im VDR wiedergeben kann.


    2. Ich hab hier MMS am laufen, und MMS jetzt so eingestellt bekommen, dass ich das
    xineliboutput Frontend laufen lassen kann und über den Command direkt alle Medien aus MMS
    heraus im xineliboutput Frontend aufrufen kann.
    Beispiel Player Aufruf:

    Bash
    #!/bin/bash
    
    
    echo "active" > /tmp/xine.active.pid
    svdrpsend PLUG xineliboutput QUEU "$1"
    svdrpsend REMO on


    Das switchen zwischen MMS und xineliboutput Frontend hab ich durch hässliche
    Skripterei implementiert.
    Funktioniert ganz gut.


    Ich hänge den Patch mal an, falls das jemand braucht.
    Vielleicht gibt es auch viel einfachere Methoden den xineliboutput Player nach Außen sichtbar zu machen.


    Patchen:

    Code
    patch -p0 < ../xineliboutput1.0.3_svdrp.patch


    Im Source Root von xineliboutput.


    Patch ist geben Version 1.0.3 (Source aus e-tobi sid)


    Ciao,
    Marcus

    Hallo,


    da bei mir vga2scart läuft,
    stellt sich bei mir die Frage wie ich ein Bildbetrachter realisieren könnte.


    Es gibt ja genug Software wie mms oder mythtv die man parallel zu vdr nutzen kann,
    um Diashows und sonstiges zu realisieren.


    Die Bildanzeige von vdr (xineliboutput) oder das image plugin ist nicht so das was ich suche.


    mms etc. wie im Forum schon beschrieben, über Skripte zu starten wird wohl mit der vga2scart Lösung nicht ganz so einfach hinhauen.
    Da müsste man wohl einen neuen Xorg mit anderer Config starten, die für den Desktopbetrieb angepasst wurde.


    Hat jemand mal ausprobiert sowas wie mms oder ähnliches parallel zum vdr zu betreiben ?


    Da hätt ich noch eine Frage, ist es möglich das Bild aufm Fernseher bei Videobetrieb noch weiter zu skalieren ? Bei mir sind nämlich die Ränder abgeschnitten, ich sehe grad noch so das Senderlogo.
    Ich starte das Frontend so: "vdr-sxfe --reconnect -f --aspect=4:3" mit der in diesem Thread angegeben setup.conf.


    Danke !


    Gruß,
    Marcus