Nach enkodieren mit CCE immer zu dunkel

  • Ich enkodiere mein DVD-Material immer mit Hilfe eines Avisynthscripts im CCE zu MPEG2. Ich nutze dabei die mb1 interlaced DV Matrix. So nun zu mioenem Problem: nach dem Enkodieren ist mein Bild immer etwas zu dunkel. Wie kriege ich es im Avisynthscript einfach aufegehellt bzw. das gamma erhöht oder so? Anbei mal nen nornmales Script von mir. Vielleicht kann mir ja noch jemand Verbesserungsvorschläge dazu machen. Danke

    AviSource("F:\Video\Motorrad\schnitt1.avi")
    DoubleWeave().SelectOdd().SeparateFields()
    LanczosResize(704,280,0,0,720,286).Weave()
    AddBorders(8,8,8,8)
    #Trim(0,77453).FadeOut(150)

  • :welcome:

    1) Und dabei kommt dann eine DVD-konforme Auflösung heraus? Irgendwie hab ich da so Zweifel (v.a. an den 286 Halbzeilen)...

    2) Wo sieht es zu dunkel aus, am PC-Monitor oder am Fernseher? Fernsehbildschirme haben eine andere Gammakurve als Monitore - was auf dem Monitor hell genug wäre, könnte am Fernseher zu hell aussehen. Aber wenn du's versuchen möchtest: Versuch mal den Level-Filter in AviSynth (siehe Forum-Suche oder AviSynth-Dokumentation).

  • Genau das Thema wird hier gerade behandelt:
    http://forum.doom9.org/showthread.php?s=&threadid=78220

    Da geht es aber mehr um das Thema 0-255 und 16-[font=verdana, arial, helvetica]16-235 Luma Ranges, was da anscheinend in den diversen Processing-Steps nicht mehr richtig ist.

    Man muss nur aufpassen, dass es hier eben um die "Rand"-Werte der Luma range geht und viele Noobs denken ihr Bild mit Gamma Anhebung zu fixen. Daher ist es einfach sehr oft der Fall (wie LigH beschrieb), das manchen Usern das Bild zu dunkel erscheint, obwohls im Gammabereich richtig ist.

    PS: Da war der Karl sogar schneller und hat (finde ich) einen noch interessanteren Thread hervor geholt.
    [/font]

  • Na ja, da haben sogar einige "Koryphäen" seitenlang diskutiert, was denn nun richtig ist. Zumindest ist für die Frage von Varg nun doch erst mal einiges an Fakten abzufragen: Wie hat der den Encoder hinsichtlich Randwerten eingestellt, und für welchen Zweck wird das Video encodiert? Im Grunde ist die zweite Frage weniger wichtig, sollten doch auch Software-DVD-Player die Darstellung entsprechend anpassen, wenn sie gut sind (ansonsten halt manuell).

  • Mensch das ich so ein gutes Forum so lange ignoriert hab bzw. nur gelesen hab ;) Erstmal Danke Leute. So nun zum Video: Mache mir manchmal die Scripte mit Fit2Disc und daher kommt es wohl daß ich immer Resize um ne möglichst genaue Aspect-Ratio hinzubekommen. Also Croppen wäre also besser ja? Also ich mache das beruflich also quasi Digitalisierung und son Kram für Firmen und auch Privat. Und mal kurz gesagt: Qualität ist mir das Wichtigste! Also ich koste weder Kosten noch Mühe um immer Höchstqualität hinzubekommen also bin immer für Tips dankbar. Mit Aviscript arbeite ich (wie man wohl sieht) noch nicht so lange, aber früher konnt ich halt noch BottomFieldFirst im CCE einstellen wenn ich mich recht erinner. Liegt meine CCE-Geschwindigkeit (ca. 0,55) also wahrscheinlich am Resizen oder? Croppem würde nicht so runterdrücken oder? (CCE alleine ca. 2-2,5)
    Einstellungen CCE 2.67.00.27: GOP Seq. 3/4; mb1 interlaced DV Matrix;Luminace 16-235; Intra Block DC Precision 10; 3-Pass VBR. So noch Fragen?

  • Zitat


    AviSource("F:\Video\Motorrad\schnitt1.avi")


    Wenn du Avisynth 2.5x verwendest, dann versucht Avisynth dein Video im Farbraum 'YV12' zu öffnen, was für DV-Video aber nicht korrekt ist.
    Je nach installiertem DV-Codec wird dann eine Farbraumkonvertierung durchgeführt, was zu Helligkeitsunterschieden führen kann.

    AviSource("F:\Video\Motorrad\schnitt1.avi",true,"RGB24")
    oder
    AviSource("F:\Video\Motorrad\schnitt1.avi",true,"YUY2")
    wäre besser.

    Welchen DV-Codec hast du installiert und wie und mit welchem Programm hast du dein DV-Video überhaupt von der DV-Kamera auf die Platte kopiert?
    Die beste Methode wäre Let's Edit oder Scenalizer mit Einstellung 'MS-DV'.
    Anschliessend sofort mit dem Canopus DV File Converter auf Canopus umpatchen und mit einem Canopus DV Codec weiterverarbeiten.

  • Zitat von Tsunami


    Wenn du Avisynth 2.5x verwendest, dann versucht Avisynth dein Video im Farbraum 'YV12' zu öffnen, was für DV-Video aber nicht korrekt ist.


    Aber AviSynth weist doch nur den Dekoder an, in YV12 zu dekodieren. Wenn dieser es nicht kann, weil er es nicht beherrscht, wird es auch nicht gemacht.
    Und DV-Video ist doch nicht in YV12, oder ? Folglich sollte ein DV-Dekoder auch nicht YV12 können.

    Gruß
    Arlsair

  • Zitat


    PAL - DV-Video IST YV12. (YUV 4:2:0)

    und zwar interlaced YV12
    also, eines der schlechten Farbformate..

    NTSC - DV ist halbiertes YUY2. (YUV 4:1:1)

    korrekt.


    Zitat


    Aber AviSynth weist doch nur den Dekoder an, in YV12 zu dekodieren.
    Wenn dieser es nicht kann, weil er es nicht beherrscht, wird es auch nicht gemacht.
    Und DV-Video ist doch nicht in YV12, oder ? Folglich sollte ein
    DV-Dekoder auch nicht YV12 können.

    Das Problem ist die Reihenfolge, in der Avisynth die Farbräume abklappert :
    YV12, YUY2, RGB

    PAL DV ist YV12, aber der Canopus-DV-Codec kann kein YV12 liefern.
    Der Canopus-DV-Codec kann aber YUY2 liefern,
    nur leider werden dann der Footroom und der Headroom bei Anzeige im RGB-Farbraum drurch den 'Color Space Converter'
    expandiert.


    -----

    Test mit 601-Video (http://www.vegasforum.de/misc/601/601.zip),
    Canopus-DV-Codec, Avisynth 2.54, VirtualDub 1.5.4


    1.
    AviSource("E:\dvd\601dvsd.avi")

    öffnet als YUV 4:2:2 (YUY2)
    Schrift ist nicht zu sehen


    2.
    AviSource("E:\dvd\601dvsd.avi",false,"YV12")

    Fehlermeldung :
    The decompressor couldn't produce YV12 output


    3.
    AviSource("E:\dvd\601dvsd.avi",false,"YUY2")

    öffnet als YUV 4:2:2 (YUY2)
    Schrift ist im VirtualDub nicht zu sehen.
    Das Problem scheint zu sein, das der Canopus-DV-Codec zwar sehr wohl
    im YUY2-Farbraum auch den Footroom und den Headroom
    liefert, aber da die Anzeige auf einem PC-Monitor nicht im YUV-Farbraum
    funktioniert, sondern nur im RGB-Farbraum, schaltet Windows schlau wie es ist
    eben einen Farbraum-Konvertierer dazwischen, nämlich den 'Color Space Converter',
    der in der \windows\system32\quart.dll enthalten ist.
    Dieser Filter expandiert aber die Luma-Range, so das der Footroom und der Headroom
    nach außen gedrängt werden und deshalb die Schrift verschwindet.
    Daher ist es besser, den Canopus-DV-Codec anzuweisen, direkt RGB zu liefern,
    denn dadurch entfällt der Luma-Expand.
    Zu beachten ist. das der CCE bei YUV-Input die eingestellte Luma-Range nicht beachtet.


    4.
    AviSource("E:\dvd\601dvsd.avi",false,"RGB24")

    öffnet als Uncompressed RGB24
    Schrift ist zu sehen
    Meiner Meinung nach der beste Weg, um ein DV-AVI mit dem Canopus-DV-Codec
    und Avisynth 2.5x zu öffnen.
    Man erhält ein Video im Luminanzbereich 0-255.
    Möchte man sichergehen, das im MPEG-2 die Daten des Footrooms und Headrooms
    zu sehen sind, dann sollte man ein Luminanz-Shrink auf 16-235 durchführen.
    Wenn man diesen Shrink nicht durchführt, dann sieht man die Schrift beim
    Abspielen des MPEG-2 nicht, denn jeder mir bekannte Software-DVD-Player
    und DirectShow Decoder expandiert die Luma-Range.
    Mpeg2Schnitt, toMPEG, MPEGcraft, ParseMPEG können den Footroom und den Headroom anzeigen...


    5.
    AviSource("E:\dvd\601dvsd.avi",false,"RGB24")

    öffnet als Uncompressed RGB32
    Schrift ist zu sehen


    6.
    AviSource("E:\dvd\601dvsd.avi",false,"YUY2")
    ColorYUV(levels="PC->TV")

    öffnet als YUV 4:2:2 (YUY2)
    Schrift ist zu sehen
    Nachteil : erst wird geschrinkt (ColorYUV(levels="PC->TV")), dann wird expandiert ('Color Space Converter').
    Für mich ein Super-GAU und völlich unnötig.

    -----

    Also :

    1.
    Grabben des DV von Kamera in den PC mit Scenalyzer und Einstellung MS-DV.

    2.
    Mit dem Canopus DV File Converter ändern des DV-Typs von MS-DV nach Canopus-DV
    (und natürlich den Canopus-DV-Codec benutzen)

    3.
    Im Procoder den Video-Filter "Shrink Color Space" benutzen
    bzw. im CCE die Luma-Range auf 16-235 einstellen.

  • So hier mal nun 2 Scripte wie ich mir das denken würde. Sagt mal bitte was dazu.

    Das hier is nen überspieltes S-VHS-Video (über SVideoeingang):

    LoadPlugin("D:\Tools\AviSynth 2.54\plugins\MPEG2Dec3.dll")
    AviSource("G:\Zu_machen\Bandemers\Hochzeit\Capture\schnitt-CDV(AVI2).avi"false,"RGB24")
    LanczosResize(720,576,0,0,720,576)
    #Trim(0,97005).FadeOut(150)


    Und hier für ein DV-Video:

    LoadPlugin("D:\Tools\AviSynth 2.54\plugins\MPEG2Dec3.dll")
    AviSource("F:\Video\Motorrad\schnitt1.avi"false,"RGB24")
    DoubleWeave().SelectOdd().SeparateFields()
    LanczosResize(720,576,0,0,720,576)
    #Trim(0,97005).FadeOut(150)

    Und wie croppe ich nun am besten so störende Ränder weg ohne über Resize zu gehen? Geht das überhaupt? (mit AddBorders vielleicht?) Und nehme ich ab jetzt immer RGB24 als Richtwert oder wie? Wie kriege ich den Farbraum des Bandes raus? Is das einheitlich bei z.B. DV oder VHS (analog überspielt)? Ach ja und lohnt es sich die MPEG2Dec3.dll zu nutzen? Wenn ja warum, encodet er dann schneller? Finde es nämlich eigentlich auch schade daß durch Avisynth die Geschwindigkeit so verringert wird (bei mir von 2.5 zu 0.55 im CCE). So Danke schonmal für ausführliche Antworten. ;D Ich seh grad, is SeparateFields() vonnöten wenn ich garnicht Resize? (is doch nur fürs interlaced Resizen gedacht oder) :huh:

  • Zitat


    Das hier is nen überspieltes S-VHS-Video (über SVideoeingang):

    Hast du im RGB24 oder im YUY2-Format aufgenommen?

    Zitat


    LoadPlugin("D:\Tools\AviSynth 2.54\plugins\MPEG2Dec3.dll")
    AviSource("G:\Zu_machen\Bandemers\Hochzeit\Capture\schnitt-CDV(AVI2).avi"false,"RGB24")
    LanczosResize(720,576,0,0,720,576)
    #Trim(0,97005).FadeOut(150)

    1.
    LoadPlugin ist unnötig, wenn du Avisynth 2.5x benutzt, denn diese Versionen laden die Plugins selber.

    2.
    MPEG2DEC3.dll ist sowieso unnötig, denn du verarbeitest ja gar kein MPEG bzw d2v.
    Gleiches gilt für das zweite Script.

    3.
    Alle Zeilen mit einem '#' werden nicht verarbeitet

    4.
    Vor dem 'False' fehlt ein Komma.
    Das False bedeutet übrigens 'ohne Ton', möchtest du den Ton mit verarbeiten, dann muss dort ein 'true' stehen.

    5.
    LanczosResize(720,576,0,0,720,576)
    verändert nichts an der Auflösung, sollte man daher komplett weg lassen.
    SeparateFields() und Weave() kann man sich dann ebenfalls sparen.

    6.
    Man sollte bei einer Digitalisierung von analogen Videos nachher immer die Field-Order
    überprüfen, damit man weiß, wie man den MPEG-Encoder einstellen muss.
    DV hat ja bekanntermaßen immer bff und der btwincap-Treiber erzeugt immer tff.
    Solltest du aber eine Brooktree WinTV Karte haben und den originalen
    Hauppauge Treiber benutzen, dann ist die Field-Order nicht bekannt
    und kann bei jeder Digitalisierung unterschiedlich sein.
    Solltest du sogar im VirtualDub 'YUY2' oder andere YUV-Farbräume anstelle von RGB24
    eingestellt haben, dann ändert sich die Field-Order bei Verwendung des originalen
    Brooktree Treibers sogar _während_ der Digitalisierung und macht die Aufnahme eigentlich unbrauchbar.

    Zum Testen der Field-Order benutzt man diese beiden Scripte nacheinander :

    ##### TFF-Test #####
    SegmentedAVISource("e:\capture1\capture.avi")
    AssumeTFF()
    SeparateFields()
    Bob()
    ##### TFF-Test #####


    ##### BFF-Test #####
    SegmentedAVISource("e:\capture1\capture.avi")
    AssumeBFF()
    SeparateFields()
    Bob()
    ##### BFF-Test #####

    Sollte eines der beiden Scripte beim Ansehen mit VirtualDub ruckelnde Bilder erzeugen,
    dan weißt du, das die Field-Order falsch war.
    Beispiel :
    Du öffnest Script 'TFF-Test' und das Video ruckelt, du weißt also, das dein Video
    eine BFF-Field-Order hat. Da man immer möglichst TFF in den MPEG-Encoder
    schicken sollte (ganz besonders beim CCE), musst du jetzt ein
    DoubleWeave().SelectOdd()
    in dein Script einbauen.
    Das andere Script öffnet man als Gegenkontrolle.
    Sollte keines der beiden Scripte ein Ruckeln verursachen, dann hast du Material
    vor dir, das ursprünglich mal progressive war und auch progresiv encodet werden kann.

    Eine alternative zu obigen Scripten ist dieses automatische :

    ##### cut #####
    function CheckTopFirst3(clip v1){
    global top_hits=1
    global bot_hits=1
    global text = ""
    global text2 = ""
    v1 = assumeframebased(v1)
    global tff=assumetff(v1).separatefields().bob()
    global bff=assumebff(v1).separatefields().bob()
    istff = tff.subtitle("Is frame TFF: TRUE").frameevaluate("top_hits=top_hits+1.0")
    isnottff = tff.subtitle("Is frame TFF: FALSE").frameevaluate("bot_hits=bot_hits+1.0")
    outclip = conditionalfilter(tff,istff, isnottff, "yDifferenceFromPrevious(tff)+ydifferenceToNext(tff)","<","yDifferenceFromPrevious(bff)+yDifferenceToNext(bff)",false)
    outclip = frameevaluate(outclip,"text = "+chr(34)+"STATS: TFF = "+chr(34)+" + string(100.0*top_hits/(top_hits+bot_hits)) + " + chr(34) + "%"+chr(34))
    outclip = frameevaluate(outclip,"text2 = "+chr(34)+"STATS: BFF = "+chr(34)+" + string(100.0*bot_hits/(top_hits+bot_hits)) + " + chr(34) + "%"+chr(34))
    outclip = scriptclip(outclip, "Subtitle(text,y=50)")
    outclip = scriptclip(outclip, "Subtitle(text2,y=70)")
    return outclip
    }
    ##### cut #####

    Speichere es als 'CheckTopFirst3.avsi' in deinem Avisynth-Plugin-Ordner.
    Aufrufen kannst du diese Funktion dann in deinem Script mit

    ##### cut #####
    v=SegmentedAVISource("e:\capture1\capture.avi")
    v2=ConvertToYV12(v)
    CheckTopFirst3(v2)
    ##### cut #####

    Aber Vorsicht :
    Dieses automatische Script arbeitet anscheinend mit den mpeg2dec.dll nicht korrekt zusammen,
    dann würde ich der angezeigten Field-Order nicht vertrauen.
    Benutze also besser immer die ersten beiden Scripte.


    Zitat


    LoadPlugin("D:\Tools\AviSynth 2.54\plugins\MPEG2Dec3.dll")
    AviSource("F:\Video\Motorrad\schnitt1.avi"false,"RGB24")
    DoubleWeave().SelectOdd().SeparateFields()
    LanczosResize(720,576,0,0,720,576)
    #Trim(0,97005).FadeOut(150)

    Da fehlt ein 'Weave()' am Schluss, denn sonst hast du ein Video mit halb hohen Bildern (eben die Fields) und doppelter Framerate.


    Zitat


    Und wie croppe ich nun am besten so störende Ränder weg ohne über Resize zu gehen?

    Crop(16,16,-16,-16) #16 Pixel von jedem Rand abschneiden, unabhängig von der Bildgröße
    AddBorders(16,16,16,16) #rundherum 16 Pixel schwarz hinzufügen

    oder auch zusammengefasst :
    Crop(16,16,-16,-16).AddBorders(16,16,16,16)

    Noch schneller und einfacher geht es so :
    Letterbox(16, 16, 16, 16, 0)
    die Null bedeutet schwarz.


    Zitat


    Und nehme ich ab jetzt immer RGB24 als Richtwert oder wie?

    Wenn dein Quellmaterial im Format RGB24 vorliegt, dann auf jeden Fall.

    Wenn dein Quellmaterial in einem Format vorliegt, das der Codec nicht liefern kann,
    dann kannst du sowohl 'YUY2' als auch 'RGB24' benutzen.
    Möchtest du mit Avisynth irgendwelche Filter benutzen, dann solltest du als YUY2
    öffnen, denn damit ist die Verarbeitung etwas schneller bzw einige Filter funktionieren
    auch nur im YUV-Farbraum.
    Schickst du dein Video in VirtualDub oder TMPGEnc oder Premiere, dann solltest
    du am Ende deines Scriptes immer ein 'ConvertToRGB24()' stehen haben,
    weil diese Programme mit YUV nichts anfangen können bzw eine Wandlung durchführen.
    Schick doch mal RGB24 in den CCE, stelle dort Luma 16-235 ein und schau dir das MPEG am Fernseher an. Passt die Helligkeit?

    Zitat


    Wie kriege ich den Farbraum des Bandes raus?

    Wenn du das Video selber hergestellt hast, dann weisst du ja, was du im VirtualDub
    bei der Digitalisierung eingetsellt hast.
    DV-Kameras speichern meistens im vollen Bereich von 1-254 (0 und 255 dienen anderen Infos),
    daher sollte man möglichst mit dem nicht expandierenden und nicht shrinkenden
    Canopus-DV-Codec arbeiten.
    DVDs sind YV12 mit Luma-Range 16-235 (obwohl es da auch wenige Ausnahmen geben kann).
    Ich habe vor Kurzem mal ein kleines Programm 'Luminance-Analyzer' geschrieben,
    das mit Hilfe von ffmpeg die Luminanz eines Videos herauszufinden versucht.


    Zitat


    Is das einheitlich bei z.B. DV oder VHS (analog überspielt)?

    Bei der Digitalisierung von VHS mittels VirtualDub rate ich zum Farbraum RGB24.
    Geh' von 0-255 aus und du solltest keine Probleme haben.


    Zitat


    Ach ja und lohnt es sich die MPEG2Dec3.dll zu nutzen?

    Nein, denn du verarbeitest kein MPEG bzw d2v.


    Zitat


    Wenn ja warum, encodet er dann schneller? Finde es nämlich eigentlich auch schade daß durch Avisynth die Geschwindigkeit so verringert wird (bei mir von 2.5 zu 0.55 im CCE).

    Das liegt nicht an der mpeg2dec3.dll.
    Wie hast du denn dein Video im CCE geöffnet bei der Geschwindigkeit von 2.5?
    Direkt und ohne jeden Filter?


    Zitat


    So Danke schonmal für ausführliche Antworten. Ich seh grad, is SeparateFields() vonnöten wenn ich garnicht Resize?

    Achte darauf, das du bei interlace immer gradzahlig croppst.

    Zitat


    (is doch nur fürs interlaced Resizen gedacht oder)

    ja, es dient der Aufteilung in die einzelnen Fields.

    ----------

    neues Script für ein DV-Video :

    ##### neu #####
    AviSource("G:\Zu_machen\Bandemers\Hochzeit\Capture\schnitt-CDV(AVI2).avi",false,"RGB24")
    DoubleWeave().SelectOdd()
    Letterbox(16, 16, 16, 16, 0)
    ##### neu #####

    ----------

    neues Script für S-VHS-Video (über SVideoeingang) :

    ##### neu #####
    AviSource("G:\Zu_machen\Bandemers\Hochzeit\Capture\schnitt-CDV(AVI2).avi",false,"RGB24")
    #DoubleWeave().SelectOdd() # falls das Video bff-Field-Order besitzt, dann '#' entfernen
    Letterbox(16, 16, 16, 16, 0)
    ##### neu #####

  • Vielen Dank für die echt ausführlcihe Antwort. Das wird mir weiterhelfen.

    Zu deinen Fragen:

    Zitat

    Hast du im RGB24 oder im YUY2-Format aufgenommen?

    Genau das weiß ich ja nicht. Ich habe eine Pinnacle DVD 500 DVD mit der entsprechenen Box dran mit S-Video, Cinch, und Firewire Eingänen/Ausgängen dran und nehme dann via DvTools von Pinnacle bzw. Scenalyzer das Video über einen S-Video-Eingang auf. Und ich stell da keinen Farbraum ein. Sollte ich besser über einen Videoeingang einer Grafikkarte gehen? (und dann VirtualVCR bzw. VirtualDub benutzen) Gibt es eventuell Treiber das die erwähnten Programme auch mit meiner Kartenlösung capturen können?

    Was macht eigentlich diese Zeile: #Trim(0,97005).FadeOut(150)

    Zitat

    Wie hast du denn dein Video im CCE geöffnet bei der Geschwindigkeit von 2.5? Direkt und ohne jeden Filter?

    Ähm jap so habe ich es früher immer gemacht. Avi rein innen CCE und los.

    Noch ne Frage zum Canopus-DV-Codec. Ich habe mir jenen (aber nur Playback) von der Canopus-Seite heruntergeladen nebst Canopus DV File Converter. Aber das ist doch nicht der richtige oder? Wenn nicht, woher bek9omm ich einen vollwertigen bzw. was muß ich dafür haben? Übrigens umwandeln geht ganz gut mit dem Converter, weiß halt bloß nicht so genau was es so bringt. Und wie weise ich ein Programm an diesen Codec zu nutzen und nicht den MS-Codec? Und sollte ich echt im Scenalyzer den MS-Type nutzen also Type1-DV? Ich nahm immer Type2-DV bis jetzt.

    Und hab ich das richtig verstanden, ich muß auch bei VHS oder halt S-VHS Aufnahmen immer die Fieldorder überprüfen? Unterscheiden sich da die analogen Camcorder auch alle bzw. wenns was aus dem Fernsehen aufgenommenes ist oder so.

Jetzt mitmachen!

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