IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

WMP vers VLC


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2006
    Messages : 108
    Par défaut WMP vers VLC
    Bonjour,

    Je viens vers vous pour avoir un conseil et avis.
    Je suis actuellement en train de faire un programme de gestion de vidéo.
    Pour cela j'ai besoin de récupérer la durée des vidéos, je me suis servis du code suivant qui fonctionne avec Windows media player (Trouver grâce au tuto : Utiliser Windows Media Player en VB et VBA)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    'Définition de la durée du fichier
                    'Lance la lecture du fichier
                    VidGes.AxWindowsMediaPlayer1.URL = ligneF
                    'La récupération d'informations sur une séquence peut se faire uniquement 
                    'lorsque le statut de chargement "Transitioning" est atteint
                    '9 = statut "Préparation nouvelle séquence" (constante wmppsTransitioning)
                    'Demande le lectures du fichier
                    VidGes.AxWindowsMediaPlayer1.Ctlcontrols.play()
                    'Désactive le son
                    VidGes.AxWindowsMediaPlayer1.settings.mute = True
                    While VidGes.AxWindowsMediaPlayer1.playState = 9
                        My.Application.DoEvents()
                        'Arret du fichier
                        VidGes.AxWindowsMediaPlayer1.Ctlcontrols.stop()
                    End While
                    Duree = VidGes.AxWindowsMediaPlayer1.currentMedia.durationString
    Ce qui fonctionne très bien, mais hélas WMP ne lit pas tous les formats.
    Donc j'aurai voulu passer par VLC, qui lit un peu plus de format vidéo ( enfin si je me trompe pas)

    Je me suis inspiré de la version WMP pour réaliser cela mais certaines fonctions et mode ne sont pas présent ( ou il se peu que je ne l'ai trouve pas)

    Voici le code que j'ai commencé pour VLC :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     VidGes.AxVLCPlugin1.addTarget(ligneF, DBNull.Value, AXVLC.VLCPlaylistMode.VLCPlayListInsert, 0)
     
                        VidGes.AxVLCPlugin1.play()
     
                        VidGes.AxVLCPlugin1.Volume = 0
                        While VidGes.AxVLCPlugin1.getVariable(ligneF) = 9
                            My.Application.DoEvents()
                            'Arret du fichier
                            VidGes.AxVLCPlugin1.stop()
                        End While
                        'Duree = VidGes.AxVLCPlugin1.
    Pour le moment je cherche un equivalent à Playstate de WMP pour VLC et idem pour .currentMedia.durationString.

    Perso je ne sais pas si ma méthode est bonne ou si cela est adatable d'un lecteur à l'autre.

    Je me sers des infos VLC suivante pour trouver : ActiveX-VLC

    Après s'il existe un solution autre et plus simple je veux bien essayer de la comprendre et de l’adapter a mon projet.

    J'ai vue pas mal de chose pour réaliser ce que je chercher à faire mais sans réelle résolution de problème.

    Merci d'avance, pour vos conseils et avis.

    Cordialement.

  2. #2
    Membre éclairé Avatar de Chris_Dupasquier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2010
    Messages : 67
    Par défaut
    Hello,

    Personnellement je n'ai jamais essayé, mais sur codeplex tu as ceci, peut-être te serait-ce utile ?

    Lien vers codeplex

    Je regarde encore un peu, redis-nous où tu en es...

    A +

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2006
    Messages : 108
    Par défaut
    Bonjour,

    je reviens juste d'un déplacement, et constate votre réponse.

    Je regarde cela rapidement.

    Je vous remercie pour votre aide.

    Cordialement.

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2006
    Messages : 108
    Par défaut Suite #1
    Bonjour,

    Après quelques jours de lecture et de recherche, je n'ai hélas pas trouvé, ou réussi à concevoir ce que je voulais.

    Malgré l'aide de Chris_Dupasquier avec le codeplex.

    Qui d’ailleurs j'ai eu un peu de mal a comprendre. (Et oui je suis pas douer!!! ;-)).

    En faisant quelque dans l'active x de VLC j'ai trouvé une propriété Time .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Time 	Integer 	get/set 	Time elapsed in seconds playing current MRL, 0 for live feed
    Elle s'exprime en secondes, donc à moins que je me plante je devrai pouvoir avoir un début de solution.

    Si quelqu'un à une idée je suis preneur.

    Je vais continué a chercher.

    Encore merci pour l'aide.

    Cordialement.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2006
    Messages : 108
    Par défaut Suite #2
    Bonjour,

    Un peu de news, j'ai réussi à avoir le temps. Le Hic c'est que cela ne marche que sur le premier fichier et Uniquement en mode pas à pas.


    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    Imports System.IO
     
    Module Scannage
         Sub Scan()
             Try
                 Directory.GetFiles(Chemin, "*.*", SearchOption.AllDirectories)
                 Dim dossiersTrouvé = Directory.GetDirectories(Chemin)
                 For Each ligneD In dossiersTrouvé
                     VidGes.Label1.Text = ligneD
                 Next
                 Dim fichiersTrouvé = Directory.GetFiles(Chemin, "*.*", SearchOption.AllDirectories)
                 For Each ligneF In fichiersTrouvé
                     'Recuperation de l'extention
                     Extension = New System.IO.FileInfo(ligneF).Extension
                     If Extension <> ".db" Then
                         'Récuperation du Nom du Film sans l'extension
                         Film = Replace(Replace(ligneF, Chemin & "\", ""), Extension, "")
     
                         Dim MonFichier As New FileInfo(Chemin & "\" & Film & Extension)
                         Taille = MonFichier.Length
                         Taille1024 = Taille / 1024
     
                         'Définition de la durée du fichier
                         'Chargement de la localisation du fichier
                         VidGes.AxVLCPlugin1.addTarget(ligneF, DBNull.Value, AXVLC.VLCPlaylistMode.VLCPlayListInsert, 0)
                         'Mise à Zéro du volume
                         VidGes.AxVLCPlugin1.Volume = 0
                         'Lance la lecture du fichier
                         VidGes.AxVLCPlugin1.play()
     
                         'Récupération de la taille
                         Dim Taildure As Integer = VidGes.AxVLCPlugin1.Length
                         'Conversion Millseconde en Seconde
                         Dim Millsec As Integer = Taildure / 1000
                         'Modificatiion du format, format du Type hh:mm:ss
                         Dim Duree As Date = Date.FromOADate(Millsec / 24 / 3600)
     
                         'Arret de la lecture du fichier
                         VidGes.AxVLCPlugin1.stop()
     
                         VidGes.RichTextBox1.Text = VidGes.RichTextBox1.Text & Film & vbCr
                         VidGes.RichTextBox1.SelectionStart = Len(VidGes.RichTextBox1.Text)
                     End If
                 Next
             Catch ex As Exception
                 VidGes.Label1.Text = ex.Message
             End Try
         End Sub
    End Module
    La gestion de la durée est identique lors du "scannage" le programme garde la valeur du 1er fichier.

    Je pense qu'il faut que j’intègre le fichier dans la demande de mesure.
    Mais je ne vois pas comment faire pour cela??

    C'est ici que je pense que cela doit se faire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      Dim Taildure As Integer = VidGes.AxVLCPlugin1.Length
    De plus j'ai le message d'erreur suivant qui apparait durant le "scannage" des fichiers.
    Je pense que c'est due a un problème de Thread mais pas sur.

    ContextSwitchDeadlock a été détecté
    Message: Le CLR n'a pas pu effectuer de transition du contexte COM
    0x37ea10 au contexte COM 0x37eb80 pendant 60 secondes. Le thread qui
    possède le contexte/cloisonnement de destination est probablement en
    train d'attendre ou de traiter une opération très longue sans pompage
    des messages Windows. Cette situation a généralement des effets négatifs
    sur les performances et peut parfois entraîner le blocage de
    l'application ou une utilisation ininterrompue de la mémoire. Pour
    éviter ce problème, tous les threads STA (Single Threaded Apartment)
    doivent utiliser des primitives d'attente de pompage (par exemple
    CoWaitForMultipleHandles) et pomper de manière régulière les messages
    lors des opérations qui sont longues à s'exécuter.
    Si quelqu'un a une idée ou une proposition!!!

    Merci d'avance.

    Je continue les recherches. :-)

    Cordialement.

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2006
    Messages : 108
    Par défaut Fin
    Bonjour,

    Je viens pour clôturer cette discutions car j'ai bien validé le défaut de Thread en mettant en place un BackGroundWorker, il me reste a faire la mise en place dans une BDD.

    Au niveau de la gestion du temps je vais ouvrir un autre sujet propre a se pb car pour le moment je n'avance plus.

    Encore merci pour votre aide.

    Cordialement.

Discussions similaires

  1. pixel sous VLC et pas WMP
    Par antoine974 dans le forum Vidéo
    Réponses: 1
    Dernier message: 08/05/2009, 09h33
  2. [Controler d'autres application] dialoguer avec WMP et/ou VLC
    Par anthyme dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 11/10/2007, 23h55
  3. vlc : tv vers ecran pc freebox
    Par cmarsc dans le forum Mandriva / Mageia
    Réponses: 3
    Dernier message: 20/09/2007, 22h03
  4. Réponses: 2
    Dernier message: 30/05/2002, 10h19
  5. Réponses: 1
    Dernier message: 13/05/2002, 09h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo