Aufnahmen automatisch verarbeiten (recode, Plex, etc.)

  • Moin,


    mein VDR-Server (headless) nimmt fleissig auf und weil der Platz begrenzt ist und die Ausspieler im Haus weder .ts-Files noch den Zugriff auf ein Netzwerkshare so richtig gerne mögen würde ich mich gerne mal mit der automatischen Verarbeitung der Aufnahmen befassen. Bisher habe ich einfach nur die .ts-Files mit dem VLC auf dem Mac oder einem installierten XBMC über VNSI abgespielt. Unser bisheriger Medienkonsum außerhalb VDR ist aber eher auf Plex ausgerichtet. Auf der Synology läuft ein Plex-Server und es gibt mehrere Plex-Clients (z.B. Samsung-TV, iOS-Devices etc.).


    Bei dem ganzen Vorhaben gibt's für mich noch viele Unbekannte, aber das sind die Hauptpunkte die ich klären muss und ich hoffe ihr könnt mir dabei helfen:


    1. mehrere .ts-Files von Aufnahmen zusammenfügen (warum auch immer aber trotz anders lautender Einstellungen gibt es während der Aufnahme offenbar regelmäßig Probleme die zu mehreren unterschiedlich großen .ts-Files führen)
    2. Informationen aus dem EPG die im Aufnahmeverzeichnis enthalten sind irgendwie für Plex extrahieren bzw. evtl. auch direkt die Aufnahmedatei entsprechend benennen.
    3. Files transcodieren (mp4?)
    4. Files per NFS auf die Synology kopieren


    Das ist ne recht lange Liste an Dingen gemessen daran, dass mir bei den meisten noch völlig unklar ist wie's geht. Dazu kommt, dass ich noch nicht weiss ob die A-350 CPU so schlau zum transcodieren ist. Alternativ bestünde die Möglichkeit die Transcodierung über einen anderen Rechner zu machen, was das ganze aber natürlich nochmal verkompliziert. Ein MacMini (Core2Duo) der ansonsten recht wenig zu tun hat stünde dafür aber bereit.


    Vielleicht habe ich ja glück und es findet sich jemand, der auch den PMS (Plex Media Server) einsetzt und mit der Datenaufbereitung schon Erfahrungen hat? Ansonsten bin ich natürlich für jeden weiteren Tipp auch dankbar.


    EDIT: gerade bei nochmaligem Test festgestellt, dass sogar der Plex-Client auf dem nicht mehr ganz frischen Samsung-TV mittlerweile die .ts-Files passabel streamen kann, was das Transcoding ggf. hinfällig macht.

    headless server AMD E-350D, 4GB Ram, 1TB HD, yaVDR (VDR 2.0.6 - live 0.3.0 - streamdev 0.6.1-git - EPG search 1.0.1-beta)

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von lokari ()

  • Ich hatte auch diese Fragestellung. Nach einigen Recherchen habe ich mich für HandBrakeCLI zur Konvertierung in einen MKV-Container entschieden. Aus diversen Scripts (welche genau kann ich nicht mehr sagen) habe ich das anhängende Script gebaut und rufe es über den recording-hook "after" auf.


    Das sind die Schritte:

    • Zusammenkopieren der ts-Files im Verzeichnis zu film.ts
    • Film-Informationen werden aus der Datei "info" gewonnen.
    • Konvertieren der film.ts mit allen Audio-Tracks, wobei das AC3 an erster Stelle steht
    • Speichern der mkv-Datei in einen speziellen Ordner
    • Das script schreibt sein log in den Aufnahme-Ordner
    • Mein NAS holt sich einmal täglich das gesamte Aufnahmeverzeichnis vom vdr
    • Mit dem BD-Player oder einer Amiko Alien2 SAT-Box spiele ich dann die Filme vom NAS per NFS Share

    Es funktioniert recht gut. Leider schmiert der vdr ab und zu ab, so dass der hook das script nach dem vdr-restart erneut startet. Zumeist ist das mkv-file dann doch brauchbar.
    Manchmal restartet der vdr auch während der Aufnahme, so dass mehrere Teilstücke als ts-Files entstehen. Wenn davon die erste so klein, ist dass HandBrakeCLI beim Preview-Scan keine sinnvollen Daten findet, dann ist das Ergebnis unbrauchbar. Wenn ich so etwas in der Log-Datei erkenne, lösche ich die erste ts-Datei und prüfe, ob der Film in den anderen ts-Files vollständig vorhanden ist. In dem Fall starte ich das script manuell via SSH.


    Achtung: Ich habe bisher nur SD-Material!


    Vielleicht hilft die Info!


    Christoph

    Dateien

    • convertTS.sh

      (2,31 kB, 450 Mal heruntergeladen, zuletzt: )

    vdr-server: Debian Jessie (Basis Kanotix), vdr 2.2.0
    Amazon FireTV with Kodi 15.1 Isengard and vdr vnsi-client
    HTPC: Amiko Alien2 Spark (Stock) and Enigma2 (PKT Image)
    NAS: ReadyNAS Duo


    NAS: NSLU2 mit Debian Etch 4.0 (inactive)

  • Hi,


    ich habe damit bereits rumexperimentiert und bisher den Stand, dass meine Aufnahmen als Quelle/Verzeichnis in Plex angezeigt werden. Dazu nutze ich ein Script von einem User im Plexforum, welches hier liegt.

    Das Ganze dann ins Scanner Verzeichnis (bei mir unter yaVDR / Ubuntu 12.04 nach /var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Scanners/Movies) und als .py ausführbar machen.



    Sieht dann so aus:




    Aufnahme Detail, angereichert mit Bildern von einem Plex-Internen Scraper



    Aufnahmeübersicht, hier fehlt mir meine Ordnerstruktur - dafür kann ich aber die Suche von Plex nutzen.


    Auf iPhone/iPad streamt das wunderbar. Das planmässige Syncen (umwandeln in mp4) habe ich noch nicht ausgetestet. Sollte das auch noch gehen, dann ist das für meine Apple-Systemlandschaft mit den Apps eine sehr sehr schöne Ergänzung zu yaVDR.


    Cheers
    J*

  • Jondalar : Kann man das Python-Script aus dem Plexforum ohne Code-Änderungen auch als TV-Serien-Scanner nutzen (also nicht als Movie-Scanner)? Ich würde dann meine VDR-Aufnahmen nach Spielfilme und Serien getrennt einbinden wollen.
    Momentan habe ich es also Movie-Scanner hinzugefügt und bin nicht ganz zufrieden damit, wie die Serien angezeigt werden, welche in meinem Aufnahmeverzeichnis unter "Serien" liegen.


    Gruß
    hepi

  • puuuuh ... ehrlich gesagt - keine Ahnung. Ich würde vermuten, dass Du dazu andere Scraper Mechanismen brauchst... Ich hab das relativ schnell ignoriert was er da auswirft, da sich das bei mir für GZSZ (meine Frau) und Biene Maja/Sandmännchen (mein Sohn) nicht lohnt wirklich bzw. mich noch nicht interessiert hat.


    Allerdings - wenn Du den VDR Scraper nimmst dann sollte das ja gehen. Ich vermute nur, dass das Python Script Movie-Objekte erzeugt, und keine Serien-Objekte. Ich kann das gerne mal anschauen am Wochenende.


    CHeers
    Alex

  • Jondalar : Kann man das Python-Script aus dem Plexforum ohne Code-Änderungen auch als TV-Serien-Scanner nutzen (also nicht als Movie-Scanner)? Ich würde dann meine VDR-Aufnahmen nach Spielfilme und Serien getrennt einbinden wollen.
    Momentan habe ich es also Movie-Scanner hinzugefügt und bin nicht ganz zufrieden damit, wie die Serien angezeigt werden, welche in meinem Aufnahmeverzeichnis unter "Serien" liegen.


    Gruß
    hepi

    Hallo,


    Ich habe mit dem Script ebenfalls erfolgreich meine VDR Filme in den Plex Server integriert. Bei Serien ging es mir wie dir. Die Lösung war nicht ausreichend.


    Nachdem ich mir überlegt hatte selber etwas über Python zu lernen und ggf. das Script auf Serien anzupassen bin ich aber auf eine etwas andere Idee gekommen. Der PMS braucht für Serien eine bestimmte Struktur.


    /Heroes
    /Season 1
    Heroes - s01e01.avi
    Heroes - s01e02.avi
    Heroes - s01e03.mp4
    /Season 2
    Heroes - s02e01.avi
    Heroes - s02e02.mkv
    Heroes - s02e03.m4v


    Da ich meine Serien in einer ähnlichen Struktur habe


    /Serien/Abenteuer/Black_Sails/Season_01/01~03_Unheilige_Allianzen/2014-04-27.20.15.71-0.rec/00001.ts


    habe ich ein Script "gebastelt" das mir aus der Verzeichnisstruktur einen Symlink auf das ts File generiert. Da in dem Pfad alle Informationen sind die auch Plex benötigt habe ich mit awk einen ein nicht gerade schönes aber funktionierendes Script erstellt das mir in diesem Beispiel folgenden Symlink erstellt


    S01E03_Unheilige_Allianzen.ts -> 01~03_Unheilige_Allianzen/2014-04-27.20.15.71-0.rec/00001.ts


    Durch diesen Symlink halte ich nun die von Plex vorgegeben Struktur wieder ein:


    /Black_Sails/Season_01/S01E03_Unheilige_Allianzen.ts


    und kann den Standard Scanner von Plex inkl. TVDB Agent benutzen.


    Ich habe ein 08/15 Script erstellt dass als cronjob täglich läuft.


    Shell-Script
    1. #!/bin/shPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin#Use this script with care it maybe delete all your symbolic links or create a hack of symbolic links.inputFile=/tmp/videofilesseriesFolder=/srv/vdr/video.00/Serien/awkScript=/usr/local/bin/createSeriesSyms.awk# Delete all symbolic links - use only to reset the the original VDR structure# find /srv/vdr/video.00/Serien/ -type l -exec rm -rf {} \;# Delete all symbolic dead links in the series folderecho "CSS: Deleteing old symbolic links"find -L $seriesFolder -type l -exec rm -rf {} \;# find all 0001.ts files in the series folder and put it into die inputFileecho "CSS: Searching for videofiles"find $seriesFolder -name 00001.ts > $inputFile# Call the awk File to create the symbolic linksecho "CSS: Starting the AWK Script"awk -f $awkScript $inputFile


    Im awk File werden dann die symlinks gebastelt. Ich sage hier bewusst gebastelt weil ich wenig Ahnung von awk habe. Jemand der sich damit auskennt darf das gerne verbessern ;).


    Code
    1. #! /usr/bin/awk -f# set the file separator for my series folder.# Example: /srv/vdr/video.00/Serien/Crime/Banshee:_Small_Town._Big_Secrets./Season_02/02~05_Die_Wahrheit_über_Einhörner/2014-05-15.22.05.38-0.rec/00001.ts# so the separator here ist the / for the normal file structure and the ~ for my season and episode# If you want to use this script you have to specify your own separators.BEGIN{FS="[/|~]*";}{ #print FILENAME; #f=FILENAME;}{ # Because the result of the find command does not have any escaped chars I use gsub to escape special characters. # There maybe some characters more. They can be added by a another gsub command gsub(/\:/,"\:"); gsub(/\(/,"\("); gsub(/\)/,"\)"); gsub(/\'/,"\'"); #This combination will only work for MY structure of folders. If you want to use this you have to determine your own structure. #The example from the top will look like: #$0 /srv/vdr/video.00/Serien/Crime/Banshee:_Small_Town._Big_Secrets./Season_02/02~05_Die_Wahrheit_über_Einhörner/2014-05-15.22.05.38-0.r$ #$1 #$2 srv #$3 vdr #$4 video.00 #$5 Serien #$6 Crime #$7 Banshee:_Small_Town._Big_Secrets. #$8 Season_02 #$9 02 #$10 05_Die_Wahrheit_über_Einhörner #$11 2014-05-15.22.05.38-0.rec #$12 00001.ts #This results in: ln -s 02~05_Die_Wahrheit_über_Einhörner/2014-05-15.22.05.38-0.rec/00001.ts /srv/vdr/video.00/Serien/Crime/Banshee\:_Small_Town._Bi$ #For Testing you can use the print statement #print("ln -s " $9"~"$10"/"$11"/"$12" ""/"$2"/"$3"/"$4"/"$5"/"$6"/"$7"/"$8"/""S"$9"E"$10".ts"); system("ln -s " $9"~"$10"/"$11"/"$12" ""/"$2"/"$3"/"$4"/"$5"/"$6"/"$7"/"$8"/""S"$9"E"$10".ts"); # With this you can get your own variables #for (i=0;i<15;i++) #{ #print ("Field "i" "$i); #}}


    Natürlich darf es dafür nur eine 00001.ts geben und keine 00002.ts usw. Das war bei mir seit der Umstellung auf mein NAS der Fall. Leider bei älternen Aufnahmen nicht. Deswegen auch hier noch ein auf die schnelle gebasteltes Script das die ts files zu einem zusammensetzt.


    Shell-Script
    1. #!/bin/bashfind "/srv/vdr/video.00/" -path "/srv/vdr/video.00/Serien/*" -prune -o -name 00002.ts -exec dirname {} \; | sort -u > tsfilesPFADE=$(cat tsfiles)for f in $PFADEdo echo $f # add every 0000x.ts file to the 00001.ts file cat $f/00002.ts $f/00003.ts $f/00004.ts $f/00005.ts >> $f/00001.ts rm $f/00002.ts $f/00003.ts $f/00004.ts $f/00005.tsdone


    Vielleicht hilft es ja jemandem weiter oder noch besser jemand mit mehr Zeit und Ahnung macht ein schönes Script daraus. Funktionieren tut das ganze auf alle Fälle seit ca. einer Woche bei mir ohne Probleme. Natürlich aber nicht mit den Informationen aus der VDR Info sondern denen aus der TVDB. Was mich nicht wirklich stört. Endlich habe ich alle meine Aufnahmen auf einem SErver und kann mit Plexbmc oder plex auf meine Tablett tun und machen was ich möchte egal wo ich bin.


    Alles in allem denke ich eine tragbare Lösung für das Problem mit den Serien und sicher auch auf Filme anwendbar falls man auf die VDR Infos verzichten kann. Die Scripts dürfen natürlich gerne von jemand der es besser kann als ich optimiert werden ;).



    Ciao


    Wyse



    Bilder

    WZ: yaVDR (0.5): Gigabyte GA-MA78GM-S2H / AMD 240e / LianLi PC-C50B / atric & Harmony 650 / 2GB G.Skill 800 / 2x TT S2-1600 1x TT S2-3600 / 60GB OCZ Vertex2 / Gainward G210 passiv
    AZ: yaVDR (0.5): PoV 330-1 (Atom/ION) / MS-Tech MC-1200/ 2GB Kingston VR 800 / TT S2-1600 / OCZ SSD Onyx 32GB / atric & Harmony 600
    EZ: Raspberry Pi - OpenElec
    HL: GA-MA78GM-S2H / AMD 5050e (@1.1V) / 2x DVBSky S952 Dual / 64 GB SanDisk SDSSDP-064G-G25 / 4 GB RAM / BQT E9
    NAS: Synology DS-1511+ (DSM 4.2) / 5x2TB Samsung F4 / Raid 5 / Smargo / Oscam / APC Back-Ups cs 350

    Dieser Beitrag wurde bereits 4 Mal editiert, zuletzt von Wyse ()

  • Ich mache das Ganze völlig anders. Ich habe einen BASH-Script den ich als after recording hook eingehängt habe. Der ist sehr primitiv. Er benutzt den VDR-Seriestimer-Skript um festzustellen ob es sich um eine Serie, oder einen Film handelt. Falls es einer Serie ist. werden im Plex-Verzeichnis die entsprechenden Directories erzeugt, falls nötig. Die Staffel- und Episoden-Kennungen werden in den Pfad eingebaut, das macht mich unabhängig von Epgsearch.
    Als Unterstützung für den Scraper des Plex Media Servers ermittele ich noch das Jahr und hänge das in Klammern hinter den Filenamen. Das geht dann als Hard Link in ein Unterverzeichnis vom Plex Media Server mit dem Namen "uncutted". Diese Files schneide ich dann später mit Avidemux. Dadurch sind sie aber schon gleich am Anfang für den Scraper des Plex Media Servers zu sehen.


    Der Scraper ist zumindest bei mir recht treffsicher und wenn er es mal nicht ist, dann ist es mit der Plex Web App sehr einfach ihm auf die Sprünge zu helfen.


    Das ist jetzt nur mal so als Idee zu verstehen. Mein Script ist sehr auf mich zugeschnitten und ich möchte ihn nicht supporten müssen.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • naja aber 5 Euro/Monat ....


    was erwartet Plex bei den Serien? Muss das eine bestimmte Ordnerstruktur haben damit das richtig erkannt wird?
    Offen gestanden versteh ich nicht was da genau in dem Skript von Wyse passieren soll, würde aber eh nicht zutreffen auf meine Serien.


    Code
    1. /srv/vdr/video.00/Serien/Deadwood/s02e08_Das_Fahrrad/2016-06-03.16.58.1-0.rec/
    2. 00001.ts 00002.ts 77691_0.jpg index info
  • /srv/vdr/video.00/Serien/Deadwood/s02e08_Das_Fahrrad/2016-06-03.16.58.1-0.rec/
    00001.ts 00002.ts 77691_0.jpg index info


    Mein Serien-Folgen schneide ich ja alle und speichere sie um. Also: <serien titel>/S<staffel nr.>E<episode nr.> - <episoden titel> (<jahr>).(mpeg|mpv)


    Ich habe aber auch einen Recording-Hook der die ungeschnittene Aufnahme in einen Zwischen-Ordner umkopiert mit genau dieser Namenskonvention.
    Da reden wir mal privat drüber.


    Für die orginalen VDR-Aufnahmen, nehme ich ja das VDR.bundle, aber ich weiß wirklich nicht ob das mit Serien klarkommt.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Moin,
    Hallo Hotzenplotz,



    kurzes Update zum Thema Plex:


    PlexDVR ist im Betastatus schon recht gut. Die "Aufnahme" macht Plex selbst, in dem es einen .ts-Stream (oder h264 mkv) in eine Datei speichert bzw. danach transcodiert. Es können auch scripte (comskip zum, Beispiel) nach der Aufnahme aufgerufen werden um noch mehr mit dem File zu machen.


    Das beste Feature ist für mich das WebUI von Plex, in dem jetzt dann auch meine Frau gerne mal einen Timer setzt bzw. vor dem Browser sitzt und auf einmal hat sie eine Serie programmiert.


    Aktuell unterstützt Plex nur HDHomeRun - was aber mittels eine python-Proxy for TVH schön zu umgehen ist (https://github.com/jkaberg/tvhProxy). Das selbe für VDR wäre schön irgendwann...


    Jetzt zum eigentlichen Thema - Ja, die können einen vernünftigen Serientimer, er funktioniert sogar ;-)


    Besteht interesse an Bildern usw? Ich kann gerne einen neuen Thread aufmachen unter sonstiges und die mal posten sowie das Setup erklären.


    VG
    J*

  • Besteht interesse an Bildern usw? Ich kann gerne einen neuen Thread aufmachen unter sonstiges und die mal posten sowie das Setup erklären.


    Bitte, das würde mich sehr interessieren. Ich habe es probiert und der Proxy wird auch von Plex erkannt, aber dann gibt es eine Fehlermeldung im Proxy und in Plex. Mir ist nicht klar was ich noch in dem Proxy-Skript anpassen muss.
    Außerdem habe ich das Problem, dass ich den reverse proxy nicht mit nginx machen kann sondern noch auf apache angewiesen bin. Ich kann deshalb nur hoffen, das ich die Konfiguration dafür richtig aufgesetzt habe.


    In dem neuen thread könnte ich dann mal die Ausgaben des Proxies posten.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Inzwischen habe ich es zum Laufen gebracht und bin einigermaßen erstaunt. Es gibt zwar ein paar Probleme im Detail, aber das ist ja auch noch beta.


    Der Proxy scheint recht einfach zu sein. Ein Plugin auf Basis des Restfulapi-Plugins, könnte das meiste sofort ersetzen. Nur beim Streamen bräuchte ich Unterstützung.


    Ach ja, die verwendeten EPG-Daten sind stellenweise deutlich besser als die von Epgdata.com. Plex weiß, dass die nächste Folge von Doctor Who die 1. der achten Staffel ist und nicht die 3..
    Wo es noch konzeptionelle Probleme gibt ist das Kennzeichnen der Aufnahmen mit SD/HD. Es werden dafür wohl die Epgdaten herangezogen, aber man muss eben zum Teil die Epgdaten des SD-Senders für den
    HD-Sender benutzen, weil es nicht für beide Sender Daten gibt.


    Grüße
    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Moin,


    sehr gut gda ! Ich finde es super schick und komfortable damit zu programmieren. Und ich stimme Dir absolut zu, mit dem RestFUL Api plugin oder dem XMLAPI plugin sollte sich das ganz schnell nachbauen lassen. Die URL Struktur die die Streams kenne ich, können ja darüber gesondert schreiben.


    Link zu einem gesonderten Thread ist hier: 1 Ich werde da dann später was zum setup posten.


    VG,
    J*