Unterste Bitrate für TV-Captures

  • Hi,

    Ich mache seit kurzer Zeit Encodingtests (CCE) um festzustellen mit welcher untersten Bitrate TV-Captures auf dem TV (DVD-Player) noch gut aussehen. Mein Ziel ist ca. 3 Stunden auf die DVD zu bekommen. Leider sind meine Resultate kurz vorm Augenkrebs ;)
    Ich lese hin und wieder das es User gibt die angeblich mehr als 4 Stunden in guter Quali aud den Rohling brutzeln. Kann ich kaum glauben, warscheinlich handelt es sich dabei nur um Rips (progressive).
    Vielleicht kann mir mal jemand einen Tip geben wie TV-Captures zu encoden sind damit möglichst viel auf die DVD passt.

    bye, C.R.

  • Hallo,

    mit Full-D1 capturen und mit Half-D1 encoden und brennen. Wenn man zu tief sinkt mit der Bitrate, sieht ein um die Hälfte reduziertes Bild immer noch besser aus, als mit der vollen Auflösung.

  • Na, ich glaube die unterste Bitrate (bis auf Underflows bei manchen Playern) wird nicht so sehr das Problem sein, da selbst in sehr dunklen nicht complexen Scenen immer noch mehr Detail-Informationen in der Source vorhanden sind als bei guten DVD Sources. Daher ist die Chance, dass die Bitrate wirklich anhaltend im Keller ist, gering.
    Deshalb habe ich auch mit Mencoder 2pass und Capture Sources 0 Probleme.

    Es kommt also darauf an, wie die Qualität ist, welche dort übertragen wird, selbst wenn die Technik bei dir im Haus und am Rechner optimal ist, wirst du bei einigen alten Filmen sehen, was da so an Korn im Original beim Sender steckt. Dieses Korn/Rauschen KOMPLETT (und ich meine komplett) zu killen wird in den meisten Fällen zu lasten der Details gehen, daher lasse lieber noch etwas übrig, also einen Kompromiss, was im Gegenzug die Bitrate eh nicht in die tiefsten Abgründe gehen lässt und dein Encoding wird zudem noch natürlicher aussehen. Es kommt aber auch auf das Script und die Filter an.

    Viele gehen drauf los und capturen in 704x576, mache ich auch, ist auch wunderbar, aber du solltest dir ansehen, wie die Qualität ist, welche da beim Sender vorlag.
    Bei vielen NTSC Serien gehe ich im Script z.B. auf 352x576 runter bevor ich sie via Restore24() behandle, da sie eh nicht so scharf sind. Oder auch manche filme aus den 80ern machen bei 352x576 nachher (so gut wie) keinen Unterschied wenn mans nachher an einem TV betrachtet. Erst recht, wenn man dafür weniger Artefakte in Kauf nehmen muss.
    Bei interlaced Sources ist eh ein Kompromiss angesagt, daher ist da 352x576 auch nicht schlecht.

    3Std. auf eine DVD ist übrigens nicht der Akt, zumal man auch mit matritzen arbeiten kann, welche in Bereichen dahingehend filtern, wo Captures eh keine Details besitzen.

    Probiere mal bei 704er Encodings den DCTfilter() aus und du wirst sehen, wo es anfängt knapp zu werden. bei 352er Encodings wäre ich vorsichtig, da ja nachher noch richtig in der Horizontalen am TV entzerrt wird.

    EDIt: Sehe gerade Gleitz und Scharfis_Brain haben auch schon geantwortet.

  • Zitat von incredible

    EDIt: Sehe gerade Gleitz und Scharfis_Brain haben auch schon geantwortet.


    Ja, nur nicht so ausführlich wie unser Capture-König. :D
    Leider kann ich bei mir die analoge Geschichte beerdigen. Zu wenig Einfluss auf die miese Anlage.

  • Zitat von Castrop Rauxel

    Mein Ziel ist ca. 3 Stunden auf die DVD zu bekommen. Leider sind meine Resultate kurz vorm Augenkrebs ;)

    Ich habe mir anfangs auch die Zähne daran ausgebissen mehrere Stunden Capturematerial ordentlich auf den Rohling zu bekommen. Inzwischen ist die Bildquali in Abhängigkeit von der Dauer ganz ordentlich und ich verwende nur noch folgende Methode:

    Capturen mit der Cinergy 600
    PicVideo = 19 (5/5)
    Format Video=704x576 / Audio 48KHz ST 16Bit
    Schneiden mit VirtualDub und Schnittliste erstellen (VCF2AVS)
    Das File in Fit2Disc laden und auf 544x576 Resizen ...
    ... filtern mit "TemporalSoften", "Convolution3d" und "UnDot" ...
    ... dabei verwende ich moderate Settings. Diese Kombi klappt
    bei mir hervoragend und liefert gute Ergebnisse.
    Das AVS-File mit dem CCE laden und die KDVD-Matrix verwenden.
    CBR=3800 VBR=3400 ... mit 3400 passen bei mir ca. 4 Serien auf
    den Rohling.

    Teste das mal und du wirst dich wundern welche Quali man erzielen kann. Wichtig ist das du die Filter auf dein Capture richtig einstellst. Mein ISH-Kabel-TV ist absolute Schei*e und trotzdem sieht das Video auf dem TV gut aus. Wenn du weitere Fragen hast melde dich.

    Gruß Gunnar

  • Zitat von Gunnar

    Schneiden mit VirtualDub und Schnittliste erstellen (VCF2AVS)

    Schon mal die Methode mit AVS support in Vdub getestet??
    Dort gibt es einen script editor.
    Wenn du dein resizing mit fitcd erstellt und das avs auf der HD hast, kannst du es in VdubMod einladen, die CUTs konventionell in Vdub erledigen, dann in "scrip editor" (oben rechts) reingehen und du hast sodann einen avs editor mit Syntaxerkennung und Zeilennummerierung! Dann gehst du mit dem cursor hinter Avisource und wählst im Scripteditor den Eintrag im Menue "Import Framesets as Trims" und ... schwupps ... sind alle trims aus Vdub als Trim() commands in dein avs script eingefügt. Dann nur noch F5 drücken (safe & refresh) und das Preview in Vdub ist in Bezug auf das aktualisierte script "refreshed".
    Dann nur noch in Vdub delete Framesets (um die VDub cuts zu entfernen, da sie ja nun via avs existieren).

    Klingt umständlich, isses aber nicht. Geht raz faz und du brauchst kein vcf2avs mehr!

    Bzgl. Matrix, ... bei Captures (kommt auf Detailgenauigkeit der Übertragung an) ist selbst die Notch (KVCD) Matrix oft "Perlen vor die Säue" ;) , da sie noch recht viel feine "Phantom frequencies" durchlässt. Also hohe frequenzen, welche nix mit dem Bilddetail in wirklichkeit zu tun haben.

    Mache mal einen Test:

    und füge unen an dein Avisynth script folgendes an:

    DctFilter(1,1,1,1,1,1,0.5,0) ... an
    Bicubicresize(768,576) ..... (bei PAR 128/117 based encodings, also 352,288, 352x576 oder 704x576)

    (den filter gibts bei Warpenterprises)

    Dieser Filter macht eine DCT und dann wiederum eine inverseDCT.
    Sodann wird dein Bild zu full PALTV gestreckt.

    Zur erklärung

    die 8 Werte stehen für die vertikalen reihen im 8x8DCT Raster. 1 bedeutet keine Filterung und 0 die Volle Filterung, 0.5 ist ein Mittelding.

    Somit wäre z.b. 1,1,1,1,1,1,1,0 theoretisch=

    00,00,00,00,00,00,00,99
    00,00,00,00,00,00,00,99
    00,00,00,00,00,00,00,99
    00,00,00,00,00,00,00,99
    00,00,00,00,00,00,00,99
    00,00,00,00,00,00,00,99
    00,00,00,00,00,00,00,99
    00,00,00,00,00,00,00,99

    Und 1,1,1,1,1,1,0,0=

    00,00,00,00,00,00,99,99
    00,00,00,00,00,00,99,99
    00,00,00,00,00,00,99,99
    00,00,00,00,00,00,99,99
    00,00,00,00,00,00,99,99
    00,00,00,00,00,00,99,99
    00,00,00,00,00,00,99,99
    00,00,00,00,00,00,99,99

    So kannst du testen, ab wann eine wahnembare Verschlechterung eintritt.
    Das resizing auf temporäre FULL PAL 768x576 ist wichtig, da dein Video noch auf dem TV gestreckt wird und du gerade dann sehen kannst, wenn zuviel des guten geschnibbelt worden ist.

    Daher wirst du bei z.B. 352x576 encodings schnell sehen, dass dort die Grenze viel eher erreicht ist, da das gefilterte Material ja noch über das Doppelte hiaus gestreckt wird.

    Es gibt auch eine option in DCTFilter: DCTFilterD(3)
    Diese bewirkt ein Filtern ab der 3ten untersten rechten Diagonale

    00,00,00,00,00,00,00,00
    00,00,00,00,00,00,00,00
    00,00,00,00,00,00,00,00
    00,00,00,00,00,00,00,00
    00,00,00,00,00,00,00,00
    00,00,00,00,00,00,00,99
    00,00,00,00,00,00,99,99
    00,00,00,00,00,99,99,99

    somit kannst du vorab checken, wie sich ein effizientes Ändern der Matrix im späteren Enkodiern auf dein späteres Resultat auswirkt.

    Natürlich fliegt zumindest der Bicubicresize am ende wenn alles feststeht raus, ist ja klar.

    Kannst auch kombinieren:

    DctFilter(1,1,1,1,1,1,1,0)
    DCTFilterD(3)

    00,00,00,00,00,00,00,99
    00,00,00,00,00,00,00,99
    00,00,00,00,00,00,00,99
    00,00,00,00,00,00,00,99
    00,00,00,00,00,00,00,99
    00,00,00,00,00,00,00,99
    00,00,00,00,00,00,99,99
    00,00,00,00,00,99,99,99

    Wenn das nun alles unter 768x576! Preview gut daherkommt, kannst du die Notch nehmen und eben einen Mix aus der Oberen und den orig. Notch Werten anstellen. Logisch, was oben 00 ist, bleibt notch default und eben nur die 99 werden sodann an die Stellen, wie oben zu sehen gesetzt.


    Richtig lecker wird es, wenn du ffdshow deine avs files decodieren lässt, denn ffdshow hat einen dctfilter eingebaut, wo du sodann mit dem Zoomplayer direkt "on the fly" verändern kannst, also jede Änderung ist direkt im ablaufenden Film sichtbar. (So teste ich of avs Filterkombinationen, da am laufendem Film man oft sehr deutlich sehen kann, was da passiert)

  • KVCD Notch:

    Intra:
    8 9 12 22 26 27 29 34
    9 10 14 26 27 29 34 37
    12 14 18 27 29 34 37 38
    22 26 27 31 36 37 38 40
    26 27 29 36 39 38 40 48
    27 29 34 37 38 40 48 58
    29 34 37 38 40 48 58 69
    34 37 38 40 48 58 69 79

    NonIntra:
    16 18 20 22 24 26 28 30
    18 20 22 24 26 28 30 32
    20 22 24 26 28 30 32 34
    22 24 26 30 32 32 34 36
    24 26 28 32 34 34 36 38
    26 28 30 32 34 36 38 40
    28 30 32 34 36 38 42 42
    30 32 34 36 38 40 42 44

    http://www.kvcd.org/portal/articles.php?lng=en&pg=20

  • incredible
    Dein Beitrag mit dem "Matrix-Test" ist sehr interessant ... hab ich mir schon kopiert. Aber nun bei jedem Capture solch einen Test durchzuführen um ja die optimale Matrix zu verwenden ist mir zu umständlich. Ich verwende seit kurzem die KDVD-Matrix mit Erfolg. Für mich ist wichtig wie es auf dem TV aussieht und es sieht gut aus. Kann sein das noch mehr Effektivität heraus zu holen ist, aber lohnt sich der Aufwand ? Für mich nicht.

    Zitat

    Gunnar
    KDVD-Matrix ? Lese ich zum ersten Mal.
    Kannst du mal ein Beispiel deines Avisynth-Scripts posten ?

    Kannst du haben :

    LoadPlugin("C:\User\AviSynth\plugins\UnDot.dll")
    LoadPlugin("C:\User\AviSynth\plugins\LoadPluginEx.dll")
    LoadPlugin("C:\User\AviSynth\plugins\Convolution3D.dll")
    AVISource("H:\TV-Cap\vvcr.avi")
    SeparateFields()
    TemporalSoften(3,2,3,8,2)
    LanczosResize(512,272,4,2,696,284)
    Convolution3D (0,6,10,6,8,2.8,0).UnDot().Weave()
    AddBorders(16,16,16,16)

    Das der "TemporalSoften" schon hinter "SeparateFields()" ausgeführt wird ist Absicht. Es ist öfters zu lesen das der "Convolution3D" auch bei höheren Settings noch gute Schärferesultate bringt. Mag sein, aber zumindest bei mir entsteht bei größeren farbigen Flächen ein künstlicher Eindruck ... ähnlich einem Zeichentrickfilm. Also aufpassen bei den Settings.
    <!-- / message -->Das o.g. einfache Script ist für meine TV-Captures der Standart. Das Einzige was ich mal ändere sind die "TemporalSoften" - Settings ... und das auch nur leicht. Unscharfe Matsche ist nicht mein Ding.

    Zitat

    Schon mal die Methode mit AVS support in Vdub getestet??

    Ja, das wäre auch ideal für mich. Leider hat die VdubMod-Version den Bug das man den Clip nicht mit der "Space" -Taste anhalten kann. Ist bei mir jedenfalls so. Ich bin es gewohnt mit der "Space" - Taste die richtigen Stellen anzufahren. Deswegen verwende ich das original VirtualDub. Da funktioniert es.

    Gruß Gunnar
    <!-- sig -->

  • Also ne simple DCTFilter/Bicubiczeile hinten dran und dann previewen, was du ja eh machst, denke ich, ist kein Zeitaufwand, aber die Kompression wirds dir Danken, was wiederum im Durschnitt eine Qualitätsverbesserung mit sich bringt. Irgendwann hast du solche Dinge dann sozusagen als Reflex drinne ;)

    Also mit VdubMod und Space Taste?? Ich glaube das funktioniert, und wenn nicht, wie gesagt, der Editor mit den Trim Imports ist ne Wonne.

    ... aber ich will dir auch nix aufschwatzen.

    Du solltest dein Temporales filtern mit der Interleave Methode anwenden, erst recht wenn du doppelt temporal filterst, da ich glaube zu sehen, dass du Convo3D ebenso temporal laufen lässt.
    Du hast jedoch ein Risiko bei 2fachem temporalem Filtern am Start: Wenn deine Source sehr noisy ist und du 2fach temporal filterst, hast du sehr schnell jene "static dots" auf sich bewegenden Flächen.

    Versuche mal:

    AVISource("H:\TV-Cap\vvcr.avi")
    separatefields().Undot().Deen("a2d",1,3,5).BicubicResize(512,272,...,...,696,284)
    e=selecteven().TemporalSoften(2,3,5,10,2)
    o=selectodd().TemporalSoften(2,3,5,10,2)
    interleave(e,o)
    Unfilter(0,60)
    weave()
    AddBorders(16,16,16,16)

    Problem bei dir wäre, dass du nach einem Temporalem denoisen sodann mit Lanczos die tempDenoise Artefacte und static dots zudem noch mehr rausholst. Demnach lasse mal Undot() zuerst, gefolgt von einem rein spatialem Denoiser folgen ... auf der orig Auflösung.
    Sodann erhält der temporale denoiser schon etwas weniger Korn, was eben weniger Artefakte übrig lässt. Zuletzt wird lediglich in der vertikalen geschärft, das sieht auf dem TV gut aus und was noch an rest noise etc. übrig ist wird nicht in alle Richtungen zudem geschärft (daher auch am Anfang keinen Lanczos Resize).

    Oder:

    AVISource("H:\TV-Cap\vvcr.avi")
    KernelBob()
    Undot().Deen("a2d",1,3,5)
    BicubicResize(512,544,...,...,696,568)
    TemporalSoften(2,3,5,10,2)
    Unfilter(0,60)
    SeparateFields()
    SelectEvery(4, 1, 2)
    weave()
    AddBorders(16,16,16,16)

    Letzteres ist langsam aber lecker .....

  • Mhmmm ... du bringst mich auf Ideen ;)

    Das mit VdubMod und der "Space" Taste habe ich noch mal getestet. Es klappt tatsächlich nicht. Man kann zwar die Wiedergabe starten, aber das Stoppen funktioniert nicht. Bei Vdub isses OK.

    Ich werde mal deine Beispiele testen. Habe zwar noch nie mit dem "Deen" gearbeitet aber ein Versuch lohnt sicher. Allerding hört sich "KernelBob" nach deinterlacing an. Deinterlacing kommt für mich auf keinen Fall in Frage. Klär mich mal bitte auf was der "KernelBob" macht.

    Zitat

    hast du sehr schnell jene "static dots" auf sich bewegenden Flächen.

    Ist mir bisher noch nicht aufgefallen.

    Gruß Gunnar

  • KernelBob ist ein Bobber (nomen est omen) er trennt die Felder (=50fps) und bringt die Fields auf Volle höhe, und dieses Bobbing wird via SeparateFields().SelectEvery(4, 1, 2).weave() wieder rückgängig gemacht, also Reinterlacing wenn du so willst.

    Scharfis_Brain hat dies hier genauer erklärt:
    http://forum.gleitz.info/showthread.php?t=14837&page=1&pp=10

Jetzt mitmachen!

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