vdr-transcode - swiss knife for transcoding

  • VDR Aufnahme mit ffmpeg in h264 oder hevc umwandeln. Der Script ist dafür gedacht, einzelne oder mehrere Aufnahmen so nach h264 zu wandeln, dass sie kompatibel zum vdr bleiben. Platzersparnis: bei Aufzeichnungen von ÖRs mit großen Bitraten Faktor 3 und mehr (mpeg2 -> h264). Export und Import möglich. Bearbeitung von Video-Dateien ist ebenfalls möglich.

    Aufgerufen wird der Script auf der cli im Aufnahmeverzeichnis der jeweiligen Aufnahme, genauer gesagt im .rec Verzeichnis. Sollen eine größere Menge von Aufnahmen gewandelt werden siehe Automation.

    Modularer Aufbau


    4 Eingabe-Module vdr, Video-Datei (z.B. mkv mp4 avi), dvd, AVCHD

    1 zentrales Verarbeitung Modul

    2 Ausgabe-Module vdr, Video-Datei mkv mp4


    Folgende Parameter sind implementiert:



    Das sieht erst mal kompliziert aus, ist aber ganz einfach (Eingabe für vdr-Aufnahmen im Aufnahmeverzeichnis):


    Eine vdr-Aufzeichnung nach mp4 exportieren: (Standard-Eingabe ist vdr)


    vt -o mp4


    Ein mp4 oder mkv nach vdr konvertieren: (Standard-Ausgabe ist vdr)


    vt -i <datei>


    Aufzeichnung in mpeg2 nach h264 konvertieren um Platz zu sparen (mpeg2 -> h264 ist Standard)


    vt kein Parameter notwendig.


    Aufzeichnung nach hevc konvertieren um Platz zu sparen, derzeit nur mit NVIDIA-Karte mit encoder oder vaapi sinnvoll, per CPU sehr zeitaufwändig. Sinnvoll bei HD.


    vt -h264 hevc


    Standard Vorgaben können in einer Datei /etc/vdr-transcode.conf eingetragen werden.


    Installation:


    vdr-transcode.gz herunterladen und in /usr/local/bin speichern.

    entpacken mit gzip -d

    vdr-transcode.conf.gz herunterladen, in /etc speichern und entpacken.


    Für die verkürzte Eingabe muss ein symb. link angelegt werden:


    ln -s vdr-transcode vt


    Debiannutzer finden hier eine passende ffmpeg-Version, die auch libfdk_aac enthält.

    Probleme:

    Bitte unbedingt die Datei logfile mit posten.

    Automation:


    Aufzeichnungen werden durch eine Datei vt.conf gekennzeichnet, dort können Parameter zur Bearbeitung enthalten sein. Parameter können mit vt --conf <parameter> angelegt werden.

    Der Prozess wird mit vt --as & gestartet und kann mit vt --ak beendet werden.


    Suchpfade werden in /etc/vdr-transcode-s.conf angelegt.


    Aufzeichnungen markieren über Menü:


    reccmds.conf


    Code
    vdr-transcode {
        touch : x() { /usr/bin/touch $1/vt.conf; }; x
        hevc : x() { /bin/echo -vc hevc > $1/vt.conf; }; x
        inf : x() { /usr/local/bin/vt -i $1 --inf; }; x
        }


    Stand 23.12.2020 Aktuelleres im git oder hier

  • Das Script ist eine Alternative zum to_h264. Kann im Moment noch nicht so viel, auf der anderen Seite aber mehr durch modularen Aufbau. Als ich begann das Script to_h264 zu schreiben, hatte ich kaum eine Vorstellung, wo die Reise hingehen könnte, noch hatte ich Erfahrung mit bash. Das sind naturgemäß schlechte Vorraussetzungen für einen modularen Aufbau. Es ist nicht kompatibel zu seinem Vorgänger, was die Ansteuerung betrifft.

    Das Script habe ich an einem Tag (Sa) runtergeschrieben und an den folgenden Tagen getestet, korrigiert und verbessert. Bei dem frühen Status sollte man transkodierte Videos nicht gleich löschen. Die dvd-Eingabe ist noch nicht fertig, aber einsetzbar.


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

    Edited 3 times, last by jsffm ().

  • Parameter aaclib ergänzt,

    h264enc=libx264 jetzt Standard (.conf)


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

  • Beispiele ergänzt.


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

  • jsffm


    Hast Du schonmal einen mp4 Download aus einer Mediathek in VDR gewandelt?


    Regards

    fnu

    HowTo: APT pinning

  • Hab ich


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

  • jsffm Und die ruckeln bei Dir nicht die umgewandelten Aufnahmen?

    HowTo: APT pinning

  • Kannst Du mal das Protokoll zeigen?


    Ich hab gerade in einen konvertierten Download von Arte reingeschaut, da ruckelt nix,


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

    Edited once, last by jsffm ().

  • Neue Version.


    -crop <w:h>

    -aspect <aspect> # 16:9|4:3


    z.B. LB -> 16:9


    Code
    -crop iw:ih/4*3
    -aspect 16:9


    Das Script nutzt mediainfo, ist das nicht installiert, wird jetzt versucht, die Information mit ffmpeg zu bekommen.


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

    Edited once, last by jsffm ().

  • Framerate


    Weicht die Framerate von 25 oder 50 ab, kann das konvertiert werden mit z.B. -h264 h264 -r 25 mit -h264 h264 erzwinge ich Reencodierung.

    Im Moment wird bei Konvertierung <file> -> vdr keine info-Datei geschrieben. Ich werde noch einbauen, dass eine Minimal info mit F <fps> geschrieben wird, evtl. auch mehr.


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

  • Kannst Du mal das Protokoll zeigen?

    Gestartet mit "vdr-transcode -i <file.mp4>". Sollte ja eigentlich 720p sein, sieht aber eher aus wie "schlecht deinterlace'tes" 576i und ruckelt ... Ton ist gut, witzigerweise.

    Files

    HowTo: APT pinning

  • Und wenn Du die Datei mit nem anderen Player abspielst, ist die ok? Seltsam, ffmpeg macht da ja nix dran ausser demuxen und remuxen nach ts.

    Welche Version von ffmpeg hast Du denn?


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

  • Ja, die orignale Datei funktioniert perfekt mit anderen Playern, VLC, und extra nomm'l getestet mit iTunes ...


    "Um-containern" muss ich ja nur für VDR ...


    ffmpeg version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2000-2019 the FFmpeg developers

    HowTo: APT pinning

  • ffmpeg version 4.2.1


    Wenn Du magst, kannst Du mir die Datei mal auf meinen ftp-server schieben.


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

  • Zum Generieren von index wird noch folgende Anweisung, am Besten in der .conf, benötigt:


    -vdr <path_to_vdr>


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

    Edited 2 times, last by jsffm ().

  • Neue Version


    Bei <file> -> vdr wird jetzt eine info-Datei angelegt.


    -vdr <path_to_vdr> nicht mehr nötig, wenn vdr im Pfad ist.


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

  • Gibt es eigentlich noch Interesse am Lesen von alten .vdr Aufnahmen?


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

  • Ich habe das mit vaapi noch nicht hinbekommen, womöglich falsche HW. Wenn Du mir ein funktionierendes Beispiel für vaapi zeigst, baue ich das ein.


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

  • Ich habe ein Beispiel von dem modifizierten VDR-live:

    ffmpeg -loglevel warning -f mpegts -analyzeduration 1.2M -probesize 5M -hwaccel vaapi -hwaccel_output_format vaapi -i <input> -map 0:v -map 0:a:0 -vf 'deinterlace_vaapi=rate=field:auto=1,scale_vaapi=w=1280:h=720' -c:v h264_vaapi -preset slow -qmin 18 -qmax 30 -g 25 -r 25 -c:a aac -ac 2 -b:v 2M -maxrate 2M -bufsize 1.8M

    So läuft es bei mir für Live-TV Streaming.

    ffmpeg mit HW encoding support läuft bei mir auch noch nicht so lange.

    Yavdr auf Yammy / 2 Kabel Empfänger / Asrock j4105-itx / IRMP KDB

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!