This answer sobre P/Invoke para Shell32 me recordó al Windows API Code Pack para acceder a las API comunes de Windows Vista/7/2008/2008R2.
Fue muy fácil, utilizando la demostración de PropertyEdit en las muestras incluidas, averiguar la API de Shell32 para obtener varias propiedades de archivos de medios, como la duración.
Asumo la misma condición se aplica por tener instalados los demultiplexores adecuados, pero era bastante simple, ya que sólo requiere la adición de referencias a Microsoft.WindowsAPICodePack.dll
y Microsoft.WindowsAPICodePack.Shell.dll
y el siguiente código:
using Microsoft.WindowsAPICodePack.Shell;
using Microsoft.WindowsAPICodePack.Shell.PropertySystem;
using (ShellPropertyCollection properties = new ShellPropertyCollection(filePath))
{
foreach (IShellProperty prop in properties)
{
string value = (prop.ValueAsObject == null) ? "" : prop.FormatForDisplay(PropertyDescriptionFormatOptions.None);
Console.WriteLine("{0} = {1}", prop.CanonicalName, value);
}
}
using (ShellObject shell = ShellObject.FromParsingName(filePath))
{
// alternatively: shell.Properties.GetProperty("System.Media.Duration");
IShellProperty prop = shell.Properties.System.Media.Duration;
// Duration will be formatted as 00:44:08
string duration = prop.FormatForDisplay(PropertyDescriptionFormatOptions.None);
}
Algunas propiedades comunes para una MPEG-4/AAC archivo multimedia de audio:
System.Audio.Format = {00001610-0000-0010-8000-00AA00389B71}
System.Media.Duration = 00:44:08
System.Audio.EncodingBitrate = ?56kbps
System.Audio.SampleRate = ?32 kHz
System.Audio.SampleSize = ?16 bit
System.Audio.ChannelCount = 2 (stereo)
System.Audio.StreamNumber = 1
System.DRM.IsProtected = No
System.KindText = Music
System.Kind = Music
¿Dónde está esta API de DirectShot? ¿Puedes darme también la url de esta tercera parte? ¿O quieres decir k lite mega paquete de códec? – MonsterMMORPG
bien probado un archivo y muestra la duración NAN: D – MonsterMMORPG
Gracias esta línea da la duración correcta en segundos: mediaDet.get_StreamLength (out mediaLength); – MonsterMMORPG