Home / Programmazione / C# - Asp.NET / Calcolare la durata di file video in C#
Mattepuffo

Calcolare la durata di file video in C#

Calcolare la durata di file video in C#

Il Framework .NET di default non mette a disposizione nessuna libreria per calcolare la durata di un file video.

Per farlo abbiamo bisogno di librerie esterne.

Le più accreditate sono il Windows Media Player SDK e il DirectX SDK.

Col primo però sono riuscito a calcolare la durata solo di alcuni tipi di file, quindi ho usato il secondo.

Scaricatelo da qua e installatelo.

Dopo di che dobbiamo aggiungere il refernce al progetto.

Su Visual Studio cliccate col destro sul progetto e poi su Add reference.

Io ho aggiunto due librerie:

  • C:\Windows\Microsoft.NET\DirectX for Managed Code\1.0.2902.0\Microsoft.DirectX.dll
  • C:\Windows\Microsoft.NET\DirectX for Managed Code\1.0.2902.0\Microsoft.DirectX.AudioVideoPlayback.dll

A questo punto creiamoci un metodo nel code-behind della pagina da richiamare quando ci serve (ad esempio dopo aver effettuato un upload):

 

protected double calcolaDurata()
{
Microsoft.DirectX.AudioVideoPlayback.Video video = new Microsoft.DirectX.AudioVideoPlayback.Video("file.avi");
double durata = video.Duration;
video.Dispose();
return durata;
}

La classe AudioVideoPlayback del namespace Microsoft.DirectX contiene tutte le proprietà e i metodi per riprodurre file video, inclusi quelli per l'audio.

Prima di tutto creiamo un ogetto di classe AudioVideoPlayback.

Il metodo Video richiede almeno una string che corrisponde al path del file; volendo è possibile passargli anche un bool per l'autorun (ma in questo caso non ci serve).

La durata la calcoliamo con la proprietà Duration, che ritorna i secondi di durata del file in secondi e restituisce un double.

Con Dispose() rilasciamo la risorsa.