Obtenga la duración de Mp3 usando Shell32.Shell

Tengo el siguiente código para obtener la duración del archivo mp3, pero devuelve una cadena vacía. El archivo se encuentra en la unidad c:

private string GetDuration(string FileFullPath)
{
    string duration = "";
    string fName = FileFullPath.Substring(FileFullPath.LastIndexOf("\\") + 1);
    string filePath = FileFullPath.Substring(0, FileFullPath.LastIndexOf("\\"));
    Shell32.Shell shell = new Shell32.ShellClass();
    Shell32.Folder folder = shell.NameSpace(filePath);
    Shell32.FolderItem folderItem = folder.ParseName(fName);
    if (folderItem != null)
    {
        duration = folder.GetDetailsOf(folderItem, 21); //Only Empty for 21
    }
    folderItem = null;
    folder = null;
    shell = null;
    return duration;
}

preguntado el 08 de febrero de 14 a las 12:02

¿De dónde viene el 21? De acuerdo con esta documentación, solo se documentan los valores -1 a 4: msdn.microsoft.com/en-us/library/windows/desktop/… -

Mire aquí. El audio es {64440490-4C8B-11D1-8B70-080036B11A03}, la propiedad de longitud es 3, la unidad es milisegundos. -

Gracias Hans, agregué esta cadena prop = (string)itm2.ExtendedProperty("{64440490-4C8B-11D1-8B70-080036B11A03} 3"); da el error: No se puede convertir el objeto de tipo 'System.UInt64' para escribir 'System.String'. -

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.