Festlegen von Eigenschaften in der Dateisenke

Die ASF-Dateisenke ist eine Implementierung von IMFMediaSink , die von Media Foundation bereitgestellt wird und mit der eine Anwendung ASF-Mediendaten in einer Datei archivieren kann. Informationen zum Objektmodell und zur allgemeinen Verwendung von ASF-Mediensenken finden Sie unter ASF-Mediensenken.

Nach dem Erstellen der ASF-Dateisenke muss sie mit Informationen zu den Streams in der Ausgabedatei konfiguriert werden. Dieses Verfahren wird unter Hinzufügen von Streaminformationen zur ASF-Dateisenke beschrieben. Je nach Codierungstyp können Sie zusätzliche Eigenschaften für die Dateisenke festlegen. undichte Buckets; allgemeine Dateieigenschaften. Diese Einstellungen sind nicht in das endgültige ASF-Headerobjekt geschrieben. In diesem Thema wird das Hinzufügen dieser Eigenschaften im Eigenschaftenspeicher der Dateisenke beschrieben.

Das ContentInfo-Objekt verwaltet die globalen Dateieigenschaften und die einzelnen Streameigenschaften für die Dateisenke. Informationen zum Abrufen eines Verweises auf das ASF ContentInfo-Objekt der Dateisenke finden Sie unter Erstellen der ASF-Dateisenke.

Um einen Verweis auf den Eigenschaftenspeicher der Dateisenke (IPropertyStore) abzurufen, rufen Sie IMFASFContentInfo::GetEncodingConfigurationPropertyStore für den Verweis des ContentInfo-Objekts der Dateisenke auf.

Streamcodierungseigenschaften

Um Inhalte ordnungsgemäß zu codieren, muss die Datei bestimmte Codierungsinformationen kennen, z. B. den Codierungstyp und die zugehörigen Codierungsparameter. Diese Werte werden in der Dateisenke als Eigenschaftswerte in einem Eigenschaftenspeicher festgelegt, der vom ASF ContentInfo-Objekt verwaltet wird. Wenn Sie die Dateisenke konfigurieren, bevor Sie die relevanten Encoder instanziieren, können Sie das ContentInfo-Objekt mit allen aufgefüllten Eigenschaften verwenden, um die Windows Media-Encoder zu erstellen. In diesem Fall werden die Eigenschaften automatisch für die instanziierten Encoder festgelegt. Wenn Sie hingegen die Encoder vor der Senke erstellen, stellen Sie sicher, dass die Eigenschaften, die Sie für die Encoder festlegen, in den Eigenschaftenspeicher der Dateisenke kopiert werden.

Zum Festlegen von Codierungseigenschaften benötigen Sie Zugriff auf den Eigenschaftenspeicher auf Streamebene der Dateisenke. Übergeben Sie die Streamnummer im wStreamNumber-Parameter der IMFASFContentInfo::GetEncodingConfigurationPropertyStore-Methode . Die Datenstromnummern müssen mit den Werten übereinstimmen, die beim Konfigurieren der einzelnen Datenströme im Profil festgelegt wurden. Eigenschaftswerte werden durch Aufrufen von IPropertyStore::SetValue festgelegt. In der folgenden Tabelle werden die unterstützten Eigenschaften beschrieben.

Die Eigenschaften hängen vom Typ der Codierung ab. Informationen zu den Eigenschaften und den entsprechenden Werten, die Sie festlegen müssen, finden Sie unter Codierungseigenschaften.

Leaky Bucket-Eigenschaft

Leaky Bucket-Parameter bestimmen das tatsächliche Pufferfenster, das vom Encoder für den Stream verwendet wird. Die MFPKEY_ASFSTREAMSINK_CORRECTED_LEAKYBUCKET-Eigenschaft der Dateisenke enthält die Parameter für undichte Buckets, die Bitrate, das Pufferfenster und die anfängliche Pufferfülle. Diese Eigenschaft wird im Eigenschaftenspeicher auf Streamebene für die Dateisenke festgelegt und muss festgelegt werden, nachdem Encoder erstellt und konfiguriert wurden. Dieser Wert wird in festgelegt. Während der Medientypverhandlung entscheidet der Encoder über das Pufferfenster und die zu verwendende Bitrate. Sie können diese Werte mithilfe der IWMCodecLeakyBucket-Schnittstelle abrufen, die in wmcodecifaces.h definiert ist, und Sie müssen einen Link zu wmcodecdspuuid.lib erstellen, um die Methoden aufzurufen.

Die abgerufenen Werte können für diese Eigenschaft für jeden Stream in der ASF-Dateisenke festgelegt werden.

Eigenschaften der globalen Dateisenke

Um den globalen Eigenschaftenspeicher der Dateisenke abzurufen, übergeben Sie 0 im wStreamNumber-Parameter der IMFASFContentInfo::GetEncodingConfigurationPropertyStore-Methode . Eigenschaftswerte werden durch Aufrufen von IPropertyStore::SetValue festgelegt. In der folgenden Tabelle werden die unterstützten Eigenschaften beschrieben.

Eigenschaften auf Dateiebene BESCHREIBUNG
MFPKEY_ASFMEDIASINK_BASE_SENDTIME Die Sendezeit gibt an, wann die Nutzlast innerhalb des undichten Buckets freigegeben wird. Dieser Eigenschaftswert gibt den Zeitpunkt des ersten Sendevorgangs an. Der Multiplexer verwendet diesen Wert, um die nachfolgenden Sendezeiten für die generierten Pakete zu berechnen und sicherzustellen, dass die Daten kontinuierlich durch den Leaky Bucket fließen.
MFPKEY_ASFMEDIASINK_AUTOADJUST_BITRATE Dieser BOOL-Wert gibt an, ob der Multiplexer die Bitrate automatisch anpassen muss, um sicherzustellen, dass die Daten den leaky Bucket nicht überlaufen.
MFPKEY_ASFMEDIASINK_DRMACTION Dies gibt die DRM-Aktion der ASF-Mediensenke für die Dateigenerierung an. In dieser Version wird nur DRM-Transcodierung unterstützt.

 

ASF-Mediensenken

ASF-Komponenten auf Pipelineebene

ASF-Unterstützung in Media Foundation