Domanda

Sto usando DirectShowlob in un'applicazione C# per consentire la riproduzione video. Sfortunatamente, non tutti i sistemi forniscono un codec video decente, quindi ho deciso di installare FFDShow come parte della mia installazione. Sfortunatamente questo non sembra funzionare per alcuni utenti poiché hanno già installati diversi pacchetti di codec video o utilizzano vecchie versioni. Oppure, ad esempio, Windows 7 non lo richiede più.

Quando ho giocato con LiBVLC qualche tempo fa mi hanno permesso di specificare il percorso del plug -in con tutti i codec video supportati, ma sfortunatamente non riesco a trovare qualcosa di simile con DirectShowlob.

Esiste un modo per imballare le librerie di codec richieste come parte della mia applicazione e puntare a quella cartella, oppure installare FFDShow in una cartella specifica e fare riferimento a quella?

È stato utile?

Soluzione

Un possibile approccio che potresti adottare è utilizzare la comma di registrazione com. Nel tuo file manifest si sta usando un particolare gruppo di sottocomponenti (come una sottodirectory contenente componenti FFDShow). Dovresti anche creare un manifesto per i DLL in quella sottodirectory. Il gotcha principale è che devi istanziare i tuoi oggetti da C# Simile a questo:

DsGuid MicrosoftDemux = new DsGuid("{AFB6C280-2C41-11D3-8A60-0000F81E0E4A}");
var demux = (IBaseFilter)Activator.CreateInstance(Type.GetTypeFromCLSID(MicrosoftDemux));

Una volta che hai il filtro, puoi quindi aggiungerlo al tuo grafico, lanciare ad altre interfacce o qualsiasi altra cosa tu voglia fare.

Per aiutare a creare il file manifest per i componenti FFDShow, è possibile utilizzare RegSVR42 (descritto in questa risposta: Genera file manifest per la registrazione Com Com

L'ho usato con successo per utilizzare i filtri DirectShow senza registrarli. Una cosa da tenere a mente è che i file COM devono essere nella stessa directory della tua applicazione o di una sottodirectory. Avere loro in una directory vicina non funzionerà.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top