Beiträge von Sweeeet

    Seit vielen Monaten bin ich nun schon auf der Suche nach einem MP3-Player, der meinen Anforderungen entspricht, aber irgendwie hat sich die Industrie gegen mich verschworen, so etwas nicht anzubieten. Der Player soll folgendes haben:

    • Austauschbare Batterie, vorzugsweise 1xAAA, aber auch 1xAA oder 2xAAA wäre ok.
    • Flash als SD-Karte.
    • Unterstützung für Ogg Vorbis.

    Gründe dafür sind einfach: Ein Akku ist ein Verschleißteil und ich will den Player nicht wegwerfen nur weil der Akku tot ist. Außerdem geht der Akku immer im blödesten Moment leer, da ist es fein, wenn man einfach nen Ersatzakku reintut und gut, anstatt bis zur nächsten Steckdose ohne Musik dazustehen.

    Ich will ich auch nicht teuren Flash-Speicher mitbezahlen, wo ich doch schon etliche SD-Karten besitze. Außerdem kann ich die selbst dann weiterverwenden, wenn der Player mal den Geist aufgeben sollte.

    Ogg Vorbis hat ca. ein doppelt so gutes Verhältnis von Qualität zu Bandbreite wie MP3, sprich: es verdoppelt effektiv die Kapazität meines Flash-Speichers.

    Natürlich wären auch noch folgende Features toll:

    • USB 2 und Funktion als Cardreader (Massenspeicher am Computer, keine speziellen Treiber).
    • Verzeichnisweises Abspielen und Random Play von einzelnen Verzeichnissen.
    • Anzeige von ID3 Tags.
    • Geringer Stromverbrauch, lange Akkulaufzeit.
    • Geringe Größe.
    • Robustheit.

    Ich bin für jeden Tip in dieser Sache dankbar!

    Genau das hätte ich auch vermutet :).

    So, für alle, die ein wenig basteln wollen, habe ich mal alle relevanten Daten zusammengestellt. Das stats-File enthält die Daten des 1. XviD-Pass' für die entsprechenden Frames. Wer herausfindet, welcher Film das war, vor dem erstarre ich in Ehrfurcht (möglich ist es bestimmt) ;D.

    Ich bin ja Frickler und als solcher werde ich mal versuchen, die ganzen Schritte zu automatisieren, damit man nur noch die Queue von VirtualDub anwerfen und ein wenig warten muss. Damit sollte man dann relativ schnell an mehr, und damit aussagekräftigere, Daten kommen können.

    Zitat von nexustheoriginal

    Das übliche eben, Rauschentfernung, Schärfen.

    Schätze, danach wird der Effekt immer noch deutlich da sein.

    Zitat

    Dann poste mal dein Skript. ;)

    Ok, dazu muss ich ein bissl was schreiben. Insgesamt sind es 3 Dateien:

    • globals.avs (muss so heißen) speichert globale Werte, so dass man weniger Fehler machen kann :).
    • mkclips.avs erzeugt einen Testclip.
    • cmpclips.avs vergleicht einen Testclip mit dem Original.

    Den Inhalt von globals.avs musst Du logischerweise anpassen. Hier ein Beispiel:

    Code
    PluginPath = "C:\Programme\AviSynth\Plugins\"SourcePathname = "D:\Video\"SourceFilename = "Schoene_Autos_Schnelle_Uhren_und_Teure_Frauen.d2v"StartFrame = 1000EndFrame = 1240CropLeft = 32CropWidth = 640CropTop = 80CropHeight = 352


    Wichtig ist, dass CropTop und CropHeight so gewählt werden, dass in jedem Clip nur Bild und kein Rand zu sehen ist. In diesem Fall darf also bei 80 kein Rand sein und bei 80 + 352 + 16 auch nicht.

    Folgendes Script dient zum Erstellen der Testclips mit VirtualDub. Für alle Clips gilt: Audio ausstellen und Target Size / Bitrate bei XviD (bzw. anderem Codec) einstellen. Die muss für alle Clips gleich bleiben! Clip abspeichern, unter dem Namen Clip_00.avi. Die Datei muss so heißen und im selben Verzeichnis liegen wie die D2V, damit das Vergleichsscript die Datei findet. Dann im Script den Wert Offset um 1 erhöhen, AVS neu laden in VirtualDub (F2), AVI als Clip_01.avi speichern, usw.. Hier das Script mkclips.avs:

    Code
    # CONFIGOffset = 0Import("globals.avs")#  PLUGINSLoadPlugin(PluginPath + "DGDecode.dll")cl_src = Mpeg2Source(SourcePathname + SourceFilename)cl_src = Trim(cl_src, StartFrame, EndFrame)# Cropping on any pixel boundary only allowed with RGB32cl_src = ConvertToRGB32(cl_src)cl_src = Crop(cl_src, CropLeft, CropTop + Offset, CropWidth, CropHeight)cl_src

    Damit werden nun 16 AVIs erzeugt. Um die jeweils mit dem Original zu vergleichen, benutzen wir ein weiteres Script. Auch hier muss nach jedem Durchgang der Wert Offset um 1 erhöht werden. Hier das Script cmpclips.avs:


    Hm, ich geb zu, ich hab die Scripte gerade bei der Eingabe verändert, aber es müsste so passen. Im Zweifelsfall beim Vergleichsscript mal StackHorizontal(cl_src, cl_dst) machen, um zu kontrollieren dass die richtigen Clips verglichen werden. Ich hab am Anfang cl_src und cl_dst in Streifen geschnitten und mit StackHorizontal aneinandergeklebt, um zu erkennen, ob ich die Verschiebung richtig hatte.

    Nach der Aktion haben wir ein paar ssim-Dateien in dem Verzeichnis. Die ssim_stats_xx.csv sind nur für ganz Neugierige. Uns interessieren nur die ssim_avrg_xx.txt. In ihnen steht der durchschnittliche SSIM-Wert für den jeweiligen Clip. Daraus eine CSV-Datei zum Import in einer Tabellenkalkulation zu machen ist nicht schwer (aber nervig, deshalb hab ich's mit awk automatisiert :D).

    Zitat von nexustheoriginal

    Vorausgesetzt es wird gefiltert, ist es dann noch von Vorteil die ursprünglichen Makroblockgrenzen beizubehalten?

    Das kommt darauf an wie Du filterst. Da alle Filter Information vernichten und keine hinzufügen wird der Effekt schwächer werden. Um wieviel, das müsste man einfach mal testen.

    Zitat von Selur

    Werden denn sicher auch die (fast) gleichen Matrizen verwendet?

    Keine Ahnung. Ich betrachte das von der anderen Seite: Die Tatsache, dass die Kompression so viel besser ist auf Mod16 zeigt doch, dass es so ist. Und wie gesagt, sie müssen überhaupt nicht "fast gleich" sein, um einen Vorteil gegenüber "völlig unterschiedlich" zu haben.

    Zitat

    Sweeeet: Kannste eventuell ein Diagram mit PSNR-Werten ansstelle von SSIM Werten machen?

    Wieso? Ich vermute, dass SSIM die Ähnlichkeit zweier Clips wesentlich besser (d.h. näher an der menschlichen Wahrnehmung) misst.

    Aber was ich machen kann, ist, die verwendeten AviSynth-Scripts zu posten, dann kann jeder seine eigenen Tests machen.

    Zitat

    Ps.: Hatten nicht mal syskin&co gemeint ein DCT Domain-Transcoder wie Shrink ihn verwendet wäre für Mpeg2->Mpeg4 unsinnig, da es zu ungenau wäre

    Keine Ahnung, bin ja ein Frischling hier. Ich denke aber auch, dass sich die Motion Compensation viel zu sehr unterscheidet. Nur mit Domain-Transcodieren ist es also sicher nicht getan.

    Zitat von Selur

    MPEG AVC Codec machen etwas ähnliches aber rein im Integerbereich

    Das betrifft wahrscheinlich nur die Berechnung der Matritzen. Was rauskommt dürfte sehr ähnlich sein.

    Zitat

    dann gibt's da ja noch waveletbasierte Codecs

    Jo, das ist andere Baustelle :).

    Zitat

    daran zweifeln, dass die Macroblöcke durchaus nicht immer ideal gewählt sind.

    Die sind bestimmt selten ideal gewählt. Aber schon wenn sie besser gewählt sind als blind geraten, gibt's den besagten Effekt.

    Zitat

    Ich sehe nicht, dass bei einer erneuten Komprimierung DCT wieder genauso läuft wie vorher

    Nee, genauso nicht, aber mit einigen Ähnlichkeiten, eben weil die "unwichtigen" Anteile bereits weg sind.

    Zitat

    sehe ich nicht, warum es hilfreich sein kann, dass die Markoblockgrenzen identisch seien sollen. :)

    Tja, da bin ich dann mit meinen Erklärkünsten auch am Ende. Wenn ich es nochmal erklären sollte, würde ich es wieder genauso machen wie vorher. Vielleicht springt ja wer anders ein oder ein Whitepaper kann helfen.

    Zitat

    Warum besteht hier nicht die Möglichkeit, dass der Codec andere Matrizen/Koeffizienten wählt weil er mit ihnen die vom ersten Encode verbleibenden Informationen (Orginal-Rundungsdaten) besser erhalten kann, gerade wenn die Makroblockgrenzen nicht identisch?

    Es hat ja niemand behauptet, dass das nicht mal passieren kann. Nur ist die Wahrscheinlichkeit, dass man mit weniger Bits/Block auskommt viel größer bei Alignment mit Originalblöcken. Das mag man gut, doof, logisch oder seltsam finden, in der Praxis gibt es diesen Effekt aber, wie man mit simplen Tests z.B. mit JPEG-Bildern leicht überprüfen kann (dazu gibt's sicher einiges im Netz).

    Zitat

    Ich glaube mein Problem ist, dass ich noch irgendwie nicht daran glaube, dass die 'Daten' benachbarter Makroblöcke so verschieden seien müßen.

    Ich hab ehrlich gesagt noch nicht in welche reingeschaut, aber ich würde erwarten, dass sie so gut wie keine Gemeinsamkeit haben. Denn auch wenn der Nachbarblock ähnliche Farben und Formen hat, ist es äußerst unwahrscheinlich, dass dieselben Matritzen herauskommen. Warum, kann die englische Wikipedia oder dieses PDF besser erklären als ich.

    Zitat von Selur

    Okay, dies trifft dann aber nur auf Mpeg4 ASP zu

    Keine Ahnung. Gibt's irgendwelche Codecs, die keine DCT machen?

    Zitat

    1. die gleichen Quantisierungmatrizen verwendet werden


    Nein. Wenn man die gleichen hätte, wäre der Effekt am stärksten, aber auch halbwegs ähnliche Matritzen sorgen schon für eine Ersparnis. Genau das zeigt ja mein Test. Natürlich steht es jedem frei, ähnliche Tests anzustellen, ich würde mich darüber freuen.

    Zitat

    2. das Material nicht gefiltert wird


    Ja, schrieb ich ja. Obwohl auch Undot() den Effekt nur abschwächen und nicht völlig aufheben wird. Das ist erstmal nur eine Vermutung, wenn man's genau wissen will, müsste man's mal durchspielen (wozu mir allerdings gerade der Nerv fehlt ;) ).

    Zitat

    3. die anfängliche Wahl gut war, soll heißen, was spricht dagegen, dass die ein neuer Block nicht besser sein kann, wenn er aus 4 früheren bestand?


    MPEG2 wäre niemals bekannt geworden, wenn es die ungünstige Eigenschaft hätte, nicht öfter gut zu quantisieren als schlecht. Wenn das so wäre, würden MPEG2s vor Artefakten strotzen. Eine gute Auswahl zu treffen ist bei der DCT eigentlich trivial. Nicht-trivial ist es, eine Auswahl zu treffen, die Eigenheiten des Sehapparates bei bewegten Bildern gut ausnutzt.

    Zitat

    Wirkt sich dies wirklich aus wenn ich ein Decodiertes Bild habe? (Avisynth arbeitet auf Pixeln und kümmert sich dabei herzlich wenig um Markoblockübergänge..)


    Da so eine ähnliche Frage schonmal kam, frage ich mal zurück, woher AviSynth denn die Informationen herzaubern soll, die im Originalbild enthalten waren, bei der DCT aber unter den Tisch fielen? Nur weil ein Mensch im decodierten Video keine Blöcke erkennen kann, heißt das noch lange nicht, dass noch alle Informationen da sind. Encodier doch mal mit extrem niedriger Bitrate (Codec egal), dann siehst Du, dass Informationen in den Blöcken unwiederbringlich verlorengehen, selbst wenn man sie mit AviSynth öffnet ;).

    Zitat

    Sehe ich momentan nicht, so lange ich nur 'ganze' Markoblöcke encode. Soll heißen würde ich z.B. oben und unten bzw. links&rechts jeweils einen halben Makroblock weg schneiden, sehe ich keinen Grund wo das wirkliche Problem liegt. :)


    Puh, ich hab mich ja schon bemüht, das halbwegs zu erklären. Ich mach noch einen "einfachen" Versuch, danach müsste man wirklich tief in DCT einsteigen. In der DCT wird ein Macroblock genommen und eine Liste von Matritzen generiert, deren Überlagerung wieder das Ursprungsbild ergeben. Bis dahin geht bis auf Rundungsfehler keine Information verloren. Diese Matritzen sind nach ihrer Wichtigkeit für die Bildqualität sortiert und die n unwichtigsten werden einfach weggelassen.

    Wenn der neue Codec auf denselben Blöcken arbeitet, steht er vor demselben Problem. Er muss bei gegebener Bandbreite die wichtigen Informationen erhalten und die unwichtigen verwerfen. Da der Codec die zuvor verworfenen Informationen gar nicht kennt, findet er ziemlich genau dieselben, die der MPEG2-Codec auch gefunden hat. Wenn der Quantisierer exakt genauso funktionieren würde wie der von MPEG2, würden schon relativ wenige Matritzen den Block perfekt rekonstruieren und er würde nie zusätzliche erzeugen, sondern die Bandbreite für die P- und B-Frame-Prediction verwenden (was sehr wünschenswert ist).

    Wenn nun der neue Codec aber 4 Teile von 4 Blöcken komprimieren muss, sieht es anders aus. Die 4 Teile enthalten 4mal nur "wichtige" Informationen, und zwar in jedem Block andere. Der Codec braucht also entweder mehr Platz, um sie alle gut zu repräsentieren, oder aber er muss von dem neuen Block Informationen verwerfen, die ursprünglich da waren. Dasselbe Problem stellt sich bei den 3 benachbarten Blöcken. Grob gesagt kann sich der Codec nicht auf die Auswahl der richtigen Frequenzen eines Blockes beschränken sondern muss aus vier Frequenzmischungen eine neue Auswahl treffen.

    Zitat von kurt

    der Unterschied zwischen Mod8 (72 Zeilen) und Mod16 (80 Zeilen) wäre sicher interessant :ja:

    Für den Fall, dass in diesen 8 Zeilen kein Rand ist, kann man das Ergebnis schon etwa aus der Grafik entnehmen.

    Für den Fall, dass man schwarzen Rand mitcodiert müsste ich mir noch einen Testcase ausdenken und durchrechnen. Wäre dabei vielleicht auch interessant zu sehen was passiert wenn man zwar bis zum Bildrand croppt, dann aber wieder schwarze Balken hinzufügt. Dann ist die Übereinstimmung in der ersten Zeile von Blöcken nicht so doll, dafür ist das Schwarz aber "schwärzer". Alle weiteren Blöcke sind dann aber wieder deckungsgleich und damit "gut".

    Zitat von kurt

    Andereseits schneidet man mit 80 Pixel (um mod16 zu croppen) 8 Zeilen mehr vom Bild ab - die Frage ist, ob sich das lohnt...

    Dazu könnte man noch ein paar Messungen machen. Mein Tip wäre:
    Wenn Du 72 Pixel willst (eher weniger), dann nimm 72.
    Wenn Du etwas mehr als 72 willst, nimm direkt 80.
    Und nimm in keinem Fall irgendetwas dazwischen.
    Sobald Du vertikale Skalierung machst, ist alles egal :-).

    P.S.: Der untere Rand ist für den beschriebenen Effekt egal. Aus anderen Überlegungen heraus ist es natürlich gut, wenn er so ist, dass das verbleibende Bild Mod16 ist.

    Zitat von Selur

    wenn ich eine DVD mit Avisynth behandle und später nach Xvid umwandle, sollten etwaige Ursprungsmakroblöcke doch egal sein

    Nein, sie sind nicht egal. Jedes Bild des MPEG2-Stroms wird ja in Blöcken gespeichert. Der Inhalt dieser Blöcke wird dabei nicht 1:1 sondern vergröbert gespeichert (DCT). Wenn Du ein solches Video mit AviSynth öffnest, enthält der AviSynth-Clip Bilder, die aus diesen Blöcken rekonstruiert werden.

    Wenn Du nun XviD auf diese Blöcke loslässt, wird XviD die Blöcke auf ähnliche Art komprimieren und würde dabei ähnliche Anteile unter den Tisch fallen lassen, die MPEG2 bereits unter den Tisch hat fallen lassen. Dieser Effekt sorgt dafür, dass XviD weniger Platz braucht.

    Wenn XviD nun nicht auf die MPEG2-Blöcke ausgerichtet ist, zerhackt XviD die Bilder in Blöcke, die aus unterschiedlichen MPEG2-Blöcken bestehen. Im schlimmsten (und allgemeinen) Fall muss XviD also eine Repräsentation eines Blocks finden, der aus Teilen von 4 verschiedenen MPEG2-Blöcken besteht und in denen MPEG2 jeweils andere Anteile weggelassen hat. Solche Blöcke zu finden ist schwerer, weil die "wichtigen" Anteile von 4 Blöcken zu einem neuen Block codiert werden müssen. Dazu muss man vielleicht wissen, dass die Blöcke sehr unterschiedlich zu ihren Nachbarblöcken gespeichert werden. Es ist also nicht einfach, mehrere unter einen Hut zu bringen.

    Diesen Effekt kann man sogar in meiner Messung erkennen (wo maximal 2 MPEG2-Blöcke in einem XviD-Block codiert werden): Eine Verschiebung um 1 oder 15 Zeilen ist weniger schlimm als eine um 4 oder 12. Bei einer Verschiebung um eine Zeile fällt die eine Zeile nicht so ins Gewicht.

    Danke für die Erklärung, Didée. Mein Wissen beschränkt sich im Wesentlichen auf JPEG. Zu Motion werd ich mir noch ein wenig anlesen.

    Zitat von nexustheoriginal

    Ergo: Weniger schreiben, mehr zusammenfassen. ;)


    Hehe, hab ich ja versucht :).

    Zitat

    Also ist "Sprengen" der (16x16)Ursprungsmakroblöcke schlimmer als das Beibehalten von einigen Zeilen schwarzer Pixel?


    Genau das würde ich als Resumée sehen. Aber auch Mod8 scheint echt ok zu sein und das hatte ich ja zufällig getroffen.

    Zitat von nexustheoriginal

    Ok, dann hab ich dich tatsächlich falsch verstanden.


    Ok, und wie bekommst Du jetzt das Kreuzchen bei der Umfrage "Alter Hut" wieder weg? ;) :D
    Hm, stand eigentlich auch schon genau so im Ursprungsposting.

    Zitat von Sweeeet

    Jedes dieser Videos hat dieselbe Bildhöhe

    Zitat von nexustheoriginal

    Ersteres ist nicht egal!
    DVD : 576mod16=0 Wenn das was insgesamt abgeschnitten wird auch durch 16 teilbar ist, ist der Rest, der encodet wird auch durch 16 teilbar. Und schließlich geht es um diesen Rest.

    Nein, da hast Du mich falsch verstanden. Encoder arbeiten mit Blöcken, also ist Verschnitt unten ungünstig. Aber darum ging es mir nicht, sondern um den Qualitätsverlust, der dadurch entsteht, dass Blöcke encodiert werden, die nicht mit (MPEG2-)Blöcken des Originals zusammenfallen.

    Bei meiner Testreihe hatten alle 16 encodierten Clips eine durch 16 teilbare Höhe, trotzdem war ihre Qualität durch o.g. Effekt stark unterschiedlich.

    Zitat von nexustheoriginal

    Scherzkeks, es waren aber nicht jeweils 72 Pixel oder (72*2=144, 144 mod 16 = 0)?


    Wieso Scherzkeks? Ich hab oben und unten jeweils 72 Zeilen abgeschnitten. Damit fängt der XviD-Encoder mit Blöcken an, die sich nicht mit den originalen MPEG2-Blöcken decken.

    Wie hoch der abgeschnittene Teil insgesamt, der verbleibende Teil, und ob deren Höhe durch 16 teilbar ist, ist ja nochmal ein anderes Thema. (Ersteres ist egal, die letzten beiden Sachen sind für's Encodieren günstig, haben aber nichts speziell mit Transcodieren zu tun.) Aber der Verlust auf 8-Pixel-Grenzen ist nicht so schlimm, dass ich jetzt 6 DVDs neu encodiere :).

    Das mit den verwaschenen Rändern ist auch ein Phänomen. Ich hab bei einigen DVDs einen Rand, quasi 4 Pixel oben, unten, rechts und links "Ausblenden" zu schwarz, offensichtlich absichtlich reingerechnet. Wird das gemacht, damit analoge Fernseher besser mit dem Bild klarkommen?

    Zitat von incredible

    Aber um Mod8 oder 16 zu erlangen kann man skalieren (=interpolation)


    Das ist qualitätsmäßig sehr "teuer".

    Zitat

    oder man lässts bei der originalen aktiven Movie-Area-Größe und padde't einfach schwarz dran, dadurch gibts keinen Schärfeverlust.


    Irgendwie find ich's doof, schwarze Balken mitzucodieren. Da schnibbel ich lieber ein paar Pixel vom Bild ab.

    Zitat von Selur

    SSIM ist ein Versuch über die Strukturelle Ähnlichkeit von Bildern ein objektives Qualitätsmaß zu bestimmen. :)
    Siehe: http://www.cns.nyu.edu/~lcv/ssim/


    Ähm klar, deshalb hab ich's ja genommen ;).

    Zitat

    Könntest Du auch mal Posten was für Settings Du in Xvid verwendet hast?
    (GMC? AQ? ... )


    Quantisierung: MPEG
    Kein Adaptive Quantization
    Kein Quarter Pixel
    Kein Global Motion Compensation
    Max. consecutive BVOPs: 1
    I-frame boost: 10 %
    Chroma Optimizer
    Motion Search Precision: 6 - Ultra High
    VHQ Mode: 4 - Wide Search
    Use Chroma Motion
    Kein Turbo
    Maximum I-Frame Inteval: 100
    Trellis Quantization

    Wollte mir wenigstens die theoretische Möglichkeit offenhalten, das auf nem DVD-Player wiederzugeben.

    Zitat

    Ps.: Das obejktivste Qualitätsmaß erhält man nur durch druafgucken. ;)


    Sorry, aber den Unterschied zwischen 4000 kBit/s und 4200 kBit/s seh ich nicht. Ich nehme eigentlich immer Qualität, die weit jenseits dessen ist, wo ich Artefakte erkennen kann.

    Diese kleine Untersuchung hat eine Vorgeschichte: Ich wollte ein Backup einer DVD als XviD erstellen, die 16:9-Format mit "schwarzen Balken" (Letterbox) hatte. Also habe ich die Balken oben und unten abgeschnitten und das ganze als XviD encodiert. Für dieses Backup wollte ich die bestmögliche Qualität, daher habe ich z.B. keine Skalierung gemacht, sondern das XviD wie das Original anamorph (Seitenverhältnis der Bildpunkte nicht 1:1) gespeichert.

    Dann fiel mir aber ein, dass die Balken, die ich abgeschnitten hatte keine durch 16 teilbare Höhe hatten, nämlich 72. Nach allem, was ich über Codecs weiß, benutzen fast alle irgendwo diskrete Cosinustransformation, die auf Blöcken von Bildpunkten arbeitet, meistens 16 x 16 (glaube ich). Es wäre also zu erwarten, dass die Qualität besser wird, wenn die erste Zeile von meinem ausgeschnittenen Video einer durch 16 teilbaren Zeile des Originalvideos entspricht. Mich hat interessiert, ob man diesen Qualitätsunterschied messen kann und wenn ja wie groß er etwa ist.

    Ich ging hin und nahm einen 22 Sekunden langen Ausschnitt aus dem Film mit viel Bewegung und relativ guten Kontrasten. Dann machte ich 16 XviDs, beginnend bei Zeile 80 (durch 16 teilbar) des Originalvideos bis Zeile 95. Jedes dieser Videos hat dieselbe Bildhöhe (wenn auch einen etwas anderen Ausschnitt) und 4000 kBit/s (2-pass).

    Dann verglich ich die XviDs mit dem Original, und zwar immer einen Ausschnitt, den alle XviDs enthielten (oben und unten ein wenig abgeschnitten). Dazu verwendete ich die Funktion SSIM (AviSynth Plugin von Lefungus). Das Ergebnis befindet sich im Anhang.

    Das war in etwa das Ergebnis, das ich erwartet hatte. Ohne Verschiebung ist die Qualität am besten, bei einer Verschiebung um 8 Zeilen ist sie wieder relativ gut, möglicherweise weil XviD (zumindest teilweise) 8 x 8-Blöcke verwendet. Aber was ist dieser SSIM-Wert und wie groß ist der Qualitätsverlust? Dazu probierte ich ein wenig herum, welche Bitrate ich wählen muss, um mit Verschiebung etwa denselben SSIM-Wert zu bekommen wie bei 4000 kBit/s ohne Verschiebung. Das Ergebnis hat mich überrascht. Der Wert lag etwas über 5000 kBit/s.

    Das bedeutet, dass man für das Schneiden an einer ungeeigneten Stelle einen hohen Preis bezahlt. Um auf dieselbe Qualität zu kommen wie beim Schneiden an einer 16-Pixel-Grenze braucht man 25 % mehr Platz!

    Natürlich ist diese kurze Messreihe nur ein Beispiel. Bei anderem Material kann es anders aussehen. Zum Beispiel dürfte es weniger ausmachen wenn das Material bearbeitet wird z.B. durch Weichzeichnen, denn dann kommt man sowieso lange nicht auf so hohe SSIM-Werte. Wenn das Video skaliert wird, wird dieser Effekt wahrscheinlich überhaupt nicht mehr auftreten. Schlimmer dürfte es allerdings bei niedrigeren Bitraten (ohne Skalierung) sein, denn gerade da wird bei der DCT viel "weggeworfen" und wenn die Blöcke sich nicht mit den ursprünglichen Blöcken decken, wird das noch deutlichere Unterschiede ergeben. Was für Zeilen gilt, gilt sicher auch für Spalten. Waagerecht würde ich sicherheitshalber nur auf Vielfachen von 32 schneiden.

    Zitat von Selur

    Wer hat den schon polit. K. und vielleicht noch was gesunden Menschenverstand und Weitsicht?

    Och, das ist in Ansätzen schon hier und da erkennbar. Joschka Fischer, Sabine Leutheusser-Schnarrenberger, Wolfgang Schäuble, Gregor Gysi, Heiner Geißler, ...

    Was viel, viel frustrierender ist: Kompetenz, Weitsicht und Gesunder Menschenverstand ist nicht mehrheitsfähig!