Festlegen von Eigenschaften in der Dateisenke
Die ASF-Dateisenke ist eine Implementierung von VONMEDIASink, die von Media Foundation bereitgestellt wird, die eine Anwendung zum Archivieren von ASF-Mediendaten in einer Datei verwenden kann. Informationen zum Objektmodell und zur allgemeinen Verwendung von ASF-Mediensenken finden Sie unter ASF-Mediensenken.
Nach dem Erstellen der ASF-Dateisenkemuss sie mit Informationen zu den Streams in der Ausgabedatei konfiguriert werden. Dieses Verfahren wird unter Hinzufügen von Streaminformationen zur ASF-Dateisenkebeschrieben. Sie können je nach Codierungstyp zusätzliche Eigenschaften für die Dateisenke festlegen. Leaky-Buckets; allgemeine Dateieigenschaften. Diese Einstellungen sind nicht im endgültigen ASF-Headerobjekt geschrieben. In diesem Thema wird beschrieben, wie diese Eigenschaften im Eigenschaftenspeicher der Dateisenke hinzugefügt werden.
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 ContentInfo-Objektverweis der Dateisenke auf.
Stream Encoding Properties
Um Inhalte ordnungsgemäß zu codieren, muss die Datei bestimmte Codierungsinformationen wie den Typ der Codierung und die zugehörigen Codierungsparameter kennen. Diese Werte werden in der Dateisenke als Eigenschaftswerte in einem Eigenschaftenspeicher festgelegt, der vom ASF ContentInfo-Objekt verwaltet wird. Wenn Sie die Dateisenke vor der Instanziierung der relevanten Encoder konfigurieren, können Sie das ContentInfo-Objekt mit allen aufgefüllten Eigenschaften verwenden, um die Windows Medienencoder zu erstellen. In diesem Fall werden die Eigenschaften automatisch für die instanziierten Encoder festgelegt. Wenn Sie die Encoder dagegen vor der Senke erstellen, stellen Sie sicher, dass die Eigenschaften, die Sie für die Encoder festlegen, in den Eigenschaftenspeicher der Dateisenke kopiert werden.
Um Codierungseigenschaften festzulegen, benötigen Sie Zugriff auf den Eigenschaftenspeicher der Dateisenke auf Streamebene. Übergeben Sie die Streamnummer im wStreamNumber-Parameter der IMFASFContentInfo::GetEncodingConfigurationPropertyStore-Methode. Die Streamnummern müssen mit den Werten übereinstimmen, die beim Konfigurieren der einzelnen Datenströme im Profil festgelegt wurden. Eigenschaftswerte werden durch Aufrufen von IPropertyStore::SetValuefestgelegt. 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 Leaky-Bucketparameter, 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 Medientypaushandlung 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 eine Verknüpfung mit wmcodecdspuuid.lib erstellen, um ihre 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::SetValuefestgelegt. 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 im bucket leaky freigegeben wird. Dieser Eigenschaftswert gibt die erste Sendezeit an. Der Multiplexer verwendet diesen Wert, um die nachfolgenden Sendezeiten für die generierten Pakete zu berechnen, und stellt sicher, dass Daten kontinuierlich durch den bucket leaky fließen. |
| MFPKEY _ ASFMEDIASINK _ AUTOADJUST _ BITRATE | Dieser BOOL-Wert gibt an, ob der Multiplexer die Bitrate automatisch anpassen muss, um sicherzustellen, dass die Daten nicht überlaufen. |
| MFPKEY _ ASFMEDIASINK _ DRMACTION | Dies gibt die DRM-Aktion der ASF-Mediensenke für die Dateigenerierung an. In dieser Version wird nur die DRM-Transcodierung unterstützt. |