[to_h264] VDR Aufnahme mit ffmpeg in h264 umwandeln


  • Außer, dass ich das bei jedem deiner Updates nochmal mache. Daher meine Anregung, das gleich auf deiner Seite möglichst allgemein zu halten


    Ich versuche schon den Script möglichst allgemein zu halten, aber ganz ohne Anpassungen wird das schwierig. Ich kann die Anpassungen nur erleichtern.



    Kannst du noch was zur Formaterkennung sagen? (mpeg2video)


    z.B. mit ffmpeg -i ... Beispiele findest Du im Script.


    vdr-User-# 755 to_h264 chk_r

  • Hi,


    ich hab das auch mal ausprobiert, aber ich sehe ca. alle 2 Sekunden Störungen im Bild. (ts->x264, mit der t-Version ist es noch schlimmer)
    Ich nutze einen vdr-sxfe Client übers Netz. Die Platzersparnis ist aber nennenswert.


    Gruß,
    Alex

  • Hallo,


    ich hab jetzt zwei Aufnahmen konvertiert. Die eine Aufnahme ist deutlich geschrumpft, die andere aber nicht.
    Hast du eine Idee?


    Anfangs hat er ja das Format der bestehenden Aufnahme nicht ermitteln können. Kann es daran liegen?


    Gruß&Danke,
    Hendrik

  • Die ffmpeg Version 1.2.1 funktioniert nicht optimal, in gentoo ist sie maskiert.


    Bitte noch etwas Geduld, dann kommt die nächste Version, die auch hierfür eine Lösung bietet.


    ffmpeg version 1.07 läuft bei mir recht gut.


    vdr-User-# 755 to_h264 chk_r

  • Hi,


    ich hab das auch mal ausprobiert, aber ich sehe ca. alle 2 Sekunden Störungen im Bild. (ts->x264, mit der t-Version ist es noch schlimmer)
    Ich nutze einen vdr-sxfe Client übers Netz. Die Platzersparnis ist aber nennenswert.


    Gruß,
    Alex


    Kannst Du mal das Protokoll posten?


    vdr-User-# 755 to_h264 chk_r

  • Code
    1. Duration: 17:24:54.32, start: 1.400000, bitrate: 203 kb/s


    Hier sieht man, dass das Ergebnis ziemlich schrottig ist


    Code
    1. Stream #0:0[0x100]: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p, 720x576 [SAR 16:15 DAR 4:3], 25 fps, 25 tbr, 90k tbn, 50 tbc
    2. Stream #0:1[0x101](deu): Audio: aac ([15][0][0][0] / 0x000F), 0 channels, fltp


    Hier ist der Ton schrottig


    vdr-User-# 755 to_h264 chk_r

  • Code
    1. ffmpeg version N-54271-g7f866c1


    Das sieht nach einer git-Version aus, verwende lieber eine stabile Version. Am Besten läuft bei mir 1.0.7

    Code
    1. Input #0, mpegts, from '00001.ts':
    2. Duration: 00:20:07.67, start: 39166.655644, bitrate: 13888 kb/s
    3. Program 132
    4. Stream #0:0[0x17de]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 50 fps, 50 tbr, 90k tbn, 100 tbc
    5. Stream #0:1[0x17e8](deu): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 256 kb/s
    6. Stream #0:2[0x17e9](mis): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 192 kb/s
    7. Stream #0:3[0x17eb](mul): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 192 kb/s
    8. Stream #0:4[0x17ea](deu): Audio: ac3 ([6][0][0][0] / 0x0006), 48000 Hz, stereo, fltp, 448 kb/s
    9. Stream #0:5[0x17f3](deu): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006) (hearing impaired)


    Das ist eine HD-Aufnahme, die ist schon in H264, die kann mit dem Script nicht komprimiert werden, der ist nur für SD-Aufnahmen in Mpeg2 gedacht.


    vdr-User-# 755 to_h264 chk_r

  • Heute noch einen Bug gefunden, bei C wäre das nicht passiert, hier müssen alle Variablen deklariert werden.


    Die wichtigsten Schalter stehen jetzt ganz am Anfang:



    Parameter lassen sich am Einfachsten durch '#' deaktivieren.


    join3=yes (projectx)


    Voraussetzung:


    projectx installiert.
    tsmuxer installiert.


    hiermit lassen sich fehlerhafte Aufzeichnungen reparieren.
    Bei .vdr Dateien erkennt ffmpeg nicht die richtige Reihenfolge der Audio-Streams, das führt zu Problemen bei Aufzeichnungen, die aus mehreren Dateien bestehen und mehr als einen Audio-Stream haben. Hier sollte unbedingt mit projectx gearbeitet werden. Projectx ist ein hervorragender demuxer, aber als muxer hatte ich immer Probleme, daher benutze ich als Nachbearbeitung tsmuxer.
    Eine echte Herrausforderung war die korrekte Zuordnung der Audio-Streams, hierzu musste ich das Projectx-Protokoll parsen.


    Bei .vdr Aufzeichnungen zeige ich autom. sämtliche Dateien mit ihren Audio-Streams an und man kann hier auf projectx umschalten.


    demux_x264=yes (in Verbindung mit projectx)
    demux_aac=yes


    Voraussetzung:


    x264_encoder installiert.


    Das setze ich bei ffmpeg 1.2.1 ein, hier benutze ich x264 zum Konvertieren, aac-Konvertierung mit ffmpeg (Prozesse werden parallel gestartet). Anschliesend muxe ich mit tsmuxer direkt ins Zielverzeichnis.


    Code
    1. #aaclib="libfaac"
    2. aaclib="libfdk_aac" # Fraunhofer Library - bessere Qualität


    Die Fraunhofer Library ist aufgrund der besseren Qualität zu empfehlen.


    Code
    1. temp=temp


    Verzeichnis, wird von projectx benutzt. Arbeite ich über NFS (Netzwerk), sollte hier ein lokales Laufwerk angegeben werden.


    Code
    1. videodir=/video


    Videoverzeichnis, um vdr mitzuteilen, das Verzeichnis neu einzulesen.


    Code
    1. vdr=$VDRDIR/vdr


    Aufruf von vdr um index neu zu erstellen.


    Nebenbei, die 1000 Zeilen sind deutlich überschritten.


    Viel Spaß damit.


    jsffm

    Dateien

    • to_h264.gz

      (6,89 kB, 90 Mal heruntergeladen, zuletzt: )


    vdr-User-# 755 to_h264 chk_r

  • Code
    1. ffmpeg version N-54271-g7f866c1


    Das sieht nach einer git-Version aus, verwende lieber eine stabile Version. Am Besten läuft bei mir 1.0.7

    Code
    1. Input #0, mpegts, from '00001.ts':
    2. Duration: 00:20:07.67, start: 39166.655644, bitrate: 13888 kb/s
    3. Program 132
    4. Stream #0:0[0x17de]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 50 fps, 50 tbr, 90k tbn, 100 tbc
    5. Stream #0:1[0x17e8](deu): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 256 kb/s
    6. Stream #0:2[0x17e9](mis): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 192 kb/s
    7. Stream #0:3[0x17eb](mul): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 192 kb/s
    8. Stream #0:4[0x17ea](deu): Audio: ac3 ([6][0][0][0] / 0x0006), 48000 Hz, stereo, fltp, 448 kb/s
    9. Stream #0:5[0x17f3](deu): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006) (hearing impaired)


    Das ist eine HD-Aufnahme, die ist schon in H264, die kann mit dem Script nicht komprimiert werden, der ist nur für SD-Aufnahmen in Mpeg2 gedacht.


    Hi,


    okay. Jetzt mit ffmpeg 1.07 und einer mp2 Aufnahme. Keinerlei Besserung.
    Irgend eine Idee?


    Gruß
    Alex

    Dateien

    • logfile.gz

      (1,26 kB, 62 Mal heruntergeladen, zuletzt: )

    Server: CPU J1900 | 1x CineS2 | Debian Stretch | VDR 2.4.0
    Client: 2x Himbeere mit vdr

  • Sieht eigentlich gut aus, sollte ok ein. Liegt wohl an vdr-sxfe, kommt evtl. nicht mit aac zurecht, probiere es doch mal mit mp2=copy.
    Kannst Du den 4 Minuten Schnipsel mal zu siggi hochladen?


    vdr-User-# 755 to_h264 chk_r

  • Sieht eigentlich gut aus, sollte ok ein. Liegt wohl an vdr-sxfe, kommt evtl. nicht mit aac zurecht, probiere es doch mal mit mp2=copy.
    Kannst Du den 4 Minuten Schnipsel mal zu siggi hochladen?


    Hier der Testschnipsel. Läuft der bei Dir ohne Bildfehler? Ton ist mp2.


    DL

  • Läuft bei mir wunderbar.


    Da ich den Fehler nicht nachvollziehen kann, kann ich auch keine Lösung anbieten. Wenn Dich das Thema interessiert, kannst Du hier: http://ffmpeg.org/trac/ffmpeg/wiki/x264EncodingGuide mal nachlesen und den Film mit mediainfo analysieren und mal mit funktionierenden vergleichen.


    vdr-User-# 755 to_h264 chk_r

  • Hallo,


    mal wieder eine neue Version


    Code
    1. mux=ffmpeg


    Ich habe es endlich geschafft, die demux-Ausgabe von projectx mit ffmpeg direkt zu verarbeiten, damit entfällt der Schritt muxen mit tsmuxer.


    Code
    1. join=tsmuxer


    Alternative zu cat bei TS, hierbei ist unbedingt auf A/V-Synchronität zu achten. Ich ziehe cat weiterhin vor, tsmuxer führt aber an den Schnittstellen gewisse Reperaturen durch, die von Vorteil sein können, aber, wie gesagt, zu Synchron-Problemen führen können.



    Die erste Anzeige der Einstellungen habe ich zu einer Steuerung erweitert. Folgende Kommandos sind möglich:


    Code
    1. a1 aac_br_select=1 (96,128,192)
    2. a2 aac_br_select=2 (72,96,128)
    3. p join=projectx
    4. c join=cat
    5. f join=ffmpeg
    6. t join=tsmuxer
    7. n join=no


    Die Befehle zur Steuerung haben sich geändert, das ermöglichte die Struktur innerhalb des Scripts zu verbessern.



    Viel Spaß mit der neuen Version!


    jsffm

    Dateien

    • to_h264.gz

      (8,57 kB, 85 Mal heruntergeladen, zuletzt: )


    vdr-User-# 755 to_h264 chk_r

  • Nur mal so zur Info:


    Ich teste gerade libav statt ffmpeg. Der script erkennt autom. was installiert ist.
    Dann eine andere concat-Funktion, die auch mit ffmpeg 1.0.x funktioniert.


    Have fun,


    jsffm


    vdr-User-# 755 to_h264 chk_r

  • Wie angekündigt, eine neue Version, neu im Wesentlichen Unterstützung von libav und alternative concat-Funktion, die mit avconv und ffmpeg >= 1.0 funktioniert.


    Menü:


    Hilfe dazu:

    Code
    1. ?
    2. a audio_auswahl
    3. a1,a2 aac_br_select
    4. c cat
    5. f ffmpeg
    6. m mkv
    7. n no
    8. o concat
    9. p projectx
    10. t tsmuxer


    Dateien

    • to_h264.gz

      (9,35 kB, 89 Mal heruntergeladen, zuletzt: )


    vdr-User-# 755 to_h264 chk_r

  • Projektseite im Wiki: http://www.vdr-wiki.de/wiki/index.php/To_h264


    (Auch um zu zeigen, dass der Wiki noch einen Sinn hat)


    vdr-User-# 755 to_h264 chk_r

  • Hi,


    von Anfang an war bei mir der Wunsch, das Ganze mehr zu automatisieren bzw. im Batch laufen zu lassen, also die zu wandelnden Aufhahmen vorzumerken und dann abzuarbeiten.


    Das habe ich jetzt mal in Angriff genommen. Vormerken geht über das Anlegen einer Datei im jeweiligen Verzeichnis, das kann von Hand, per script oder über reccmds.conf gehen. In der Datei können beliebige Schalter wie z.B. join=projectx stehen, die dann für die jeweilige Aufnahme berücksichtigt werden. Duch die Nutzung des Filesystems funktioniert das auch rechnerübergreifend, also Wandlung von einem oder mehreren kräftigeren Server.


    Es wird auf dem jeweiligen Rechner oder Server ein script gestartet, der hat eine Konfigurationsdatei mit den Pfaden, die überwacht werden sollen.


    Demnächst in diesem Theater :D


    vdr-User-# 755 to_h264 chk_r

  • Cool genau das suche ich! Ich erwarte mit Spannung deine Lösung


    Läuft eigentlich recht gut bei mir, im Wesentlichen fehlt noch die Beschreibung


    vdr-User-# 755 to_h264 chk_r