Freigeben über


So deinterlace Video

[Das dieser Seite zugeordnete Feature Windows Media Format 11 SDK ist ein Legacyfeature. Es wurde von Source Reader und Sink Writer abgelöst. Source Reader und Sink Writer wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit quellleser und Senkenschreiber anstelle des Windows Media Format 11 SDK verwendet. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]

Einige Videoquellen, z. B. Videoaufnahmekarten, liefern Videodaten für die Interlaced-Anzeige. Jeder Frame von Interlaced Video besteht aus zwei Feldern. Das obere Feld enthält die erste Zeile des Videos und jede weitere Zeile danach. Das untere Feld enthält die zweite Zeile des Videos und jede weitere Zeile danach. Ein Feld enthält also alle geraden nummerierten Zeilen und das andere alle ungeraden nummerierten Zeilen. Die Felder, aus denen ein Frame besteht, stellen geringfügig unterschiedliche Präsentationszeiten dar, sodass sie, wenn sie miteinander verknüpft sind, kein statisches Bild bilden.

Wenn Sie Video auf einem Computermonitor anzeigen möchten, sollte jeder Frame des Videos als ein Bild angezeigt werden (diese Methode zur Anzeige eines ganzen Bilds wird als progressives Video bezeichnet.) Wenn Sie Interlaced Video progressiv anzeigen, sehen die Frames aufgrund des Zeitunterschieds zwischen den beiden Feldern möglicherweise nicht richtig aus. Der Windows Media Video-Codec und der Windows Media Video Advanced Profile-Codec unterstützen beide ein Vorverarbeitungsfeature, das Interlaced Content in progressive Frames konvertiert.

Um das Codecdeinterlace-Eingabevideo zu erhalten, rufen Sie die IWMWriterAdvanced2::SetInputSetting-Methode auf. Die zu verwendende Einstellung ist g_wszDeinterlaceMode. Legen Sie den Deinterlacing-Modus auf einen der folgenden Werte fest.

Wert BESCHREIBUNG
WM_DM_NOTINTERLACED Die Eingabe ist progressiv. Verwenden Sie diese Einstellung, um das Deinterlacing zu beenden, wenn Sie zuvor den Deinterlacingmodus auf einen anderen Wert festgelegt haben.
WM_DM_DEINTERLACE_NORMAL Wählen Sie diesen Modus aus, um die geraden und ungeraden Felder eines Interlacedframes (mithilfe eines Bewegungskompensationsmechanismus) zu mischen. Vorteile:
  • Die Interlace-Artefakte der progressiven Anzeige werden erheblich reduziert.
  • Der Windows Media Video-Codec erzeugt komprimierte Videos mit höherer Qualität.
WM_DM_DEINTERLACE_HALFSIZE Wählen Sie diesen Modus aus, wenn die Ausgabeauflösung die Hälfte oder weniger der Eingabeauflösung beträgt. Verwenden Sie diesen Modus beispielsweise, wenn die Eingabevideoauflösung 640 x 480 Pixel beträgt und die Ausgabevideoauflösung 320 x 240 Pixel beträgt. Vorteile:
  • Die Interlace-Artefakte der progressiven Anzeige werden erheblich reduziert.
WM_DM_DEINTERLACE_HALFSIZEDOUBLERATE Wählen Sie diesen Modus aus, wenn die Ausgabeauflösung die Hälfte oder weniger der Eingabeauflösung beträgt und die Ausgabebildrate doppelt so hoch ist. Verwenden Sie diesen Modus beispielsweise, wenn die Eingangsvideoauflösung 640 x 480 Pixel bei 30 Interlaced Frames/s beträgt und die Ausgabevideoauflösung 320 x 240 Pixel bei 60 Frames/s beträgt. Vorteile:
  • Dies erzeugt progressive Frames von hoher Qualität, da jedes Feld in einen Frame konvertiert wird und daher keine Informationen gemischt werden müssen.
  • Die vollständige Bewegung der Interlac-Felder wird erfasst.
