Beiträge von Bungholio

    Hallo!

    Ich möchte meine DVB-T Aufnahmen von heimischen Fernsehsendern (PAL 25fps, zum Teil interlaced) umwandeln, und zwar so, dass ich bei Bedarf - ohne neuerliches Kodieren - mit einem Blu-Ray-Authoring-Programm eine Video-Blu-Ray oder eine "Mini-Blu-Ray" (also eine DVD oder CD mit Video-Blu-Ray-Datenstruktur; P.S.: Ist das dasselbe wie eine AVCHD?) aus den erzeugten Dateien machen kann (damit spielen z. B. Square Pixel und alles was damit zu tun hat, z. B. Seitenverhältnisangaben in "Square-Pixel-language", hier keine Rolle). Habe mich nach längerem Überlegen aus verschiedenen Gründen entschlossen, das so zu machen; mit einer Grundsatzdiskussion ist mir hier nicht geholfen.

    Da ich Fehler von Anfang an vermeiden will, die die Qualität verschlechtern, oder das Ergebnis gar inkompatibel machen (ich habe noch keinen Blu-Ray-Player und kann daher bei mir selbst kein Ergebnis testen; außerdem dauert einen Film umzuwandeln bei meinem langsamen Computer immerhin einen ganzen Tag; und die Originaldateien will ich dann ja auch löschen), bin ich für alle Verbesserungsvorschläge für die folgenden Skripts dankbar.

    Die generelle Vorgangsweise ist:
    - MP2-Datei von DVB-T (manchmal auch von DVD) mit DGIndex analysieren und gewünschte Audiospur demuxen
    - via Avisynth (diverses Nachbearbeiten) das Audio mit SoundOut zu AC3-Datei
    - via Avisynth (diverses Nachbearbeiten) das Video mit x264 zu H264
    - mit MP4Box das H264 und AC3 zu MP4-Datei muxen

    Hier das Avisynth-Skript:
    ------------------------

    # Input- und Output-Dateien:
    videoinput="C:\m\v\testvideo\testvideo.d2v"
    audioinput="C:\m\v\testvideo\testvideo Tc0 L2 2ch 48 160 DELAY -523ms.mp2"
    audiodelay=-0.523
    audiooutput="C:\m\v\testvideo\testvideo.ac3"

    # Bildrand:
    ##########
    Anmerkungen (nicht Teil des Skripts):

    Das Testvideo ist ein 16:9-Film mit schwarzen Balken oben und unten, d. h. ohne Balken wäre das Seitenverhältnis 2.21:1. Da die Video-Disk-Formate aber sehr unflexibel sind, d. h. vorgeschriebene Größen haben (hier 720x576), und vermutlich auch Seitenverhältnisse, muss ich den Rand (bei Filmen meist 76 Punkte oben und unten) beibehalten. Ich nehme an, es ist sinnvoll, den Rand wegzuschneiden und dann wieder neu anzufügen: durch Nachbearbeitung hervorgerufene Farbschwankungen werden vermieden, die Bearbeitung geht schneller da das Bild kleiner ist (?), und ein eventuell im schwarzen Bereich vorhandenes Senderlogo wird man so bequem los.

    Dann ist da noch die Sache mit dem schmalen schwarzen Rand von 8 Punkten links und 10 Punkten rechts: der ist durch die PAL-Fernsehnorm vorgeschrieben, aber nicht mal die Fernsehsender halten das immer ein, schon gar nicht andere Quellen (DVD...). Wenn dieser Rand schon da ist, dann lasse ich ihn natürlich, sonst müsste ich das Video vergrössern, was nicht sinnvoll ist. Aber wenn der Rand fehlt: Gibt es dann Probleme, bzw. stört sich moderne Hardware (Abspielgeräte, Fernseher) überhaupt daran? Außerdem: auch moderne Geräte scheinen einen kleinen Rand des Bildes zu "schlucken", insofern ginge ohne den Rand ein bisschen was vom Bild verloren. Andererseits müsste das Bild für die Erzeugung der Ränder ein bisschen verkleinert werden, wodurch ein bisschen Detail verloren geht. Und dann gäbs noch die "harte" Methode: einfach den für den Rand benötigten Teil vom Bild wegschneiden (machen die Sender auch immer wieder mal, merkt man dann daran, dass der obere und untere Rand geringfügig anders ist), aber das wär dann ein Nullsummenspiel, da kann ich das Bild gleich lassen und die Randbeschichtung vom Fernseher verdeckt den Bereich so und so. Nehmen wir mal an, ich hätte keinen Rand und will einen erzeugen, kann ich dann einfach so rechnen:
    702/720=0,975 Verhältnis neue zu alte Breite
    576-2*76=424 alte Höhe (ohne Rand)
    424*0,975=413,4 neue Höhe (ohne Rand)
    576-413,4=162,6 neuer (Höhen-)Rand
    162,6~162 Rundung auf nächstgelegene gerade Zahl, da MPEG-Maße gerade Zahlen sein müssen
    162/2=81 neuer Rand oben und unten
    Oder muss ich da noch das Seitenverhältnis irgendwie berücksichtigen?

    Das mit dem schmalen Rand links und rechts sind zwar nur Peanuts, aber wenn ich mir die Arbeit schon antue, dann will ich's auch wirklich ordentlich machen.
    ##########

    randlinksalt=8
    randobenalt=76
    randrechtsalt=-10
    randuntenalt=-76
    randlinksneu=8
    randobenneu=76
    randrechtsneu=-10
    randuntenneu=76

    # schöner Anfang / schönes Ende:
    anfang=291
    ende=211523
    fadeanfang=25
    fadeende=25

    # Audio laden:
    LoadPlugin("C:\Programme\MeGUI_2356_x86\tools\avisynth_plugin\NicAudio.dll")
    audio1=NicMPG123Source(audioinput)

    # bei DVDs (auf Stereo runtergesampelt und Lautstärke erhöht, da AC3 Tonspuren meist viel leiser als MP2):
    # audio1=NicAC3Source(aifile, 2, 1).amplifydB(15,15)

    # Video laden:
    LoadPlugin("C:\Programme\MeGUI_2356_x86\tools\dgindex\DGDecode.dll")
    LoadPlugin("C:\Programme\MeGUI_2356_x86\tools\avisynth_plugin\ColorMatrix.dll")
    video1=DGDecode_mpeg2source(videoinput,info=3).ColorMatrix(hints=true) .crop(randlinksalt,randobenalt,randrechtsalt,randuntenalt)

    # bei interlaced Video (top field first):
    # LoadPlugin("C:\Programme\AviSynth 2.5\plugins\kerneldeint140.dll")
    # video1=DGDecode_mpeg2source(videoinput,info=3).ColorMatrix(hints=true,interlaced=true) .KernelDeint(order=1,sharp=true).crop(randlinksalt,randobenalt,randrechtsalt,randuntenalt)
    ##########
    Ich habe aber den Eindruck, dass deinterlaced Video schlechter ausschaut als wenn man es interlaced lässt. Scheint mir auch logisch, dass es schöner wirkt, wenn das Gehirn 50 Fields/Frames sieht und selbst zusammensetzt, als wenn es 25 nicht so schöne deinterlaced Frames sieht. Habe irgendwo gelesen, dass MPEG-Video meist top field first hat, und DV bottom first, aber Garantie gibt es da wohl keine, oder? P.S.: Interlaced scheint bei der Videobearbeitung vor allem ein PROBLEM zu sein. Trotzdem ist bei vielen Sendern zumindest der selbst produzierte Teil noch interlaced, und die Video-Disk-Normen verlangen es anscheinend auch. Gottseidank gibt es fake-interlaced. Gibt es eigentlich Gründe, die FÜR die Erstellung von interlaced Video sprechen? Mir fällt da nur ein, dass man sich bei der Hardware die halbe Auflösung spart.
    ##########

    # bei DVDs:
    # video1=DGDecode_mpeg2source(videoinput).ColorMatrix(d2v=videoinput)

    # Nachbearbeitung:
    audioDub(video1,audio1).delayAudio(audiodelay).trim(anfang,ende).fadeIn(fadeanfang) .fadeOut(fadeende).addBorders(rlneu,roneu,rrneu,runeu).limiter()
    ##########
    Brauche ich den limiter, der mir den Farbumfang auf Fernsehnorm zusammenstaucht, unbedingt, oder ist das auch ein heute nicht mehr relevantes Überbleibsel aus vergangenen Zeiten? Und wie setze ich den richtig ein? Falls das Quellvideo schon "limitiert" ist, muss ich es dann zuerst auf "normal" strecken (gibts dazu überhaupt einen Befehl in Avisynth?), dann die - nicht limitierte (?) - Nachbearbeitung machen, und dann alles wieder limitieren?? Oder ist das richtig, wie ich es hier gemacht habe, nämlich zur Sicherheit am Schluss limitiert; oder wird dadurch, falls das Input schon limitiert ist, alles doppelt limitiert???

    Bei der Gelegenheit eine Frage zum Farbmanagement: MP2 von DVB und DVD ist doch YV12, und kommt auch als solches beim Avisynth "wieder raus", solange ich es nicht gezielt ändere (z. B. weil es ein bestimmter Filter brauchen würde; von selber wandeln Filter das nicht um, oder, will nur sicher gehen, dass da nicht unbebsichtigt was durcheinander kommt.

    Hätte der Unterschied PAL-NTSC irgendwelche Auswirkungen auf die Farbe, müsste man da was umwandeln?
    ##########

    # Audio Ausgabe:
    LoadPlugin("C:\Programme\AviSynth 2.5\plugins\SoundOut.dll")
    SoundOut(output="ac3", filename=audiooutput, autoclose=true, iscbr=true, cbrrate=160, bandwidthfilter=true, accuratealloc=true)
    ##########
    Blu-Ray wollen ja (z. B.) AC3 mit CBR (AAC vertragen sie dagegen nicht). Die 160 hab ich hier genommen, weil das MP2 auch 160 hat, wäre also nichts Höheres sinnvoll. Was GENAU bewirken eigentlich die Optionen bandwidthfilter und accuratealloc?
    ##########

    Das DOS-Skript für x264:
    ------------------------

    set toolsdir=C:\Programme\MeGUI_2356_x86\tools
    set bitrate=--bitrate 652
    set name=testvideo
    set docdir=C:\m\v\%name%
    rem: erster VBR-Durchgang:
    start "fenster" /b /low /wait %toolsdir%\x264\x264.exe %bitrate% --preset slow --profile high --tune film --bluray-compat --vbv-maxrate 40000 --vbv-bufsize 30000 --level 4.1 --keyint 250 --slices 4 --trellis 2 --no-mixed-refs --fake-interlaced --pic-struct --colorprim "bt470bg" --transfer "bt470bg" --colormatrix "bt470bg" --fps 25.0 --sar 16:11 --pass 1 -o %docdir%\%name%.h264 %docdir%\%name%1.avs
    rem: hier fehlt noch der zweite Durchgang *schreibfaulbin;-)*
    rem muxen:
    start "fenster" /b /low /wait %toolsdir%\mp4box\mp4box.exe -add %docdir%\%name%.h264 -add %docdir%\%name%.ac3 %docdir%\%name%.mp4 -lang 2="de"
    rem verschiedene Infos auslesen:
    %toolsdir%\mp4box\mp4box.exe -std -info 1 %docdir%\%name%.mp4
    %toolsdir%\mp4box\mp4box.exe -std -info 2 %docdir%\%name%.mp4
    pause

    Anmerkungen:
    -652 hab ich nach mehreren Tests als persönliche minimale Bitrate ermittelt, bei der mir die Kompressionsartefakte noch nicht zu sehr auffallen.
    - Die x264-Einstellungen hab ich von einer Internetseite, laut der ebendiese Einstellungen für Video-Blu-Rays nötig sind.
    - Preset slow scheint mir persönlich gerade das passende Gleichgewicht zwischen Qualität und Geschwindigkeit zu bieten, ich habe aber auch noch trellis 2 genommen, was in bestimmten Szenen eine bemerkbare Verbesserung gebracht hat.
    - Was GENAU macht eigentlich "no-mixed-refs"? Ich glaube, dass man so "schöne" GOPs erhält (was im Falle späterer Bearbeitung nur von Vorteil sein kann), sicher bin ich mir aber nicht.
    - "Fake-interlaced" kann man zur Sicherheit immer hinschreiben, oder kann das in irgendeinem Fall auch Schaden anrichten? Habe nämlich festgestellt, dass manche Sender nicht exakt mit Beginn/Ende eines Films von interlaced auf progressive umschalten bzw. umgekehrt.
    - Bei PAL DVB und DVD Quellvideo nimmt man für colorprim, transfer und colormatrix immer "bt470bg", oder?
    - Für Video-Disks ist das Seitenverhältnis bei "16:9" 16:11 und bei "4:3" 12:11, oder?