Dimension et durée d'une video [Résolu]

promethee2003 38 Messages postés lundi 8 novembre 2004Date d'inscription 10 décembre 2006 Dernière intervention - 10 déc. 2006 à 11:05 - Dernière réponse : dracoon 13 Messages postés mercredi 26 avril 2006Date d'inscription 8 février 2008 Dernière intervention
- 2 avril 2007 à 18:15
Bonjour

Quelqu'un connaitrai-t'il un moyen de trouver la durée et la dimension d'une vidéo(avi) en VB 2005 ?

Merci
Afficher la suite 

5 réponses

Répondre au sujet
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 10 déc. 2006 à 17:47
+3
Utile
Salut
Comme a chaque fois qu'on cherche des infos sur des fichiers standardisés, il faut rechercher comment est définie la structure de ces fichiers.
Cette structure contient toujours trois éléments minimum :
- L'entête de reconnaissance : Pour les AVIs, les fichiers commencent toujours par ces codes hexa 52 49 46 46 (RIFF)
- Le Header : Il définit et fourni des infos sur la méthode avec laquelle il faut s'adresser pour accéder aux données.
   Il donne aussi, d'une manière structurée, quelques infos, dont la durée de la vidéo (en sec)
   --> Renseigne toi sur le format du fichier avec ce genre de recherche "avi file structure" et de site clique ici
         Comme c'est un format de Microsoft, tu peux direct aller sur www.msdn.com
- Les données

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Jack
promethee2003 38 Messages postés lundi 8 novembre 2004Date d'inscription 10 décembre 2006 Dernière intervention - 10 déc. 2006 à 19:26
0
Utile
Ok merci.

j'ai trouvé une solution (avec api) je la donne au cas ou ca interresse quelqu'un d'autre

