begin process at 2012 02 14 07:04:37
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Multimédia

 > 

DirectX

 > 

afficher la durée d'un film


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

afficher la durée d'un film

lundi 21 avril 2008 à 20:41:38 | afficher la durée d'un film

Clad49

Salut !
Je cherche un moyen d'aaficher la durée d'un film a partir d'un fichier avi . Comment faire ?
(mciSendString ? mediainfo.dll ?)

merci

Clad
mardi 22 avril 2008 à 07:41:01 | Re : afficher la durée d'un film

PCPT

Administrateur CodeS-SourceS
salut,
mci est approprié oui, mais de mémoire tu est obligé de commencer à le charger, donc de mettre en place le process d'ALIAS

(juste pour dire que je crois que çà ne se fera pas juste en une ligne de code)
++

Prenez un instant pour répondre à ce sondage svp
mardi 22 avril 2008 à 08:02:38 | Re : afficher la durée d'un film

PCPT

Administrateur CodeS-SourceS
et voilà
http://www.codyx.org/snippet_obtenir-duree-fichier-avi_583.aspx

++

Prenez un instant pour répondre à ce sondage svp
mardi 22 avril 2008 à 15:19:50 | Re : afficher la durée d'un film

Clad49

lut !

Mici pour ta réponce rapide (comme d'hab ;)

J'ai des petits pb a retraduire le code en vb 2008.

Voila ce que j'ai du faire :

Private

DeclareFunction mciExecute Lib"winmm.dll" (ByVal lpstrCommand AsString) AsLong

PrivateDeclareFunction mciSendString Lib"winmm.dll"Alias"mciSendStringA" (ByVal lpstrCommand AsString, ByVal lpstrReturnString AsString, ByVal uReturnLength AsLong, ByVal hwndCallback AsLong) AsLong

Function GetAviDuration(ByVal sPath AsString) AsLong

' retourne la dur,e du fichier AVI en secondes

Dim sAlias AsString

Dim lRet AsLong

Dim sBuffer AsString

sAlias =

"FONCTION_MCI_" & CStr(Now)

' chargement

Call mciExecute("OPEN " & sPath & " TYPE AVIVIDEO ALIAS " & sAlias & " STYLE POPUP")

' on r,cup¦re les ms totales

sBuffer =

NewString(128, vbNullChar) '  ERREUR ICI !!!!

Call mciSendString("SET " & sAlias & " TIME FORMAT MS", sBuffer, Len(sBuffer), 0&)

lRet = mciSendString(

"STATUS " & sAlias & " LENGTH", sBuffer, Len(sBuffer), 0&)

' retour

GetAviDuration = Val(LeftB$(sBuffer, InStr(sBuffer, vbNullChar))) \ 1000

' stop

Call mciExecute("CLOSE " & sAlias)

EndFunction

PublicSharedFunction LeftB(ByVal stTarget AsString, ByVal iByteSize AsInteger) AsString

Return MidB(stTarget, 1, iByteSize)

EndFunction

PublicSharedFunction MidB(ByVal stTarget AsString, ByVal iStart AsInteger) AsString

Dim hEncoding As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift_JIS")

Dim bBytes AsByte() = hEncoding.GetBytes(stTarget)

Return hEncoding.GetString(bBytes, iStart - 1, bBytes.Length - iStart + 1)

EndFunction

PublicSharedFunction MidB(ByVal stTarget AsString, ByVal iStart AsInteger, ByVal iByteSize AsInteger) AsString

Dim hEncoding As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift_JIS")

Dim bBytes AsByte() = hEncoding.GetBytes(stTarget)

Return hEncoding.GetString(bBytes, iStart - 1, iByteSize)

EndFunction

PublicSharedFunction RightB(ByVal stTarget AsString, ByVal iByteSize AsInteger) AsString

Dim hEncoding As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift_JIS")

Dim bBytes AsByte() = hEncoding.GetBytes(stTarget)

Return hEncoding.GetString(bBytes, bBytes.Length - iByteSize, iByteSize)

EndFunction

PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

OpenFileDialog1.ShowDialog()

MsgBox(GetAviDuration(OpenFileDialog1.SafeFileName))

EndSubJ'ai du trouver comment faire pour remplacé les leftB et les autres non connu sous net.

Mais tout beug :s

Clad
mardi 22 avril 2008 à 23:34:17 | Re : afficher la durée d'un film

PCPT

Administrateur CodeS-SourceS
salut,

j'touche déjà pas à 2005 alors 2008..., n'en parlons même pas

avec un peu de change un dotnetien va passer ou modifier le snippet pour 2005....
désolé

bon courage

Prenez un instant pour répondre à ce sondage svp
mercredi 23 avril 2008 à 00:12:33 | Re : afficher la durée d'un film

Clad49

Public

Class Form1

'API Windows Multmedia . laquelle on envoit des commandes

Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" ( ByVal lpstrCommand As String , ByVal lpstrReturnString As String , ByVal uReturnLength As Long , ByVal hwndCallback As Long ) As Long

 

 

Private Function DureeFichier( ByVal sFichier As String ) As String

 

 

'On cr,e un buffer de 128

Dim sRetString As String = Space(128)

 

On Error Resume Next

 

 

'on ferme fichier au cas o- il serait ouvert

mciSendString(

"close fichier" , 0, 0, 0)

'on ouvre le fichier pass, en param¦tre

mciSendString(

"open """ & sFichier & """ type MPEGVideo alias fichier" , 0, 0, 0)

'on r¦gle le format temporel sur milliseconde

mciSendString(

"set fichier time format ms" , 0, 0, 0)

'on r,cup¦re la dur,e du fichier dans le buffer

mciSendString(

"status fichier length" , sRetString, 128, 0)

'on passe cette dur,e . la fonction FormatTemps et on l'affecte . la valeur de notre fonction

DureeFichier = FormatTemps(

CDbl (Replace(sRetString, Chr(0), "" ) / 1000))

'et enfin on ferme fichier

mciSendString(

"close fichier" , 0, 0, 0)

End Function

'Fonction qui renvoie la dur,e format,e ainsi 00:00:00

Private Function FormatTemps( ByVal dTemps As Double ) As String

Dim lHeure As Long

Dim lMinute As Long

Dim lSeconde As Long

Dim lTemps As Long

 

 

lTemps = Math.Round(dTemps)

lHeure = Int(lTemps / 3600)

lMinute = Int((lTemps - 3600 * lHeure) / 60)

lSeconde = lTemps - 3600 * lHeure - 60 * lMinute

FormatTemps = Format(lHeure,

"00" ) & ":" & Format(lMinute, "00" ) & ":" & Format(lSeconde, "00" )

End Function

 

Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

OpenFileDialog1.ShowDialog()

MsgBox(DureeFichier(OpenFileDialog1.SafeFileName))

End Sub

End

Class

Version qui fonctionne en vb 2008

Clad
mercredi 23 avril 2008 à 00:27:39 | Re : afficher la durée d'un film

PCPT

Administrateur CodeS-SourceS
ah mais çà va pas du tout çà Clad

déjà pour l'API c'est en interger (déclaration) pour dotnet

ensuite la moitié est codé à la VB6
"on error resume next" ???
d'une part il faudrait remplacer par un catch, d'autre pourquoi veux-tu qu'il y ait une erreur, il y a un retour de l'API pour te signaler de lire l'erreur par l'API getlasterror

space(128), à mon avis çà n'existe pas en dotnet, il te faut décocher la compatibilité de langage
çà doit être un stringbuilder puis var.lenght=128
(ce qui va ensuite poser problème pour le passage d'argument à l'API)

je suis certain qu'il y a bien plus DOTNET à faire que ce code

fais un tour dans les sources existantes dans le doute...
++ bonne soirée

Prenez un instant pour répondre à ce sondage svp
mercredi 23 avril 2008 à 21:01:57 | Re : afficher la durée d'un film

Clad49

salut !

En faite c un code vb6 que g trouvé sur le méme site que tu ma donnée.
Le space(128) et une chose que j'ai remplacé (origine : Dim sRetString As String * 128, pas reconnue en vb 2005 ou 2008)
Le code que j'ai posté en dernier fonctionne, je ne l'ai pas encore optimisé bientot peut étre.
Je n'ai pas trouvé d'aide plus DotNet comme tu dit ;)

Clad
mercredi 23 avril 2008 à 21:02:52 | Re : afficher la durée d'un film


Cette discussion est classée dans : afficher, durée, film


Répondre à ce message

Sujets en rapport avec ce message

Connaitre la durée d'un Avi [ par fluminis ] lu tous,je sais pas si je suis dans la bonne categorie mais bon je teste quand meme.Voila je cherche a recuperer la durée d'un film avi.J'utilise les enregistrement d'une heure [ par Botanique ] Bonjour,je travaille sous VS 2005 à la réalisation d'un logiciel de gestion de film. Dans mon Dataset, j'ai une table regroupant les données du film d Affichade d'un AVI [ par Cjvg ] Bonjour à tous, Je souhaiterais afficher un Film .AVI dans un controle WindowsMediaPlayer. La difficulté que je recontre c'est de l'afficher non ani afficher image au secour [ par mich3009 ] Bonjour,J'ai fais un programme qui gère mes films DVD en vb6, je voudrais rajouter une photo pour chaque film, mes photos sont dans un répertoire sur afficher l'heure [ par kimat ] salamcomment afficher l'heure dans une application vb.et Afficher dynamiquement la valeur de la couleur pointée par la souris sur une image [ par Gnomed ] Bonjour,Dans mon projet (en vb.net) j'affiche une image dans une picturebox, et j'aimerais pouvoir afficher la valeur de la couleur pointée par la sou ComboBox afficher la liste des items [ par yoyolux ] J ai un ptit probleme je n'arrive pas a afficher la liste des Items dans ma comcobox, ci-dessous le code Sub Search_Resources_QuandClic()     UserFo Recherche Base de données en VB [ par onwebdan ] Bonjour à tous, voici ma situation.Cela fait plusieurs jours que je tourne en rond pour quelque chose qui doit pourtant être simple !!!J'ai créé une B Recherche de shamp VB.NET + Access 2000 [ par seb57sk8 ] Bonjours a tous et a toutes,Voila mon problème, je dispose d'une interface développé en Visual Basic (Dotnet) et d'une base de donnée Access 2000.La b


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,640 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales