miniDV -> .ts bei bester Qualität

  • Hallo Leute,


    ich bin gerade dabei, meine alten miniDV-Kasetten zu sichern und möchte die dann natürlich mit dem VDR ansehen.


    Dazu habe ich einen alten Laptop mit Firewire-Schnittstelle ausgegraben und sichere mittels dvgrab die Kasetten in ein AVI Container. Format ist das "normale" raw DV2 Format, soweit ich weiß :D


    Diese AVI-Dateien wandele ich mit Hilfe eines Skriptes in ein .rec/*ts um, das ffmpeg zum Umwandeln aufruft.


    Ich weiß schon, dass die Qualität von miniDV kein heutiges HD ist, aber es erscheint mir dennoch etwas sehr Klötzchengrafik. :§$%


    Ich benutzer die folgenden Parameter für ffmpeg:

    Code
    ffmpeg  -i $i -acodec mp2 -b:a 15000k -s 720x576 -ab 192k -aspect 4:3 -ar 48000 -loglevel quiet -n $PREFIX/$DEST/00001.ts


    Kommt das mit dem 720x576 hin? Ist ja "PAL". Aber macht der miniDV-Standard mehr Auflösung? Wieviel? Konnte nix finden.


    Danke für Ideen!


    Grüße


    /KNEBB

    Glotze: yaVDR (ASRock Q1900M, 4GB RAM, DD Cine S2 V6.5, ZOTAC GT630 (Rev. 2)
    Server: HP ProLiant MicroServer G8, VMware ESXi 5.5 :P

  • Ao, mittels fftool jetzt mehr herausbekommen, wie die AVI abgelegt werden:

    Code
    [root@ffmpeg 10_]# ffprobe  10_2000.12.22_18-32-16.avi
    ffprobe version 2.6.8 Copyright (c) 2007-2016 the FFmpeg developers
      built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-4)
    Input #0, avi, from '10_2000.12.22_18-32-16.avi':
      Duration: 00:00:59.56, start: 0.000000, bitrate: 29833 kb/s
        Stream #0:0: Video: dvvideo (dvsd / 0x64737664), yuv420p, 720x576 [SAR 16:15 DAR 4:3], 28819 kb/s, 25 fps, 25 tbr, 25 tbn, 25 tbc
        Stream #0:1: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 32000 Hz, 2 channels, s16, 1024 kb/s


    Also kommt die auflösung PAL hin. Besser wird es wohl nicht werden. Was ist mit Audio? Da blicke ich die ganzen Werte nicht so ganz :D


    Das sagt ffprobe bei der Zieldatei:

    Code
    Input #0, mpegts, from '00001.ts':
      Duration: 00:00:59.57, start: 1.429978, bitrate: 886 kb/s
      Program 1
        Metadata:
          service_name    : Service01
          service_provider: FFmpeg
        Stream #0:0[0x100]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv), 720x576 [SAR 16:15 DAR 4:3], max. 104857 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
        Stream #0:1[0x101]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 192 kb/s

    Glotze: yaVDR (ASRock Q1900M, 4GB RAM, DD Cine S2 V6.5, ZOTAC GT630 (Rev. 2)
    Server: HP ProLiant MicroServer G8, VMware ESXi 5.5 :P

  • Um nochmal selbst zu antworten:


    Ich wundere mich halt, die AVIs sind 13GB groß, wohingegen die .ts Dateien gerade mal 521MB groß sind!


    Da ist doch etwas weggefallen, oder? Aber was?

    Glotze: yaVDR (ASRock Q1900M, 4GB RAM, DD Cine S2 V6.5, ZOTAC GT630 (Rev. 2)
    Server: HP ProLiant MicroServer G8, VMware ESXi 5.5 :P

  • Hi knebb,


    spannend ... Ich sehe auf Anhieb nur, dass die Bitrate bei dem dvvideo/dvsd sehr hoch ist (kann es sein, das dies ein unkomprimierter Codedc ist?). Das Audio ist auch raw (ccm Audio) mit 1024kb/s im Original, aber dann 192kb/s in einem komprimierten Verfahren. Das wird sicher schonmal ein bisschen ausmachen.


    Also meine Vermutung: Deine Aufnahme ist komplett roh, und jetzt packst Du es in einen .ts container mit Kompression. Das das Ration so krass ist, da wäre ich aber genauso überrascht.


    ... Auf der anderen Seite, ich war auch baff als ich mal AkteX S10E01 als h.265 auf der Platte hatte und das Ding nur 850MB gross war, aber genauso "gut" aussah wie die HD Aufnahme in h.264 mit 1080p aus den USA. Die war dann 4GB gross... Also wer weiss wo hier "gespart" wurde durch den Algorithmus :)


    VG,
    Alex

  • Der default von 1 Mbps CBR fuer das MPEG2 video encoding bei ffmpeg ist halt nicht sehr hoch. Gerade bei Bewegungen. Einfach mal mit -b:v 8000000 codieren (erinner mich gerade nicht, ob ffmpeg bps oder kbps als parameter will. Einfach ausprobieren). Habe bisher nie versucht, optimale MPEG2 codierungen mit ffmpeg hinzubekommen, weiss also nicht was da die besten VBR parameter sind. Ich wuerde eh empfehlen mit H.264 zu codieren. Eg: -vcodec libx264 -crf 21. H.264 in TS spielt VDR ja auch ab.Ausser halt auf FF oder anderer antiquarischer AusgabeHW.

  • Hi,


    hast Du mal die ffmpeg Aufrufparameter? Bei mir sagt er "Unrecognized option '-vcodec'


    Ja, nehme auch gerne was anderes. Habe aber keine Ahnung, welche Parameter ich dafür brauche....


    /KNEBB

    Glotze: yaVDR (ASRock Q1900M, 4GB RAM, DD Cine S2 V6.5, ZOTAC GT630 (Rev. 2)
    Server: HP ProLiant MicroServer G8, VMware ESXi 5.5 :P

  • Probiere mal -b:v 5M, das sollte bei mpeg2 genügen, oder -b:v 2M bei h264.


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

  • statt -vcodec nimm entweder -c:v mpeg2video oder -c:v libx264


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

  • Hey,


    danke!
    Habe nun folgende Parameter genommen:

    Code
    ffmpeg -threads 8 -i file.avi -c:a mp2 -b:a 192k -c:v libx264 -b:v 2M -s 720x576 -aspect 4:3 -ar 48000 -loglevel quiet -n out/00001.ts


    Funktioniert wunderbar und nur noch ein paar Artefakte, wenn schnelle Bewegungen sind. Auf jeden Fall deutlich besser, als die vorherige Klötzchengrafik.


    Danke nochmals!


    /KNEBB

    Glotze: yaVDR (ASRock Q1900M, 4GB RAM, DD Cine S2 V6.5, ZOTAC GT630 (Rev. 2)
    Server: HP ProLiant MicroServer G8, VMware ESXi 5.5 :P

  • nur noch ein paar Artefakte, wenn schnelle Bewegungen sind


    Dann ist die Bandbreite noch zu gering, probiere mal -b:v 3M.


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

  • Also ich würde bei PAL immer mindesten 4Mbit für Video nehmen. Macht das Endfile nur minimal
    größer, dafür ist die Quali besser


    vdr-box

  • Das kommt auf das Material an, bei ruhigen Szenen sollten 2Mb reichen, bei Sportveranstaltungen können 4Mb knapp sein. Man kann stattdessen auch mit -crf arbeiten, z.B. 21. Das kann man bei Bedarf noch durch -maxrate ergänzen.


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

  • Habe es auf 4M gesetzt. Sollte für meine Zwecke passen. Die Originale behalte ich sowieso!


    Danke nochmals für alle Tipps, die haben echt geholfen- ich kenne mich mit den ganzen Codecs und Bitraten nicht so aus :D

    Glotze: yaVDR (ASRock Q1900M, 4GB RAM, DD Cine S2 V6.5, ZOTAC GT630 (Rev. 2)
    Server: HP ProLiant MicroServer G8, VMware ESXi 5.5 :P

  • Man kann stattdessen auch mit -crf arbeiten, z.B. 21. Das kann man bei Bedarf noch durch -maxrate ergänzen.

    Ich verstehe auch nicht, warum da noch immer so viele mit Bitraten rum wursteln.
    Mit CRF (da gibt es noch andere Abkürzungen für) gibt man die Qualität vor, einmal eingestellt und es passt unabhängig vom Inhalt. Sinnvoll ist etwa der Bereich -crf 20...25 (niedriger ist besser!).
    -maxrate kann man noch auf 10M, 15M oder so setzen, damit die Bitrate bei schnellen Szenen nicht völlig durch die Decke geht.

    Gruss
    SHF


  • Maximale Bitrate muss man eigentlich mit CRF nur setzen, wenn man abspielen auf einem Geraet garantieren will, dass eine bitratenlimitierung hat. Wuesste garnicht, was da die aktuellen Rarten von eg: BD oder so sind.


    Ansonsten ist ja CRF nicht "constant quality", sondern da wird dynamisch an der quality nach unten gedreht wenn die bewegung groesser ist. Weil bei mehr bewegung das Auge ja details weniger gut wahrnimmt. Von daher ist die Gefahr hoher Bitraten bei schnellen Bewegungen nicht so gross wie bei constant quality.

  • Maximale Bitrate muss man eigentlich mit CRF nur setzen, wenn man abspielen auf einem Geraet garantieren will, dass eine bitratenlimitierung hat. Wuesste garnicht, was da die aktuellen Rarten von eg: BD oder so sind.

    Auch wenn man kein Gerät hat, was eine merkbare Bitratenlimitierung hat, ist es nicht ganz verkehrt die maximale Bitrate irgendeinen sinnvollen Wert zu limitieren, der im Normalfall nie erreicht wird. Nur für den Fall der Fälle ...
    Aber wie geschrieben, das ist optional, das kann man machen, muss es aber nicht.

    Gruss
    SHF


  • Und welcher Parameter ist das bei ffmpeg mit h.264? "crf" kennt er nicht...
    [EDIT]
    Habe es herausgefunden. Hat eine Weile gedauert, bis mir klar wurde, dass ich nicht in der man page von ffmpeg suchen muss.


    Hier steht es: H.264 Codeparameter
    Und so habe ich es jetzt:

    Code
    ffmpeg -threads 8 -i $INPUT -c:a mp2 -b:a 192k -c:v libx264 -crf 20 -maxrate 10M -s 720x576 -aspect 4:3 -ar 48000 -loglevel quiet -n $NFS/$1/$PREFIX/$DEST/00001.ts

    Glotze: yaVDR (ASRock Q1900M, 4GB RAM, DD Cine S2 V6.5, ZOTAC GT630 (Rev. 2)
    Server: HP ProLiant MicroServer G8, VMware ESXi 5.5 :P

    Einmal editiert, zuletzt von knebb ()

  • Und so habe ich es jetzt:

    Und jetzt zufriedenstellend?


    Wenn nicht, sollte man über Deinterlacing nachdenken. (Bei dem Alter hätte es mir früher auffallen müssen, dass es sich um ein Interlaced-Format handelt :wand .)
    Zu den neueren, besseren Deinterlacern von ffmpeg kann ich leider nichts sagen. Ich benutze seit einer ganzen Weile Handbrake, weil die damals da besser waren. Handbrake kann aber keine TS-Container erstellen.


    Alternativ könnte man auch interlaced codieren.
    Da gehen aber einige Optimierungen vom Codec nicht, das Video wird für die Qualität also recht gross.

    Code
    -x264encopts tff:...


    Ich hatte es noch mit mencoder probiert und das ist schon eine weile her, mir ffmpeg sollte es aber eigentlich auch gehen. FFmpeg Codecs Documentation


    Größe (s) braucht man normalerweise übrigens nicht angeben, dann wird die Eingangsauflösung verwendet, die sollte ja schon PAL entsprechen.

    Gruss
    SHF


  • Deinterlace:


    Code
    -filter:v yadif


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

  • Ja, das sah bei den schnellen Wechseln tatsächlich wie Interlace aus. Bin aber natürlich auch nicht darauf gekommen, dass das ein Problem sein könnte- geschweige denn, dass man deinterlace starten kann....


    Filter ergänzt, mal sehen, wie es jetzt wird.


    /KNEBB :tup

    Glotze: yaVDR (ASRock Q1900M, 4GB RAM, DD Cine S2 V6.5, ZOTAC GT630 (Rev. 2)
    Server: HP ProLiant MicroServer G8, VMware ESXi 5.5 :P

Jetzt mitmachen!

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