Imports System.Runtime.InteropServices
Public Class TEST
#Region "Structure"
<structlayout(layoutkind.sequential, pack:="1)"> Private Structure AVIFILEINFO
<marshalas(unmanagedtype.u4)> Public dwMaxBytesPerSecond As Int32
<marshalas(unmanagedtype.u4)> Public dwFlags As Int32
<marshalas(unmanagedtype.u4)> Public dwCaps As Int32
<marshalas(unmanagedtype.u4)> Public dwStreams As Int32
<marshalas(unmanagedtype.u4)> Public dwSuggestedBufferSize As Int32
<marshalas(unmanagedtype.u4)> Public dwWidth As Int32
<marshalas(unmanagedtype.u4)> Public dwHeight As Int32
<marshalas(unmanagedtype.u4)> Public dwScale As Int32
<marshalas(unmanagedtype.u4)> Public dwRate As Int32
<marshalas(unmanagedtype.u4)> Public dwLength As Int32
<marshalas(unmanagedtype.u4)> Public dwEditCount As Int32
<marshalas(unmanagedtype.byvalarray, arraysubtype:="UnmanagedType.U2," sizeconst:="64)"> Public szFileType As Char()
End Structure
#End Region
#Region "Declarations"
'Fonction D'ouverture du fichier avi
Private Declare Auto Function AVIFileOpen Lib "avifil32" (ByRef ppfile As IntPtr, ByVal szFile As String, ByVal mode As Integer, ByVal pclsidHandler As Integer) As Integer
'Fonction pour relacher le fichier
Private Declare Auto Function AVIFileRelease Lib "avifil32" (ByVal pfile As IntPtr) As Integer
'Fonction pour recupurer les informations du fichier ouvert
Private Declare Auto Function AVIFi Lib "avifil32" Alias "AVIFileInfo" (ByVal pfile As IntPtr, ByRef pfi As AVIFILEINFO, ByVal lSize As Integer) As Integer
'Fonction pour initialiser l'api
Private Declare Auto Sub AVIFileInit Lib "avifil32" ()
'Fonction pour fermer l'api
Private Declare Auto Sub AVIFileExit Lib "avifil32" ()
#End Region

#Region "Constantes"
Private Const OF_SHARE_DENY_WRITE As Integer = 32
Private Const OF_READWRITE As Integer = 2
#End Region
#Region "Functions"
Function GetAviInformations() As String
Dim H_File As New IntPtr
Dim pfi As New AVIFILEINFO

AVIFileInit()

AVIFileOpen(H_File, "c:/test.avi", OF_READWRITE, 0)

'Devrait retourné 0
Debug.WriteLine(AVIFi(H_File, pfi, Marshal.SizeOf(pfi)))

AVIFileRelease(H_File)

AVIFileExit()

Return "Test"
End Function
#End Region
End Class


Merci encore</marshalas(unmanagedtype.byvalarray,></marshalas(unmanagedtype.u4)></marshalas(unmanagedtype.u4)></marshalas(unmanagedtype.u4)></marshalas(unmanagedtype.u4)></marshalas(unmanagedtype.u4)></marshalas(unmanagedtype.u4)></marshalas(unmanagedtype.u4)></marshalas(unmanagedtype.u4)></marshalas(unmanagedtype.u4)></marshalas(unmanagedtype.u4)></marshalas(unmanagedtype.u4)></structlayout(layoutkind.sequential,>
Commenter la réponse de promethee2003
promethee2003 38 Messages postés lundi 8 novembre 2004Date d'inscription 10 décembre 2006 Dernière intervention - 10 déc. 2006 à 19:26
0
Utile
désolé pour le post en vrac... je sais pas pourquoi...
Commenter la réponse de promethee2003
promethee2003 38 Messages postés lundi 8 novembre 2004Date d'inscription 10 décembre 2006 Dernière intervention - 10 déc. 2006 à 19:27
0
Utile
Imports System.Runtime.InteropServices
Public Class TEST
#Region "Structure"
<StructLayout(LayoutKind.Sequential, Pack:=1)> Private Structure AVIFILEINFO
<MarshalAs(UnmanagedType.U4)> Public dwMaxBytesPerSecond As Int32
<MarshalAs(UnmanagedType.U4)> Public dwFlags As Int32
<MarshalAs(UnmanagedType.U4)> Public dwCaps As Int32
<MarshalAs(UnmanagedType.U4)> Public dwStreams As Int32
<MarshalAs(UnmanagedType.U4)> Public dwSuggestedBufferSize As Int32
<MarshalAs(UnmanagedType.U4)> Public dwWidth As Int32
<MarshalAs(UnmanagedType.U4)> Public dwHeight As Int32
<MarshalAs(UnmanagedType.U4)> Public dwScale As Int32
<MarshalAs(UnmanagedType.U4)> Public dwRate As Int32
<MarshalAs(UnmanagedType.U4)> Public dwLength As Int32
<MarshalAs(UnmanagedType.U4)> Public dwEditCount As Int32
<MarshalAs(UnmanagedType.ByValArray, ArraySubType:=UnmanagedType.U2, SizeConst:=64)> Public szFileType As Char()
End Structure
#End Region
#Region "Declarations"
'Fonction D'ouverture du fichier avi
Private Declare Auto Function AVIFileOpen Lib "avifil32" (ByRef ppfile As IntPtr, ByVal szFile As String, ByVal mode As Integer, ByVal pclsidHandler As Integer) As Integer
'Fonction pour relacher le fichier
Private Declare Auto Function AVIFileRelease Lib "avifil32" (ByVal pfile As IntPtr) As Integer
'Fonction pour recupurer les informations du fichier ouvert
Private Declare Auto Function AVIFi Lib "avifil32" Alias "AVIFileInfo" (ByVal pfile As IntPtr, ByRef pfi As AVIFILEINFO, ByVal lSize As Integer) As Integer
'Fonction pour initialiser l'api
Private Declare Auto Sub AVIFileInit Lib "avifil32" ()
'Fonction pour fermer l'api
Private Declare Auto Sub AVIFileExit Lib "avifil32" ()
#End Region

#Region "Constantes"
Private Const OF_SHARE_DENY_WRITE As Integer = 32
Private Const OF_READWRITE As Integer = 2
#End Region
#Region "Functions"
Function GetAviInformations() As String
Dim H_File As New IntPtr
Dim pfi As New AVIFILEINFO

AVIFileInit()

AVIFileOpen(H_File, "c:/test.avi", OF_READWRITE, 0)

'Devrait retourné 0
Debug.WriteLine(AVIFi(H_File, pfi, Marshal.SizeOf(pfi)))

AVIFileRelease(H_File)

AVIFileExit()

Return "Test"
End Function
#End Region
End Class
Commenter la réponse de promethee2003
dracoon 13 Messages postés mercredi 26 avril 2006Date d'inscription 8 février 2008 Dernière intervention - 2 avril 2007 à 18:15
0
Utile
je pense qu'il y a bien plus simple en utilisant la dll wmp.dll de windows media player.
Je ne m'y connait pas trop en VB mais il me semble que cela peut entre fait en quelques lignes du moins beaucoup plus court.
Commenter la réponse de dracoon

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.