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

Lazarus Pascal Discussion :

Son et vidéo avec Lazarus


Sujet :

Lazarus Pascal

  1. #21
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 52
    Points : 49
    Points
    49
    Par défaut Toujours le même sujet: Son et video avec Lazarus
    J'ai réécrit la procedure TCustomMPlayerControl.SetLoop(const AValue: integer) de mPlayerCtrl.pas :

    [CODE=Lazarus]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TCustomMPlayerControl.SetLoop(const AValue: integer);
    begin
      if Running then
        begin
          if (AValue=0) then  SendMPlayerCommand('loop 1');
          FLoop:=AValue;
          if AValue=1 then exit
          else SendMPlayerCommand('loop '+IntToStr(FLoop))
        end;
    end;
    Tous les cas loop:= 0,1,2,... fonctionnent alors simplement après le play sans qu'il n'y ait rien à rajouter (le cas loop:=-1 donne quand même une exécution puisque l'affectation de la propriété ne peut se faire qu'avec un play précédent).
    Comme j'ai viré le "if FLoop=AValue then exit" dont je ne vois vraiment pas l'intérêt, la valeur de loop figurant dans l'inspecteur d'objet peut être quelconque et n'intervient pas.
    On peut même virer le "if Running then" mais je l'ai gardé (par précaution ?) bien que je n'en vois pas non plus l'utilité si on affecte loop juste après un play.

    On peut évidemment aussi écrire une procedure publique "PlayLoop"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TCustomMPlayerControl.PlayLoop(ALoop:integer);
    begin
      Play;
      loop:=ALoop;
    end;
    et il suffit alors d'écrire l'instruction unique "PlayLoop(xx)" pour jouer le fichier avec xx passes.


    Amitiés

    Pierre

  2. #22
    Responsable Lazarus & Pascal

    Avatar de gvasseur58
    Homme Profil pro
    Cultivateur de code (bio)
    Inscrit en
    Février 2013
    Messages
    1 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Cultivateur de code (bio)
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 1 436
    Points : 20 855
    Points
    20 855
    Billets dans le blog
    84
    Par défaut
    Bonjour,

    Citation Envoyé par pedestre Voir le message
    Comme j'ai viré le "if FLoop=AValue then exit" dont je ne vois vraiment pas l'intérêt, la valeur de loop figurant dans l'inspecteur d'objet peut être quelconque et n'intervient pas.
    En général, ce n'est pas une bonne idée de supprimer ce genre de test en début d'un setter de propriété. Ce test vérifie que l'on demande vraiment un changement : si la valeur envoyée est la même que celle en cours, on sort de la méthode, ce qui évite des traitements inutiles, voire des erreurs ou des blocages dus, par exemple, à un fou furieux qui demanderait le même nombre de boucles sans cesse et à une bonne fréquence (ça existe ). Dans la LCL, ce mécanisme est très employé, à tel point que la génération par Lazarus d'un setter avec Ctrl-Maj-C produit automatiquement le squelette.

    Citation Envoyé par pedestre Voir le message
    On peut même virer le "if Running then" mais je l'ai gardé (par précaution ?) bien que je n'en vois pas non plus l'utilité si on affecte loop juste après un play.
    Le problème réside précisément dans le "si" : il faudrait donc mémoriser ce cas particulier alors que le drapeau Running gère très bien l'affaire tout seul : il est levé si et seulement si le processus est différent de nil et qu'il est en cours d'exécution. Le supprimer (qui plus est localement) expose à des erreurs difficiles à détecter. Je sais qu'il s'agit souvent de tester un composant, mais nous avons tous connu ce composant oublié pendant des mois, qui resurgit tout à coup, et dont on désespère de savoir pourquoi il ne fonctionne plus.

    De plus, ces tests sur des booléens sont extrêmement rapides (bien plus que le temps perdu à exécuter avec des risques des portions entières de code), alors pourquoi les supprimer ?

    Pour ce qui est de la méthode elle-même, on peut peut-être éviter de placer l'affectation du champ après "if Running", sinon la valeur peut être perdue sans aucun message à l'utilisateur .

    Cordialement,

    Gilles
    Accès à mon site et à mon blog. Actualités, cours et ressources Delphi, Lazarus et Pascal.
    Pensez à la balise - Quelqu'un vous a aidé ou vous appréciez une intervention ? Pensez au

  3. #23
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 52
    Points : 49
    Points
    49
    Par défaut
    Encore bonjour,

    Oui, je comprends bien, mais il faut admettre me semble-t-il que le traitement des loops n'est pas au top: Si on écrit simplement loop:=0 après play (pour obtenir un jeu en boucle indéfinie), on n'obtient rien du tout. Comme j'ai indiqué ci-dessus je ne suis arrivé à progresser qu'en passant d'abord une valeur de loop strictement supérieure à 0 avant de passer loop:=0. Par ailleurs, si on passe en premier la valeur précédent du loop, on va encore être bloqué (on ira à l'exit !).
    Quant à modifier la valeur de loop dans l'inspecteur d'objets, il n'y a aucun effet à moins de refaire un play et alors ... ? Tout ça n'est guère satisfaisant.

    Pierre

  4. #24
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 699
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 699
    Points : 15 042
    Points
    15 042
    Par défaut
    Citation Envoyé par pedestre Voir le message
    Oui, je comprends bien, mais il faut admettre me semble-t-il que le traitement des loops n'est pas au top: Si on écrit simplement loop:=0 après play (pour obtenir un jeu en boucle indéfinie), on n'obtient rien du tout
    As-tu essayé ma proposition ? :
    Citation Envoyé par Jipété Voir le message
    Et je me demande même s'il n'y aurait pas moyen de forcer un "default", là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        property Loop: integer read FLoop write SetLoop default -1; // -1 no, 0 forever, 1 once, 2 twice, ...
    Comme ça le composant arriverait [dans l'inspecteur d'objets] avec FLoop positionné à une valeur et le code n'aurait plus qu'à passer une fois une "value" et roule ma poule !
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  5. #25
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 52
    Points : 49
    Points
    49
    Par défaut
    Jipété

    Non, mettre une valeur par défaut, que ce soit -1 ou autre chose ne change rien: avec loop:=0, on n'obtient toujours avec "play;loop:=0"; qu'une seule passe.

    Il me paraît bien tout de même qu'il y ait quelque chose de "pathologique" dans le codage de ce composant.
    Par exemple, la valeur qu'on a attribuée à loop dans l'inspecteur d'objets n'a aucun effet quand on lance le play. On peut, bien sûr récupérer cette valeur, mais le comble c'est qu'on ne peut même pas utiliser cette valeur (Aloop) pour mettre loop:=Aloop après le play, puisqu'on tomberait sur l'exit !!! (à moins de virer le "if FLoop=AValue then exit;", ce que j'ai d'ailleurs fait, ce qui n'a d'ailleurs pas été approuvé sur ce foum..., ). Je n'ai vu nulle part une chose de ce genre dans les composants de Lazarus ou de Delphi...

    Cordialement.

    Pierre

  6. #26
    Responsable Lazarus & Pascal

    Avatar de gvasseur58
    Homme Profil pro
    Cultivateur de code (bio)
    Inscrit en
    Février 2013
    Messages
    1 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Cultivateur de code (bio)
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 1 436
    Points : 20 855
    Points
    20 855
    Billets dans le blog
    84
    Par défaut
    Citation Envoyé par pedestre Voir le message
    Jipété

    Non, mettre une valeur par défaut, que ce soit -1 ou autre chose ne change rien: avec loop:=0, on n'obtient toujours avec "play;loop:=0"; qu'une seule passe.

    Il me paraît bien tout de même qu'il y a quelque chose de "pathologique" dans le codage de ce composant.

    Cordialement.
    Je confirme pour l'avoir testé (Win10 et Lazarus 1.6). Il n'est d'ailleurs plus suivi depuis 2014 . De manière étrange, il faut envoyer 1 pour avoir une boucle infinie, mais un 0 vient de temps en temps interdire toute boucle . Les autre nombres fonctionnent correctement. Dans tous les cas, il est inutile de modifier le code source du composant : il suffit de modifier la valeur initiale si elle vaut 0 ou 1.

    J'ai par ailleurs fait un suivi approfondi avec le débogueur : les données fournies jusqu'au processus sont correctes. Soit l'erreur vient du processus qui n'envoie pas le bonnes données à mplayer, soit ce dernier doit être paramétré autrement, ou... je ne sais pas . Personnellement, je n'irai pas plus loin dans les recherches : pas de maintenance prévue, subordination à un player que je n'utilise jamais, fonctions limitées selon le concepteur lui-même (qui n'a pas prévu de loop dans son programme exemple le plus élaboré)... Je reste sur VLC

    Cordialement,

    Gilles
    Accès à mon site et à mon blog. Actualités, cours et ressources Delphi, Lazarus et Pascal.
    Pensez à la balise - Quelqu'un vous a aidé ou vous appréciez une intervention ? Pensez au

  7. #27
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 52
    Points : 49
    Points
    49
    Par défaut pasLibVlc
    A nouveau bonjour,

    Je sais, j'insiste !

    Vu les problèmes avec mplayer, j'ai tenté de m'intéresser à Vlc.

    J'ai donc essayé de télécharger et d'installer PasLibVlc : http://prog.olsztyn.pl/paslibvlc/
    Je rappelle que je travaille en Linux sous Ubuntu 16.04 avec Lazarus 1.6.

    Bon, j'ai la version 2.2.5 (la dernière). Mais l'installation est un échec (l'EDI de Lazarus me dit tantôt qu'il ne trouve pas de procedure Register, tantôt qu'il ne trouve pas des identicateurs... et rien ne s'installe donc). Cependant l'installation se fait bien sous Windows (10) (je n'ai pas testé le fonctionnement), mais c'est l'installation sous linux que je recherche.

    Est-ce que quelqu'un a réussi sous Linux?

    Merci de vos réponses
    Pierre

  8. #28
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 699
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 699
    Points : 15 042
    Points
    15 042
    Par défaut
    Salut,
    Citation Envoyé par pedestre Voir le message
    mais c'est l'installation sous linux que je recherche.

    Est-ce que quelqu'un a réussi sous Linux?
    Dans ma vieille version 1.4.0, il y a un dossier components qui contient un dossier vlc où tu devrais pouvoir trouver tout ce qui t'intéresse !
    Moi je n'ai pas pu aller plus loin que ça car le README.txt précise
    You need the VLC library headers in FPC, so this will only compile with FPC
    2.7.1 and higher.
    et comme je suis toujours en 2.6.2...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  9. #29
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 52
    Points : 49
    Points
    49
    Par défaut
    Je pécise pour l'installation de PasLibVlc:

    L'installation du paquet nécessaire utilise le fichier pasLibVlcClassUnit (avec 2 ou 3 autres)

    Il y a dans ce fichier l'instruction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    {$IFDEF MSWINDOWS}
      procedure WMEraseBkgnd(var msg: TWMEraseBkGnd); message WM_ERASEBKGND;
      {$ENDIF}
    et l'installation est sans problème sous Windows.

    On trouve aussi l'instruction analogue qui doit permettre, je suppose, l'installation sous Linux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    {$IFDEF UNIX}
      procedure WMEraseBkgnd(var msg: TLMEraseBkgnd); message LM_EraseBkgnd;
      {$ENDIF}

    Mais là, c'est plus ennuyeux: le type TLMEraseBkgnd et le message LM_EraseBkgnd ne sont pas trouvés (et je ne sais pas comment les obtenir)... C'est bien dommage car j'ai bien l'impression que c'est la seule chose qui accroche...

    Le développement actuel de PasLibVlc semble en pleine activité et il faudrait peut-être contacter l'équipe, mais je ne sais pas comment faire ...

  10. #30
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 935
    Points : 9 246
    Points
    9 246
    Par défaut
    hello,
    pourquoi n'utilises-tu pas le paquet lazvlc avec sa démo testlclvlc voir ici


    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  11. #31
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 52
    Points : 49
    Points
    49
    Par défaut
    Bonjour ami calmant J.P.

    Ce lien ne mène nulle part ...

    Pierre

  12. #32
    Responsable Lazarus & Pascal

    Avatar de gvasseur58
    Homme Profil pro
    Cultivateur de code (bio)
    Inscrit en
    Février 2013
    Messages
    1 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Cultivateur de code (bio)
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 1 436
    Points : 20 855
    Points
    20 855
    Billets dans le blog
    84
    Par défaut
    Citation Envoyé par pedestre Voir le message
    Bonjour ami calmant J.P.

    Ce lien ne mène nulle part ...

    Pierre
    Bonjour,

    J'ai vérifié le lien : il est correct.
    La discussion a été marquée comme résolue. Faut-il changer son statut ?

    Gilles
    Accès à mon site et à mon blog. Actualités, cours et ressources Delphi, Lazarus et Pascal.
    Pensez à la balise - Quelqu'un vous a aidé ou vous appréciez une intervention ? Pensez au

  13. #33
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 699
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 699
    Points : 15 042
    Points
    15 042
    Par défaut
    Citation Envoyé par gvasseur58 Voir le message
    J'ai vérifié le lien : il est correct.
    La discussion a été marquée comme résolue. Faut-il changer son statut ?
    Le lien de jurassic pork reproduit ci-dessous ? Quand je clique dessus, je retombe sur ton post reproduit ci-dessus, que j'ai donc utilisé pour cliquer sur "Répondre avec citation" et me voilà

    Citation Envoyé par jurassic pork Voir le message
    hello,
    pourquoi n'utilises-tu pas le paquet lazvlc avec sa démo testlclvlc voir ici


    Ami calmant, J.P
    - - -

    Citation Envoyé par pedestre Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    {$IFDEF UNIX}
      procedure WMEraseBkgnd(var msg: TLMEraseBkgnd); message LM_EraseBkgnd;
      {$ENDIF}

    Mais là, c'est plus ennuyeux: le type TLMEraseBkgnd et le message LM_EraseBkgnd ne sont pas trouvés (et je ne sais pas comment les obtenir)...
    Mets la ligne en commentaire, tu verras bien si tu peux continuer l'install et on cherchera ensuite comment régler le souci...

    EDIT : rajoute l'unité LMessages dans les uses, genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    uses
      LMessages, Classes, SysUtils, ...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  14. #34
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 935
    Points : 9 246
    Points
    9 246
    Par défaut
    hello,
    c'est quand même étonnant cette histoire de lien qui ne fonctionne pas , moi je retombe bien sur le post #7 de cette discussion :
    http://www.developpez.net/forums/d15...s/#post8674063

    EDIT : lien alternatif : http://www.developpez.net/forums/d15...s/#post8674063

    le lien alternatif ne fonctionne pas chez moi : J.P avec Té . Pb de zoom du navigateur ---> Quel est le dernier post sur la première page de la discussion? ( moi c'est le #20)

    A tout hasard, vous êtes sous quel O.S avec quel navigateur ? moi je suis sous windows 7 avec chrome 52.0

    ami calmant, J.P (pas té)
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  15. #35
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 699
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 699
    Points : 15 042
    Points
    15 042
    Par défaut
    @Gilles :

    C'est bien, tu as fait un super ménage, merci, donc quand j'ai ouvert la discussion je suis tombé sur le post n° 34 de JP pas té, et quand je clique sur le lien qu'il propose, je... retombe sur son post, le n° 34, dans un nouvel onglet (réglage de mon navigateur) !
    Et j'ai attendu longtemps, pour voir si la redirection ne traînait pas un peu des pieds mais non...

    À l'instant où j'écris, j'ai donc un onglet où j'écris ces mots dans l'éditeur, à côté un onglet avec le post n° 34 de JP pas té, je bascule sur cet onglet, je clique sur le lien et ça m'ouvre un nouvel onglet avec exactement le même contenu que celui où j'étais à l'instant du clic, le post n° 34...

    Et si, dans l'un ou l'autre onglet m'affichant le post n° 34 je rajoute "-2" après "d1591636" dans la barre d'adresse, y a un Mr Bean qui me saute à la figure

    Àmha il y a bien une embrouille quelque part.

    [EDIT]
    Je viens de poster, je suis donc maintenant dans le dernier post de la discussion, n° 35, je joue de l'ascenseur pour voir le 34 et son lien magique, je le clique et je me retrouve, dans un nouvel onglet, sur le 35.
    Pour moi, en cliquant sur ce lien à moitié moisi (absence du "-2"), le navigateur redirige sur le dernier post de la discussion et voilà.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/05/2013, 01h05
  2. publier application avec sons et vidéo
    Par GranPicS dans le forum VB.NET
    Réponses: 10
    Dernier message: 23/06/2009, 13h16
  3. Ouvrir un fichier vidéo avec son logiciel par defaut sous windows
    Par dreamnos dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 04/05/2008, 17h54
  4. Réponses: 2
    Dernier message: 02/05/2008, 08h47
  5. mail avec son et vidéo
    Par yanice dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 20/04/2007, 11h49

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