Verwalten von Videobearbeitungsprojekten
[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]
[Diese API wird nicht unterstützt und kann in Zukunft geändert oder nicht mehr verfügbar sein.]
Die folgenden Tipps helfen Ihnen beim Verwalten von Projekten in DirectShow Editing Services.
Änderungen an der Zeitachse
- Wenn Sie die Zeitleiste ändern, nachdem Sie das Filterdiagramm erstellt haben, rufen Sie IRenderEngine::ConnectFrontEnd erneut auf, um das Front-End neu zu erstellen. In der Regel wirkt sich dies nicht auf den Rest des Diagramms aus. Gelegentlich muss die Render-Engine jedoch das gesamte Diagramm löschen, bevor sie das Front-End neu erstellt. (Dies geschieht beispielsweise, wenn Sie eine Gruppe hinzufügen oder entfernen.) Die ConnectFrontEnd-Methode gibt S_WARN_OUTPUTRESET zurück, um zu signalisieren, dass das Diagramm gelöscht wurde. In diesem Fall muss Ihre Anwendung den Renderingabschnitt des Graphen neu erstellen.
- Um alle Objekte vollständig aus dem Zeitleiste zu entfernen, rufen Sie die IAMTimeline::ClearAllGroups-Methode auf.
Bereinigung
- Wenn Sie mit der Verwendung einer Render-Engine fertig sind, rufen Sie die IRenderEngine::ScrapIt-Methode auf. Stellen Sie wie bei jedem COM-Objekt sicher, dass Sie jeden Schnittstellenzeiger loslassen, wenn Sie ihn verwendet haben.
- Die Render-Engine behält keine Verweisanzahl auf dem Zeitleiste bei. Lassen Sie die Zeitleiste nicht los, bevor Sie sie verwenden, und rufen Sie immer zuerst ScrapIt für die Render-Engine auf.
- Wenn Sie alle Verweise auf eine Zeitleiste freigeben, verwenden Sie keines der Objekte in diesem Zeitleiste, auch wenn Sie Verweisanzahlen für diese objekte speichern.
Mehrere Zeitachseninstanzen
- Verschieben Sie Zeitleiste Objekte nicht zwischen Zeitachsen. Jedes Objekt in einem Zeitleiste muss von diesem Zeitleiste erstellt werden. Der Zeitleiste enthält einen internen Cache mit Informationen zu den objekten, die er erstellt. Das Verschieben Zeitleiste Objekte kann den Cache stören.
- Verwenden Sie niemals dieselbe instance einer Render-Engine mit mehr als einem Zeitleiste. Das Rendermodul enthält einen Cache mit Informationen zum Zeitleiste. Mehrere Zeitachsen stören den Cache und führen zu unvorhersehbaren Ergebnissen. Wenn Sie zwei aktive Zeitachsen benötigen, erstellen Sie separate Instanzen von Render-Engines für jede Zeitleiste.
- Ein Zeitleiste kann mehr als eine Render-Engine verwenden, aber nicht gleichzeitig. Löschen Sie die alte Render-Engine, bevor Sie eine andere Render-Engine verwenden. (Dies geschieht in der Regel, wenn Sie von der Einfachen Render-Engine für die Vorschauversion zur intelligenten Render-Engine für das Schreiben von Dateien wechseln.)
Persistenz
- Das Filterdiagramm ist nicht persistent, wenn Sie das Projekt in einer XML-Datei speichern. Daher verlieren Sie alle Informationen im Zusammenhang mit der intelligenten Neukomprimierung, dem Komprimierungsformat oder den Komprimierungsparametern. Es liegt an der Anwendung, diese Parameter wiederherzustellen, nachdem sie ein Projekt geladen hat.
Zugehörige Themen