promethee2003
Messages postés38Date d'inscriptionlundi 8 novembre 2004StatutMembreDernière intervention10 décembre 2006
-
10 déc. 2006 à 11:05
dracoon
Messages postés13Date d'inscriptionmercredi 26 avril 2006StatutMembreDernière intervention 8 février 2008
-
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 ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 10 déc. 2006 à 17:47
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
promethee2003
Messages postés38Date d'inscriptionlundi 8 novembre 2004StatutMembreDernière intervention10 décembre 2006 10 déc. 2006 à 19:26
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
promethee2003
Messages postés38Date d'inscriptionlundi 8 novembre 2004StatutMembreDernière intervention10 décembre 2006 10 déc. 2006 à 19:27
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
dracoon
Messages postés13Date d'inscriptionmercredi 26 avril 2006StatutMembreDernière intervention 8 février 2008 2 avril 2007 à 18:15
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.