Me parece que el problema no es tanto cómo usar la biblioteca de DirectShow (the `DirectShow.Net Forum está específicamente diseñado para eso), sino más bien cómo usar un recurso incrustado.
Me encontré con algo similar hace unos años en un contrato de trabajo donde un empleador estaba preocupado de que algún cliente podría robar su información de propiedad. Mi información estaba en cientos de documentos PDF, pero la idea funciona igual para los archivos de video.
Así es como he abordado el problema:
En primer lugar, colocar el archivo de video en su lista de recursos: Consumo Visual Studio
, así que vaya a las propiedades del Project
's, haga clic en la ficha Recursos, seleccione la opción archivos y elija Add Resource
>Add Existing File...
Agregar los dos siguientes namespaces
en el fichero de código que va a utilizar:
using System.IO;
using System.Diagnostics;
- Por último, en el que desea reproducir el archivo de vídeo, acaba de hacer algo similar a lo siguiente:
Process player = null;
string tempFile = "~clip000.dat";
try {
File.WriteAllBytes(tempFile, Properties.Resources.MyMovie_AVI);
player = Process.Start(tempFile);
player.WaitForExit();
} finally {
File.Delete(tempFile);
}
más probable es que lo hará no llame al método Process.Start
, sino la aplicación método DirectShow
ropriate. La idea sigue siendo la misma: Extraiga sus recursos como una matriz byte
, escríbalos en un nuevo archivo temporal, utilice el archivo y elimínelo siempre que haya terminado.
Asegúrese de poner la declaración Delete
en el bloque finally
de manera que si se produce algún error o el usuario cierra el programa, mientras que el archivo todavía está jugando, su aplicación sigue siendo limpia el archivo antiguo.
EDIT:
Creo que esto podría ser una forma viable de hacer esto:
using (MemoryStream ms = new MemoryStream(Properties.Resources.MyMovie_AVI)) {
// Now you have to find a way in `DirectShow` to use a Stream
}
Los recursos se pueden extraer fácilmente de los ensamblados de .Net. Puede encriptar los datos, pero la clave debe estar en su código, y nuevamente el código fuente puede extraerse fácilmente de su ensamblado .Net. – habakuk
Voy a utilizar protectores como SmartAssembly. –