WM_DM_DEINTERLACE_INVERSETELECINE Wählen Sie diesen Modus aus, um telecinierte 30 Frames/s-Video in die 24 Frames/s des Originalfilms zu konvertieren. Vorteile:
  • Die Komprimierungsqualität verbessert sich erheblich, da anstelle von 30 Frames/s nur 24 Frames/Sek. codiert werden müssen.
  • Da das Ergebnis progressiv ist, werden die gleichen Komprimierungs- und Anzeigevorteile der Deinterlacing realisiert.
WM_DM_DEINTERLACE_VERTICALHALFSIZEDOUBLERATE Wählen Sie diesen Modus aus, wenn die vertikale Ausgabeauflösung die Hälfte oder weniger der vertikalen Eingangsauflösung beträgt und die Ausgabebildrate doppelt so hoch ist. Die vertikale Videoauflösung der Eingabe beträgt z. B. 640 x 480 Pixel bei 30 bildern/s und die vertikale Videoauflösung für die Ausgabe 320 x 240 Pixel bei 60 Frames/s. Vorteile:
  • Dies erzeugt progressive Frames von hoher Qualität, da jedes Feld in einen Frame konvertiert wird und daher keine Informationen gemischt werden müssen.
  • Die vollständige Bewegung der Interlac-Felder wird erfasst.

Legen Sie für gemischte Inhalte den Deinterlacing-Modus nach Bedarf fest, bevor Sie Beispiele eines neuen Typs übergeben. Wenn Sie beispielsweise mit der Codierung mit progressiver Eingabe beginnen möchten, müssen Sie keinen Deinterlacingmodus festlegen. Wenn einige Beispiele dann eine normale Deinterlacing erfordern, müssen Sie den Deinterlacing-Modus auf WM_DM_DEINTERLACE_NORMAL festlegen. Um dann weitere progressive Beispiele zu verarbeiten, müssen Sie den Deinterlacing-Modus auf WM_DM_NOTINTERLACED festlegen.

Inverse Telecine-Einstellungen

Eine Beschreibung von inverse Telecine finden Sie unter To Use Inverse Telecine.

Wenn Sie den Deinterlacingmodus auf WM_DM_DEINTERLACE_INVERSETELECINE festlegen, können Sie das Telecine-Muster des ersten Eingabeframes angeben, indem Sie IWMWriterAdvanced2::SetInputSetting aufrufen. Die zu verwendende Einstellung ist g_wszInitialPatternForInverseTelecine. Legen Sie das anfangsmuster auf einen der folgenden Werte fest.

Wert BESCHREIBUNG
WM_DM_IT_DISABLE_COHERENT_MODE Gibt an, dass die Eingabemedien den Telecine-Prozess durchlaufen haben, dass sich die Frames jedoch nicht mehr in einem vorhersagbaren Muster befinden. Dies gibt in der Regel an, dass die Medien nach der Telecine-Verarbeitung bearbeitet wurden. Wenn Sie diese Einstellung verwenden, versucht der Codec, die ursprünglichen Frames selbst zu rekonstruieren.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_AA_TOP Gibt an, dass das obere Feld des AA-Frames das erste Beispiel ist.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_BB_TOP Gibt an, dass das obere Feld des BB-Frames das erste Beispiel ist.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_BC_TOP Gibt an, dass das obere Feld des BC-Frames das erste Beispiel ist.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_CD_TOP Gibt an, dass das obere Feld des CD-Frames das erste Beispiel ist.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_DD_TOP Gibt an, dass das obere Feld des DD-Frames das erste Beispiel ist.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_AA_BOTTOM Gibt an, dass das untere Feld des AA-Frames das erste Beispiel ist.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_BB_BOTTOM Gibt an, dass das untere Feld des BB-Frames das erste Beispiel ist.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_BC_BOTTOM Gibt an, dass das untere Feld des BC-Frames das erste Beispiel ist.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_CD_BOTTOM Gibt an, dass das untere Feld des CD-Frames das erste Beispiel ist.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_DD_BOTTOM Gibt an, dass das untere Feld des DD-Frames das erste Beispiel ist.

Erweiterte Themen