VDR HD Aufnahmen weiterverarbeiten

  • faup


    die Umwandlung der Planet Erde aufnahmen scheitert an der enthaltenen mp3 Tonspur. Hast Du Dein Script schon angepasst?


    Code
    check : /usr/bin/mpeg_ps_info version 1.5.0.1
    check : /tmp/test.vdr: duration 0.00 seconds
    check :   Video streams:
    check :    stream 0: H.264 Main@4 1280x720
    check :  Audio streams:
    check :    stream 0: MP3 2 channels 48000 sample rate 192000 bitrate
    check :    stream 1: AC3 3 channels 48000 sample rate 256000 bitrate
  • Hi!


    Zitat

    Original von faup
    Ich arbeite zu hause mit :


    mkvmerge v2.1.0 ('Another Place To Fall') built on Mar 10 2008 19:55:10


    Habe jetzt mit v2.2.0 ('Turn It On Again') getestet, aber da kommt leider der gleiche Fehler.


    Gruß,
    Brougs78

    - -- --- ================================================================ --- -- -
    Antec Fusion, Intel E5200, Asus P5N7A-VM (VDPAU), DD CineS2 v6 + DD DuoFlex CI // yavdr-0.6.1
    - -- --- ================================================================ --- -- -

  • Hallo,


    das Problem mit dem Timecode hab ich auch und folgende Lösung:


    im Skript die Zeilen


    Code
    unlink "${tmp_dir}video.tc" ;
    unlink "${tmp_dir}audio.tc" ;
    unlink "${tmp_dir}audio1.tc" ;


    auscommentieren, damit die Timecodes nicht gleich wieder gelöscht werden.
    Eine audio.tc sieht bei mir z.B. so aus:


    Code
    # timecode format v2
    9
    0
    41
    73
    105
    137
    ...


    Die Werte müssen fürs timecode format v2 ja aufsteigend sortiert sein. Bei meinen Tests lag der Fehler immer nur beim ersten oder zweiten Frame. Ich hab den zu großen Wert einfach einsortiert und die mkv-Datei per Hand erstellt. Allerdings bin ich noch am grübeln, ob das so richtig ist. Aber eigentlich dürfte es ja an der Synchronität nichts ändern.



    Grüße,
    GoranAgar

  • @ all,


    Ich baue heut abend mal einen Sortieralgo rein und veröffentliche die Version dann hier.


    Leider hab ich zuweilen bei größeren HD's ( > 10 Gbyte ) das Problem, das mkvmerge rummeckert, die Anzahl der Videoframes stimmt nicht mit denen in der Timecodedatei überein.


    Kann das jemand bestätigen ?


    Mp3 ( oder besser mp2 ) Variante folgt später, da muß ich den ganzen Bereich Erkennung der vorhanden Tonspuren, demux und remux Order erstmal entmisten und neu schreiben.


    Grüße vom Alex

    Wer Rechtschreibfehler findet, darf sie behalten


    Meine Konfiguration :


    Ion 2, 2 x S2 3600, 4 Gig Ram, OS : Kubuntu 12.04 LTS, Kernel 3.2.0-40-generic , x86_64, vdr.2.0.1 ( yavdr-testing ) , vdr-xine 0.9.4 ( yavdr-testing ) , xine-lib 1.2 ( yavdr-testing )

  • Das Problem das faup hat habe ich auch. Dabei müssen es bei mir garkeine 10 GB sein. Sobalt es über die Gränze einer vdr Datei geht wird auc bei mir dieser Fehler gemeldet und mkv stürzt dann ab. Desweiteren werden nicht immer alle Audio Spuren erkannt.

  • Tach team,


    wie 2 beiträge weiter oben versprochen eine V2 des Scripts.
    Damit man nicht alle Beiträge durchforschen muß, nochmal der Link zu ersten Variante mit dran :


    dl - veraltete Variante HDvdrpes_to_mkv.pl
    dl - aktuelle Variante : HDvdrpes_to_mkv_V2.pl


    Aufruf :

    Code
    ./HDvdrpes_to_mkv_V2.pl /video/ASTRA_HD_Demokanal_HDTV_ist_einfach_brillant/2008-03-18.18.19.50.99.rec/


    Ich benutze :

    Code
    mpeg_ps_info version 1.5.0.1
    mkvmerge v2.1.0 ('Another Place To Fall') built on Mar 10 2008 19:55:10


    Neu in V2 :
    - Sortierung der Timecode Dateien numerisch
    - Freier Festplattenplatz wird ermittelt, Abruch wenn nicht 2 x VdrFile Platz frei ist
    - Verschiebeverzeichnis nach Abschluß des Remuxen kann angegeben werden
    - Wenn 2 AC3 Tonspuren vorhanden und 1. nur 3-kanalig , 2. hingegen 6-kanalig, wird die 6kanal als 1. Tonspur gemuxt, die 3kanal als 2. zweite


    Offen :
    - mp2 / mp3 Tonspuren ermittlen und remuxen / muxen
    - mkv verweigert zeitweise, wenn Framezahl des vdr Files nicht mit der vorher ermittelten Timecodespur übereinstimmt ( wohl eine Unverträglichkeit mpeg4ip <-> mkvmerge )


    Leider ist die Entwicklung von mpeg4ip eingestellt, ich benütze hier die Variante 1.5.0.1, die 1.6 ist auf der mpeg4ip Seite als buggy markiert worden.


    Bitte mal testen, es wird .... ( werden )


    Grüße vom Alex

    Wer Rechtschreibfehler findet, darf sie behalten


    Meine Konfiguration :


    Ion 2, 2 x S2 3600, 4 Gig Ram, OS : Kubuntu 12.04 LTS, Kernel 3.2.0-40-generic , x86_64, vdr.2.0.1 ( yavdr-testing ) , vdr-xine 0.9.4 ( yavdr-testing ) , xine-lib 1.2 ( yavdr-testing )

  • Hallo,


    ich hab mal aufbauend auf faups Skript eins geschrieben, welches die vorhandenen Audio- und Videospuren erkennt und extrahiert. Es erkennt allerdings nur vorher definierte Typen. Leider bin ich in den unendlichen Weiten der mpeg4ip-Quellen noch nicht fündig geworden, was alles erkannt wird. Deshalb also nur Typen, die ich testen konnte.



    Bezüglich mpeg4ip: nur der tarball der Version 1.6.1ist defekt, man kann sie aber auch aus dem CVS holen:
    cvs -d:pserver:anonymous@mpeg4ip.cvs.sourceforge.net:/cvsroot/mpeg4ip login
    cvs -z3 -d:pserver:anonymous@mpeg4ip.cvs.sourceforge.net:/cvsroot/mpeg4ip co -P mpeg4ip


    Allerdings hat mich die Installation einige Nerven gekostet. Hier mal der Weg:
    - wenn auf dem System faac mit mp4v2 läuft muß man es neu kompilieren mit --disable-mp4v2
    - in den Dateien mpeg4ip/configure.in und mpeg4ip/lib/SDLAudio/configure.in nach der Zeile AM_PROG_LIBTOOL die Zeile AM_PROG_AS einfügen
    - wer den nasm in der Version 2 benutzt muß in configure.in die Variable BILLSNASM_arg suchen und -r durch -v ersetzen
    - Aufruf von cvs_bootstrap durch 'bash cvs_bootstrap', nicht durch './cvs_bootstrap'
    mit den Optionen --disable-server --disable-player
    - und dann 'make' und hoffen ;)


    getestet unter Ubuntu 7.10



    Grüße,
    GoranAgar



    P.S.: Wieso ist unter dem Code so ein großer Leeraum? Mach ich da irgendwas falsch?

  • @ faup


    siehst du da auch eine möglichkeit die marks.vdr zu generieren. Mein vdr steht auf dem Dachboden ohne xine da kann ich keine Schnittmarken setzen.
    Wenn ich sie von Hand setze gehts mal gut und mal auch nicht.
    Aber die fertigen mkv's laufen dann synchron auf meinem popcorn our


    Klasse Arbeit !!


    Gruss Alberte

  • Zitat

    Original von alberte
    @ faup


    siehst du da auch eine möglichkeit die marks.vdr zu generieren.


    Hallo alberte,


    vielleicht kommst du hier weiter :


    marks.vdr nachträglich erzeugen
    genmarks


    Gerade das Script von tom66 sieht da beim Überfliegen vielversprechend für dein Problem aus :


    http://www.vdr-portal.de/board…ent.php?attachmentid=9091


    Grüße vom Alex

    Wer Rechtschreibfehler findet, darf sie behalten


    Meine Konfiguration :


    Ion 2, 2 x S2 3600, 4 Gig Ram, OS : Kubuntu 12.04 LTS, Kernel 3.2.0-40-generic , x86_64, vdr.2.0.1 ( yavdr-testing ) , vdr-xine 0.9.4 ( yavdr-testing ) , xine-lib 1.2 ( yavdr-testing )

  • Die genmarks habe ich auch gefunden aber mit den generierten marks kann dein script nicht viel anfangen


    anbei infos zu den datein
    einzelne vdr's


    mpeg_ps_info version 1.6
    ./001.vdr: duration 0.00 seconds
    Video streams:
    stream 0: Mpeg-1 0x0
    Audio streams:
    stream 0: AC3, 6 channels 48000 sample rate 448000 bitrate


    mpeg_ps_info version 1.6
    ./002.vdr: duration 0.00 seconds
    Video streams:
    stream 0: H.264 Unknown Profile 0@unknown level 0 0x0
    Audio streams:
    stream 0: AC3, 6 channels 48000 sample rate 448000 bitrate
    stream 1: AC3, 3 channels 48000 sample rate 448000 bitrate



    Wenn ich von Hand die erste mark mit 00:00:00.01 eingebe läuft das script durch
    /usr/local/bin/mpeg_ps_info version 1.6
    /video0/The_Cave/2008-04-03.21.49.99.99.rec/001.vdr: duration 0.00 seconds
    Video streams:
    stream 0: Mpeg-1 0x0
    Audio streams:
    stream 0: AC3, 6 channels 48000 sample rate 448000 bitrate
    °°° /video0/The_Cave/2008-04-03.21.49.99.99.rec/001.vdr enthält keinen H264 Strom ... exit
    Please use Version 1.5.0.1 of mpeg4ip , later Version is marked broken by author of mpeg4ip, just test it...
    You van download the source tar of 1.5.0.1 Version from :
    http://sourceforge.net/project/downloading.php?group_id=18676&use_mirror=kent&filename=mpeg4ip-1.5.0.1.tar.gz&17340763
    1 1 47807
    1 2 1656847
    2 1 0
    2 2 1993132141
    3 1 0
    3 2 1993400447
    4 1 0
    4 2 1994298229
    5 1 0
    5 2 1992804037
    6 1 0
    6 2 370455683
    ° schreibe einzelnen vdr File nach Schnittvorgaben
    file 1 $lesevorgaenge 1 $lvshift 1
    seeking : 47807
    endpos : 1656847
    file 2 $lesevorgaenge 1 $lvshift 1
    seeking : 0
    ........



    Ausgabe von genmarks
    0:00:00.01
    0:00:02.16
    0:00:04.14
    0:22:16.05
    0:22:18.01
    0:48:29.02
    0:48:31.00
    1:10:38.14
    1:10:40.12
    1:32:43.10
    1:32:45.08
    1:37:21.03


    Als startmarke nehme ich dann die 0:00:04.14


    folgendes ergebnis


    HD2.pl /video0/The_Cave/2008-04-03.21.49.99.99.rec/


    ° transform Vdr h264 HDTV recordings to Matroska mkv, without prior cutting needet and compile in mkv timestamps
    ° written by Alexander Richter alexanderrichter ät gmx.net
    ° "reading of multiple Vdr-Files and write to one single File" is based on marks2bytepos.pl --> Thanks alot
    ° VERSION 03.04.2008


    ° 0:00:04.14 offset 704208 Vdr_number 2
    ° 1:37:21.03 offset 370455683 Vdr_number 6
    /usr/local/bin/mpeg_ps_info version 1.6
    /video0/The_Cave/2008-04-03.21.49.99.99.rec/001.vdr: duration 0.00 seconds
    Video streams:
    stream 0: Mpeg-1 0x0
    Audio streams:
    stream 0: AC3, 6 channels 48000 sample rate 448000 bitrate
    °°° /video0/The_Cave/2008-04-03.21.49.99.99.rec/001.vdr enthält keinen H264 Strom ... exit
    Please use Version 1.5.0.1 of mpeg4ip , later Version is marked broken by author of mpeg4ip, just test it...
    You van download the source tar of 1.5.0.1 Version from :
    http://sourceforge.net/project/downloading.php?group_id=18676&use_mirror=kent&filename=mpeg4ip-1.5.0.1.tar.gz&17340763
    2 1 704208
    6 1 370455683
    ° schreibe einzelnen vdr File nach Schnittvorgaben
    Can't read file /media/convert/tmp/test.vdr as program stream
    .........
    Das script findet den anfang in der 002.vdr und das ende in der 006.vdr aber merged die dateien nicht mehr alle.


    hast du eine Vorstellung voran das liegen könnte ?


    Gruss Alberte



    Denkfehler nur die ersten beiden marken entfernt dann merged er auch richtig


    Gruss Alberte

  • Wird beim umwandeln auch geprüft ob es Fehler in der VDR Datei gibt?


    Ich bin nämlich immernoch auf der Suche nach einer Möglichkeit um zu testen ob meine Aufnahmen fehlerfrei gelaufen sind, ohne das ich diese komplett durchgucken muss.

  • Hallo,


    faup:
    Mir ist aufgefallen, daß jede Audio-/Videospur einzeln ins mkv gemuxt wird. Das müßte doch aber auch auf einmal gehen:


    Code
    mkvmerge -o test.mkv --timecodes 0:video.tc test.264 --timecodes 0:audio.tc test.ac3


    @all:
    Da mein Rechner leider zu langsam für die HD-Wiedergabe ist, möchte ich das erzeugte mkv transcodieren. Leider ist das Resultat dann aber asynchron und sehr holprig. Meine Frage ist jetzt, ob das am erzeugten mkv liegt und ob die timecodes überhaupt eine Wirkung haben, oder vielleicht daran, daß Anixe bzw. Astra interlaced senden (hab kein anderes Material zum testen).



    Grüße
    GoranAgar

  • Hi,


    also das mit dem alle-auf-einmal muxen funzt wunderbar...


    ich hab mich mal mit mpeg4ip auseinandergesetzt und nen patch für die stream-erkennungs-probleme gemacht
    (sollte jetzt gehen...ansonsten einfach noch weiter erhöhen... da haben die mpeg4ip entwickler nicht wirklich mitgedacht...)


    außerdem hat mich geärgert das der mpeg4ip demuxer sequentiell arbeitet --> d.h. er liest das inputfile für jeden zu extrahierenden stream von vorne --> dauert etwas
    dafür hab ich ne quick-and-dirty extension geschrieben: Simultaneous Stream Extraction Mod (SSEM) damit werden ALLE gefundenen audiostreams gleichzeitig demuxt incl. der timings...
    die ausgabe-dateinamen sind dann video wie gehabt und audio: xyz<stream-nr>.<format>
    beispiel film mit 2 tonspuren:
    test.264
    test.264.sync (ist gleich in format v2)
    test01.ac3
    test01.ac3.sync
    test02.ac3
    test02.ac3.sync
    usw.


    bin grad am perl script an der cut-engine (wollte das neu schreiben)...aber da sich hier schon was tut werd ich mal damit warten ;)


    ich wollte auch noch eine progressanzeige beim demuxer einbauen aber die läuft nur bis 25% danach wird nix mehr ausgegeben - die dateien werden aber vollständig gedemuxed...


    um SSEM zu verwenden sind nen paar änderungen am script nötig --> ich häng mal meine version mit an (hat allerdings die alte cut-engine) :(
    (das kommt davon wenn man hier ne weile nicht liest ;) )


    GoranAgar:
    1 - zu den stream-typen: so weit ich sehe hast du alle drin
    2 womit versuchst du das mkv file zu transcodieren? mencoder oder mit was anderem?


    Maniac: ich tendiere dazu zu sagen: eher nicht... (hab auch nen paar filme wo der psextractor einfach mittendrin ohne fehler abbricht und das resultat vollkommen ok ist bis auf die länge halt - bin aber noch nicht zur fehlersuche gekommen)


    NACHTRAG:
    die patches beziehen sich auf die cvs-version von mpeg4ip... müssten aber auch mit älteren versionen funzen
    meine "Version3" ist sicherlich verwirrend... werd' mal schauen ob ich das mal schnell zusammenführen kann mit der V2 von hier...
    wenn das perl-script mit mpeg4ip 1.5xx nich läuft liegt vielleicht am parsen der mpeg_ps_info ausgabe dort ist ein komma mit drin bei der version 1.6.1 --> stream0: AC3, ...

  • Hallo,


    CBArts
    Zum transcodieren benutze ich den mencoder. Ich muß aber mal noch ein paar Alternativen probieren.


    Um die vdrs zu schneiden hab ich mal meine Version rangehängt, die im Originalskript hat bei mir nicht immer funktioniert. Nicht vergessen, die Pfade anzupassen. Gebraucht wird noch die marks2bytepos.pl hier aus dem Forum, ich habe sie mal mit reingepackt.


    Daß mpeg4ip die Streams manchmal nicht richtig erkennt lieg meiner Meinung nach an den Schnitten, da die nur eher zufällig an I- bzw. IDR-Frames stattfinden und manchmal vielleicht nur ein "angefangener" Frame kopiert wird. In der index.vdr sollen ja die Frame-Arten mit gespeichert sein, ich weiß nur nicht ob das auch bei H.264 der Fall ist. Man müßte halt rausfinden welcher I-Frame der Zeitmarke am nächsten liegt, und auch rausfinden, wo die dazugehörigen Audioframes liegen. Dann könnte man an den richtigen Stellen schneiden und die Streams wären in Ordnung -- was wahrscheinlich auch eine Weiterverarbeitung, z.B. transkodieren, erleichtern würde.


    Soweit meine Gedanken dazu. Leicht gesagt, aber davon wie man das umsetzen könnte hab ich aber im Moment noch gar keinen Plan.



    Grüße
    GoranAgar

  • GoranAgar:


    ich denke schon das an i-frames geschitten wird - müsste man sich den cvideorepacker vom vdr mal ansehen - die audio erkennungsprobleme liegen definitiv in der mpeg2 library von mpeg4ip ... da wird einfach die suche zu früh abgebrochen (max suchlänge 2* (audio1 und video differenz)) --> habe seit dem fix keinen film mehr gehabt wo die stream-erkennung nicht funktionierte =)


    muss mal nen enocde test machen (der letzte ist schon ne weile her - da war mir der sync noch egal (war froh überhaupt nen bild zu haben ;) )


    ...also die mkv-files sind jedenfalls 100% sync (hab ich an nem schnellen rechner mit VLC unter windows getestet)


    NACHTRAG:
    angepasstes script v4 ist fertig... fehlt noch die korrektur für die timecode reihenfolge (hab ich erst mal rausgenommen)


    nachtrag2:
    version 4b: paar kleine schönheitsänderungen...

  • Ok, ich vermute jetzt mal, daß die Schnittfunktion des VDR die Schnittmarken nur an I-Frames (bzw. Endmarken auch an P-Frames) setzt. Da ich die Marken aber per Hand setzen muß, ist das dann bei mir wohl eher Zufall. Daraus wie das Skript die Zeitmarken in Bytepositionen umwandelt kann ich nämlich nicht erkennen, daß da nach Frametypen unterschieden wird.


    Und noch danke für die mpeg4ip-Modifikation ;)

  • Tach Team,


    Ich werde die nächsten Tage mal das die gepatchte Variante mpeg4ip bei mir unter Gentoo mit einem ebuild zusammenbauen und schauen, wie es funktioniert, bin noch nicht dazugekommen...


    Sehr schön, die Patches von CBArts für mpeg4ip und die copy von GoranAgar :)


    Den Sortieralgo Für die Timecodes würde ich die Tage bereinigen.

    Code
    ... foreach ( sort {$a <=>$b} @unsort_video ) {	print VIDEO "$_\n" ; } # unsortierte Liste der Timcodes Video sortiert ausgeben...



    Mein Code zum Umsetzen Vdr-Files nach Cutliste zu einem VDr File ist ziemlich Read-Only, sollte ich da nochmal ran ?


    Nächtliche Grüße vom Alex

    Wer Rechtschreibfehler findet, darf sie behalten


    Meine Konfiguration :


    Ion 2, 2 x S2 3600, 4 Gig Ram, OS : Kubuntu 12.04 LTS, Kernel 3.2.0-40-generic , x86_64, vdr.2.0.1 ( yavdr-testing ) , vdr-xine 0.9.4 ( yavdr-testing ) , xine-lib 1.2 ( yavdr-testing )

    2 Mal editiert, zuletzt von faup ()

  • Hi,


    vielen Dank für die Arbeit! Hier mal ein Erfolgsbericht, vielleicht hilfts ja jemandem...


    Ich benutze Debian Etch und habe mpeg4ip-1.5.0.1.tar.gz mit den beiden Patches von CBArts ohne Probleme kompiliert (./bootstrap && make && make install). Das mkvtoolinx, was bei Debian Etch dabei ist hat keine H.264-Unterstützung. Deshalb hab ich mkvtoolnix 2.2.0 installiert (siehe hier).
    Dann mit genmarks-0.2.sh und iframe.pl von GoranAgar eine marks.vdr erzeugen und HDvdrpes_to_mkv_V4.pl drauf loslassen.


    Die mkv-Datei kann ich dann problemlos mit Windows abspielen :)


    Danke,
    Alex

    VDR 1.6.0 unter Debian Sid, Kernel 2.6.24-1, Kernel-Treiber
    TT FF DVB-C Premium, TT Budget C-1500, Nova-T PCI und Nova-T USB2, Infrarot-Sender

  • Tach Team,


    Ich habe nun die gepatchte Variante mpeg4ip von CBArts am laufen, wunderbar.


    Anbei gibts mal meinen ebuild für gentoo incl. der Patches ( hier für Version 1.5.0.1 -> 1.5.0.1-r5.ebuild )
    gentoo_overlay_mpegip_patched_SSEM 20 KByte


    - Overlay einrichten , z.B. unter /usr/local/overlay/
    - Eintrag in die /etc/make.conf :

    Code
    PORTDIR_OVERLAY="$PORTDIR_OVERLAY /usr/local/overlay/"


    - im Overlay ebuild einrichten mit :
    -- $ ebuild mein_ebuild.ebuild digest
    -- $ ebuild mein_ebuild.ebuild test
    -- $ ebuild mein_ebuild.ebuild install
    -- $ ebuild mein_ebuild.ebuild merge


    Ich habe weiterhin das Script HDvdrpes_to_mkv_V4.pl etwas erweitert, hier als V4c :


    - Iframes Korrektur von GoranAgar eingebaut
    - Abfrage, ob gepatchtes mpeg_ps_extract
    - verschieben des fertigen Files in ein anders Dir zum Schluß wieder drinn
    - Audiospurenerkennung für Maintitel ( Komma - Problem ) gelößt


    HDvdrpes_to_mkv_V4c.pl


    Bitte mal testen,


    Grüße vom Alex

    Wer Rechtschreibfehler findet, darf sie behalten


    Meine Konfiguration :


    Ion 2, 2 x S2 3600, 4 Gig Ram, OS : Kubuntu 12.04 LTS, Kernel 3.2.0-40-generic , x86_64, vdr.2.0.1 ( yavdr-testing ) , vdr-xine 0.9.4 ( yavdr-testing ) , xine-lib 1.2 ( yavdr-testing )

Jetzt mitmachen!

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