none
Duracion archivo RRS feed

  • Pregunta

  • Hola foro,

    Solicito ayuda en lo siguiente: deseo obtener la duración de archivos de vídeo y audio de los cuales ya tengo el nombre y ubicación. 

    De antemano Gracias.

    lunes, 10 de marzo de 2014 14:37

Respuestas

  • No hay "una" forma de hacer esto. Cada clase de archivo se drivea de forma diferente.

    El sistema de propiedades del shell, tiene un servicio para extraer información de los archivos. Si el tipo de archivo tiene un handler asociado, entonces puedes disponer de ese dato, a través del shell.

    'Microsoft Shell Controls And Automation
    '/r shell32.dll   
    Imports Shell32
    Imports System.IO
    
    Module Module1
    
        Sub Main()
            Dim archivo As String = "x:\carpeta\audio.mp3"
            Dim oShell As New Shell
            Dim oFolder As Folder = oShell.NameSpace(Path.GetDirectoryName(archivo))
            Dim oItem As FolderItem = oFolder.ParseName(Path.GetFileName(archivo))
    
            Console.WriteLine("Duración: {0}", oFolder.GetDetailsOf(oItem, 27))
    
            oItem = Nothing
            oFolder = Nothing
            oShell = Nothing
    
            Console.ReadKey()
    
        End Sub
    
    End Module

    Necesitas una referencia a los objetos de automation del shell.

    La columna 27 almacena la duración.

    Incluí un link en el GetDetailsOf del ejemplo, pero no se ve.

     
    lunes, 10 de marzo de 2014 15:53

Todas las respuestas

  • No hay "una" forma de hacer esto. Cada clase de archivo se drivea de forma diferente.

    El sistema de propiedades del shell, tiene un servicio para extraer información de los archivos. Si el tipo de archivo tiene un handler asociado, entonces puedes disponer de ese dato, a través del shell.

    'Microsoft Shell Controls And Automation
    '/r shell32.dll   
    Imports Shell32
    Imports System.IO
    
    Module Module1
    
        Sub Main()
            Dim archivo As String = "x:\carpeta\audio.mp3"
            Dim oShell As New Shell
            Dim oFolder As Folder = oShell.NameSpace(Path.GetDirectoryName(archivo))
            Dim oItem As FolderItem = oFolder.ParseName(Path.GetFileName(archivo))
    
            Console.WriteLine("Duración: {0}", oFolder.GetDetailsOf(oItem, 27))
    
            oItem = Nothing
            oFolder = Nothing
            oShell = Nothing
    
            Console.ReadKey()
    
        End Sub
    
    End Module

    Necesitas una referencia a los objetos de automation del shell.

    La columna 27 almacena la duración.

    Incluí un link en el GetDetailsOf del ejemplo, pero no se ve.

     
    lunes, 10 de marzo de 2014 15:53
  • Hola y gracias por visitar el foro.

    Es un gusto tenerte por acá, esperamos tus comentarios con respecto a la última respuesta de Walter. Por el momento marcaremos su respuesta como respuesta a tu consulta. Si tienes algún inconveniente te pido por favor desmarques la respuesta y déjanoslo saber. Esperamos tus comentarios al respecto.

    Saludos,

    Miguel

    MSDN/TechNet Soporte Comunidades

    Por favor, recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema.
    Es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    martes, 11 de marzo de 2014 20:24
    Moderador