Warum passiert dies? Ist es ein Problem mit einem Frame, der für einige nächste Frames verbleibt, bevor er überschrieben wird? Gibt es eine Möglichkeit, das Problem zu beheben?
Fragen Sie, wie Sie das Problem beheben können, wenn Sie das Video codieren oder wiedergeben? In jedem Fall benötigen wir weitere Details.
Mike Fitzpatrick
Ich habe einen Film heruntergeladen, der das macht. Ich frage nur, ob ich es irgendwie reparieren kann. Wenn möglich, möchte ich einen kleinen Einblick bekommen, warum dies geschieht. (Ich bin ein Programmierer, also musst du mich nicht entlasten.)
Anagmate
Antworten:
0
Das Problem ist auf den Videocodec zurückzuführen, der die Inter-Frame-Komprimierung verwendet.
Grundsätzlich bedeutet dies, dass zum Speichern von Größe / Bandbreite usw. die meisten Frames nicht als separates Bild gespeichert werden, sondern als Unterschied zu vorhergehenden und folgenden Frames.
Von Zeit zu Zeit wird jedoch ein vollständiger Frame gespeichert, auf den sich andere Frames beziehen können (als I-Frame bezeichnet). Wenn der I-Frame beschädigt ist, haben die Zwischen-Frames keine korrekten Daten, auf die Bezug genommen werden kann, und bis ein neuer I-Frame hinzukommt, wird der Fehler nur zusammengesetzt.
Tatsächlich steckt mehr dahinter - moderne Codecs wie h.264 verwenden die Bewegungserkennung, um vorherzusagen, wie der Zwischenrahmen aussehen wird, und können dann nur den Unterschied zwischen der Vorhersage und dem tatsächlichen Bild codieren. Wenn sich also ein großer Block des Bildes über den Bildschirm bewegt, sagt der Codec im Grunde genommen, nimm diese Pixel und verschiebe sie [x, y] Pixel in dem neuen Frame. Das ist der Grund, warum Sie diesen seltsamen Effekt erzielen, wenn Teile des Bildes auf Objekte gemalt werden, die sich in der Szene bewegen. Sie verwenden den Inhalt eines I-Frames, der falsch ist oder nicht, und wenden die Bewegung an, die beim Codieren des Videos erkannt wurde.
Es wird Ihnen nicht helfen, Ihr Problem zu beheben, aber zumindest wissen Sie jetzt, was los ist.
Antworten:
Das Problem ist auf den Videocodec zurückzuführen, der die Inter-Frame-Komprimierung verwendet.
Grundsätzlich bedeutet dies, dass zum Speichern von Größe / Bandbreite usw. die meisten Frames nicht als separates Bild gespeichert werden, sondern als Unterschied zu vorhergehenden und folgenden Frames.
Von Zeit zu Zeit wird jedoch ein vollständiger Frame gespeichert, auf den sich andere Frames beziehen können (als I-Frame bezeichnet). Wenn der I-Frame beschädigt ist, haben die Zwischen-Frames keine korrekten Daten, auf die Bezug genommen werden kann, und bis ein neuer I-Frame hinzukommt, wird der Fehler nur zusammengesetzt.
Tatsächlich steckt mehr dahinter - moderne Codecs wie h.264 verwenden die Bewegungserkennung, um vorherzusagen, wie der Zwischenrahmen aussehen wird, und können dann nur den Unterschied zwischen der Vorhersage und dem tatsächlichen Bild codieren. Wenn sich also ein großer Block des Bildes über den Bildschirm bewegt, sagt der Codec im Grunde genommen, nimm diese Pixel und verschiebe sie [x, y] Pixel in dem neuen Frame. Das ist der Grund, warum Sie diesen seltsamen Effekt erzielen, wenn Teile des Bildes auf Objekte gemalt werden, die sich in der Szene bewegen. Sie verwenden den Inhalt eines I-Frames, der falsch ist oder nicht, und wenden die Bewegung an, die beim Codieren des Videos erkannt wurde.
Es wird Ihnen nicht helfen, Ihr Problem zu beheben, aber zumindest wissen Sie jetzt, was los ist.
quelle