Schreiben von Datenströmen mit nicht quadratischen Pixeln
[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.]
Es gibt zwei Möglichkeiten, Videostreams mit nicht quadratischen Pixeln zu erstellen, die in Windows Medienwiedergabe richtig angezeigt werden. Die erste Technik umfasst das Festlegen von Attributen auf Streamebene im Dateiheader. Die zweite Technik umfasst das Hinzufügen einer Dateneinheitserweiterung zu einem Stream im Profil und das anschließende Festlegen eines Werts für diesen In jedem geschriebenen Beispiel.
So verwenden Sie Headerattribute auf Streamebene, um das Pixelseitenverhältnis festzulegen
- Richten Sie das Writer-Objekt ein. Weitere Informationen finden Sie unter Schreiben von ASF-Dateien.
- Erstellen oder laden Sie ein Profil mit einem oder mehreren Videostreams. Weitere Informationen finden Sie unter So verwenden Sie Profile mit dem Writer.
- Rufen Sie IWMWriter::SetProfile auf. (Rufen Sie diese Methode immer auf, bevor Sie Headerattribute festlegen.)
- Rufen Sie QueryInterface auf, um die IWMHeaderInfo3-Schnittstelle abzurufen, und rufen Sie AddAttribute zweimal auf, um AspectRatioX und AspectRatioY als Attribute auf Streamebene des Videostreams hinzuzufügen. Diese Attribute sind DWORD-Werte .
- Schreiben Sie die Datei.
So verwenden Sie Dateneinheitserweiterungen zum Festlegen des Pixelseitenverhältnisses
Vor dem Schreiben:
- Richten Sie das Writer-Objekt ein. Weitere Informationen finden Sie unter Schreiben von ASF-Dateien.
- Erstellen oder laden Sie ein Profil mit einem oder mehreren Videostreams. Weitere Informationen finden Sie unter So verwenden Sie Profile mit dem Writer.
- Rufen Sie für jeden Stream (eines beliebigen Medientyps) im Profil IWMStreamConfig::SetStreamName auf, um einen eindeutigen Namen Ihrer Wahl anzugeben. Geben Sie zwei Streams nicht denselben Namen.
- Verwenden Sie IWMStreamConfig2::AddDataUnitExtension im Videostream, um eine Dateneinheitserweiterung für das Pixelseitenverhältnis hinzuzufügen.
- Rufen Sie IWMWriter::SetProfile auf.
- Schreiben Sie die Datei.
Während des Schreibens:
- Rufen Sie für jedes Beispiel INSSBuffer3::SetProperty auf, und geben Sie die WM_SampleExtensionGUID_PixelAspectRatio-Eigenschaft zusammen mit dem richtigen Wert an. Seitenverhältniswerte werden als zwei verkettete zweistellige Werte geschrieben. Beispielsweise wird 16:9 als 1609 oder 0x0649 geschrieben. Dies ist immer ein 2-Byte-Wert.
Zugehörige Themen