So verwenden Sie videoverschachtelte Videos

Es gibt zwei grundlegende Arten der Videocodierung: progressive und interlaced. Bei der progressiven Codierung ist jeder Frame eine codierte Darstellung eines Videoframes. Bei der Interlacingcodierung ist jeder Frame eine codierte Darstellung aller geraden Pixelzeilen im Video oder aller ungeraden Zeilen. Jeder geschachtelte Frame wird als Feld bezeichnet, sodass es ungerade Felder und sogar Felder gibt. Eine Verschachtelungsanzeige (z. B. ein Fernsehgerät) rendert die Felder einzeln und abwechselnde Felder. Bei einer progressiven Anzeige werden Frames auf einmal gerendert.

Der Windows Media Video 9 Advanced Profile-Codec bietet Unterstützung für die Verwaltung von Interlacing in komprimierten Streams.

Verwendung von Verschachtelungsvideos

Die Codierung von Interlacingvideos ist nur nützlich, wenn der Inhalt auf einem Gerät mit Zeilensprung angezeigt wird. Inhalte, die auf einem Fernsehgerät (über eine Set-Top-Box oder ein anderes Gerät) angezeigt werden sollen, müssen möglicherweise übersprungen werden. Inhalte, die ausschließlich auf einer Computeranzeige angezeigt werden sollen, sollten nicht als Interlacing codiert werden.

Um interlaced video als progressives Video zu codieren, müssen Sie Eingabeeinstellungen konfigurieren. Weitere Informationen finden Sie unter Deinterlace Video.

Feldreihenfolge

Die meisten Quellen von videoverschachtelten Videos, z. B. Videoaufnahmekarten, stellen Videobeispiele bereit, die beide Felder enthalten, die miteinander verschachtelt sind. Das Ergebnis ist wie ein vollständiger Videorahmen, mit der Ausnahme, dass die ungeraden und geraden Zeilen leicht in der Zeit verschoben werden. Es gibt keinen universellen Standard dafür, welches Feld im überlappenden Videobeispiel zuerst auftritt.

Sie sollten es Benutzern ermöglichen, die Feldreihenfolge anzugeben, wenn sie Beispiele mit Zeilensprung an Ihre Anwendung übergeben.

Codieren von Video mit Zeilensprung

Führen Sie die folgenden Schritte aus, um die interlaced-Codierung zu verwenden:

  1. Konfigurieren Sie den Videostream im Profil für die Verwendung der Inhaltstyp-Dateneinheitenerweiterung, indem Sie die IWMStreamConfig2::AddDataUnitExtension-Methode aufrufen. Die GUID der Beispielerweiterung für die Inhaltstyperweiterung ist WM _ SampleExtensionsGUID _ ContentType.
  2. Legen Sie den Stream im Profil fest, und konfigurieren Sie den Writer wie gewohnt mit dem Profil.
  3. Rufen Sie vor der Übergabe von Interlacingbeispielen an den Writer die IWMWriterAdvanced2::SetInputSetting-Methode auf, um die _ g wszInterlacedCoding-Eingabeeinstellung auf TRUE festzulegen.
  4. Rufen Sie für jedes Interlacingbeispiel, das Sie an den Writer übergeben, die INSSBuffer3::SetProperty-Methode auf, um den Inhaltstyp festzulegen. Inhaltstypwerte sind Kombinationen der Flags in der folgenden Tabelle.
Flag Beschreibung
WM _ CT _ INTERLACED Legen Sie dieses Flag immer fest, wenn Sie Inhalte mit Zeilensprung codieren. Wenn Sie dieses Flag verwenden, ohne ein Feldreihenfolgeflag (WM CT BOTTOM FIELD FIRST oder WM CT TOP FIELD FIRST) festzulegen, _ geht der Codec _ davon _ _ _ _ _ _ aus, dass das oberste Feld zuerst ist. Wenn der Codec die falsche Feldreihenfolge verwendet, sollte dies keine Auswirkungen auf die Imagequalität haben, aber die Codierungseffizienz wird beeinträchtigt.
WM _ CT _ BOTTOM _ FIELD _ FIRST In Kombination mit dem WM _ CT _ INTERLACED-Flag gibt dieses Flag an, dass das untere Feld (das Feld, das mit der zweiten Zeile im Beispiel beginnt) erstmalig auftritt.
WM _ CT _ TOP _ FIELD _ FIRST In Kombination mit dem WM _ CT _ INTERLACED-Flag gibt dieses Flag an, dass das obere Feld (das Feld, das mit der ersten Zeile im Beispiel beginnt) erstmalig auftritt.
WM _ CT _ REPEAT _ FIRST _ FIELD Gibt an, dass das erste Feld im Beispiel bei der Wiedergabe wiederholt werden soll. Dieses Flag wird für Videos verwendet, die vom Telekopierungsprozess aus dem Film erstellt wurden. Wenn in Verbindung mit diesem Flag kein Flag für die Feldreihenfolge festgelegt wird, wird davon ausgegangen, dass das oberste Feld erstmals auftritt.

Hinweis

Wenn das WM _ CT _ INTERLACED-Flag nicht festgelegt ist, wird davon ausgegangen, dass das Beispiel einen progressiven Videoframe enthält.

Decodieren von Video mit Zeilensprung

Beim Decodieren von Interlacingvideos müssen Sie die Einstellung g _ wszAllowInterlacedOutput mithilfe der IWMReaderAdvanced2::SetOutputSetting-Methode auf TRUE festlegen. Andernfalls liefert der Codec progressive Frames.

Die Inhaltstyp-Dateneinheitenerweiterung wird in den Ausgabebeispielen beibehalten. Sie sollten die Feldausrichtung an das Renderinggerät übergeben, um eine ordnungsgemäße Wiedergabe sicherzustellen.

Weiterführende Themen