AVI Mux-Filter
Der AVI Mux-Filter akzeptiert mehrere Eingabestreams und überlagert sie im AVI-Format. Der Filter verwendet separate Eingabepins für jeden Eingabestream und einen Ausgabepin für den AVI-Stream.
Videoerfassungs- oder -erstellungsanwendungen können diesen Filter verwenden, um Dateien im AVI-Format auf dem Datenträger zu speichern. Der Filter ist in der Regel mit dem File Writer-Filter verbunden, kann jedoch eine Verbindung mit jedem Filter herstellen, dessen Eingabepin die IStream- und IMemInputPin-Schnittstellen unterstützt.
| Bezeichnung | Wert |
|---|---|
| Filterschnittstellen | IBaseFilter, IConfigAviMux, IConfigInterleaving, IMediaSeeking, IPersistMediaPropertyBag, ISpecifyPropertyPages |
| Eingabepin-Medientypen | Alle Haupttypen, die einem FOURCC-Format im alten Stil entsprechen, oder MEDIATYPE_AUXLine21Data. (Weitere Informationen finden Sie unter FOURCCMap-Klasse.)
|
| Eingabepinschnittstellen | IAMStreamControl, IMemInputPin, IPin, IPropertyBag, IQualityControl |
| Ausgabepin-Medientypen | MEDIATYPE_Stream, MEDIASUBTYPE_Avi |
| Ausgabe-PIN-Schnittstellen | IPin, IQualityControl |
| Filtern der CLSID | CLSID_AviDest |
| Eigenschaftenseite CLSID | CLSID_AviMuxProptyPage, CLSID_AviMuxProptyPage1 |
| Ausführbare Datei | qcap.dll |
| Verdienst | MERIT_DO_NOT_USE |
| Filterkategorie | CLSID_LegacyAmFilterCategory |
Bemerkungen
In den folgenden Anmerkungen werden verschiedene Aspekte der Funktionalität des AVI Mux-Filters beschrieben.
Pins
Wenn der AVI Mux-Filter erstellt wird, verfügt er über einen Eingabepin. Wenn jeder Eingabepin verbunden ist, erstellt der Filter einen neuen Eingabepin.
Streameigenschaften
Die Eingabepins unterstützen die IPropertyBag-Schnittstelle zum Festlegen von Eigenschaften für einzelne Streams. Derzeit ist die folgende Eigenschaft definiert:
| Eigenschaft | BESCHREIBUNG |
|---|---|
| name | Der Name des Datenstroms. Diese Eigenschaft wird als Block 'strn' geschrieben. |
Wenn der Filter ausgeführt wird oder angehalten wird, gibt die IPropertyBag::Write-Methode VFW _ E _ WRONG STATE _ zurück.
Frameraten
Wenn der Upstreamfilter keine Bildfrequenz im AvgTimePerFrame-Element der VIDEOINFOHEADER-Struktur ansteuert, verwendet der AVI Mux die Zeitstempel auf dem ersten Videoframe. Das AVI-Dateiformat unterstützt keine variablen Frameraten.
Gelöschte Frames
Der AVI Mux-Filter berechnet gelöschte Frames basierend auf den Medienzeiten der einzelnen Stichproben, sofern verfügbar, oder auf den Zeitstempeln der Stichprobe. Es schreibt einen Indexeintrag der Länge 0 (null) für jeden gelöschten Frame.
IMediaSeeking
Der AVI Mux-Filter implementiert die IMediaSeeking-Schnittstelle wie folgt:
- Die GetCurrentPosition-Methode gibt den aktuellen Fortschritt des Multiplexings zurück. Wenn Sie eine Datei transcodieren (langsamer als in Echtzeit), ist dieser Wert genauer als der Wert, der vom Filter Graph Manager zurückgegeben wird. Weitere Informationen finden Sie im Abschnitt "Hinweise" der Referenzseite zu GetCurrentPosition.
- Die GetDuration-Methode fragt jeden Upstreamfilter ab und gibt die Dauer des längsten Streams zurück. Wenn einer dieser Filter den GetDuration-Aufruf fehlschlägt (oder IMediaSeeking nicht unterstützt), gibt DER AVI Mux einen Fehlercode zurück und füllt den pDuration-Parameter mit der längsten gefundenen Dauer aus. In diesem Fall ist der Wert von pDuration jedoch nicht notwendigerweise die Länge des längsten Eingabestreams.
- Der AVI Mux implementiert nicht die Methoden GetStopPosition, GetPositions, GetAvailable, GetRate oder GetPreroll. und implementiert auch keine * Set-Methoden für Suchmethoden.
AVI 2.0-Dateiformaterweiterungen
DirectShow unterstützt derzeit die folgenden AVI 2.0-Dateiformaterweiterungen:
- Höhere GRÖßE der AVI-Datei (größer als 1 GB)
- Hierarchische Indizierung
Weitere Informationen finden Sie in Version 1.02 der OpenDML AVI-Dateiformaterweiterungen, die im OpenDML AVI M-JPEG File Format Subcommittee veröffentlicht wurde.