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

Composants FMX Delphi Discussion :

Afficher une vidéo mp4 dans un TMediaPlayer sous FMX Windows


Sujet :

Composants FMX Delphi

  1. #1
    Invité
    Invité(e)
    Par défaut Afficher une vidéo mp4 dans un TMediaPlayer sous FMX Windows
    Bonjour,

    tout est dans la question. J'ai téléchargé un exemple dans sourceforge.
    Il date de 2014. Il me permet d'afficher une vidéo avi mais pas mp4 : Unsupported media fule ****.mp4.

    J'ai lu cela. Sans conviction .

    Merci pour votre aide. Cordialement. Gilles

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Et tu es en quelle version Delphi ?
    En D10, mp4 est supporté par TWindowsMediaCodec* et TQTMediaCodec
    En DXE3, mp4 n'est pas dans les extensions supporté par TWindowsMediaCodec mais uniquement par TQTMediaCodec
    En DXE2, cette classe n'est pas du tout (en fait, il manque tout le TMediaPlayer)

    * l'implémentation de TWindowsMediaCodec tourne autour de IGraphBuilder , il faudrait vérifier si tu as un bien IFilterGraph installé pour l'extension mp4 (ce n'est pas forcément le cas)
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Et tu es en quelle version Delphi ?
    * l'implémentation de TWindowsMediaCodec tourne autour de IGraphBuilder , il faudrait vérifier si tu as un bien IFilterGraph installé pour l'extension mp4 (ce n'est pas forcément le cas)
    Bonjour,

    ce n'est pas le cas visiblement et mon Windows 10 est installé par défaut. Ce qui sous-entend qu'il faut modifier cette installation par défaut pour que mon Delphi 10.3.3 puisse "visionner" des fichiers mp4 et celles des postes sur lesquelles aurait dû fonctionner l'application.

    Merci pour le renseignement. Je n'irai donc pas plus loin.
    Cordialement. Gilles

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Bonjour Gilles,

    encore une fois tu as excité ma curiosité, cela sort du domaine de mon boulot quotidien.
    Du coup j'ai rapidement fait un essai Rio 10.3.3 donc
    un programme hyper simple, cible windows
    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
     
    unit Unit102;
     
    interface
     
    uses
      System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
      FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
      FMX.Edit, FMX.Media, FMX.Controls.Presentation;
     
    type
      TForm102 = class(TForm)
        MediaPlayer1: TMediaPlayer;
        Edit1: TEdit;
        MediaPlayerControl1: TMediaPlayerControl;
        EllipsesEditButton1: TEllipsesEditButton;
        OpenDialog1: TOpenDialog;
        procedure EllipsesEditButton1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form102: TForm102;
     
    implementation
     
    {$R *.fmx}
     
    procedure TForm102.EllipsesEditButton1Click(Sender: TObject);
    var media : TMedia;
    begin
    if Opendialog1.execute then
     begin
       Edit1.Text:=ExtractFileName(Opendialog1.FileName);
        MediaPlayer1.FileName:=Opendialog1.FileName;
       Mediaplayer1.Play;
     end;
    end;
     
    end.
    Nom : Capture.PNG
Affichages : 1235
Taille : 6,3 Ko

    au début même erreur, mais j'ai tout de suite penché pour un manque de codec (ces drôles de petites bêtes que l'on a évoqué d'autres fois mais pour écouter une Radio en Live)
    J'ai alors installé un ensemble de codecs trouvé ici
    et
    Nom : Capture_2.PNG
Affichages : 1196
Taille : 180,5 Ko

    Cela dit, si cela fonctionne sous windows je ne saurais dire s'il en va de même pour les autres OS.
    Il y a une gestion de codecs avec TMediaCodecManager qui mérite que l'on s'attarde dessus (et qui nécessite de lire de la doc)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par Selzig Voir le message
    ce n'est pas le cas visiblement et mon Windows 10 est installé par défaut. Ce qui sous-entend qu'il faut modifier cette installation par défaut pour que mon Delphi 10.3.3 puisse "visionner" des fichiers mp4 et celles des postes sur lesquelles aurait dû fonctionner l'application.
    peut-être pas , il faudrait essayer ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TMediaCodecManager.RegisterMediaCodecClass('.mp4', 'Video mp4', TMediaType.Video, TWindowsMediaCodec);
    pour vérifier qu'il est "enregistré"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if TMediaCodecManager.IsCodedExists('.mp4') then showmessage('codec ok') else showmessage('no mp4 codec');
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Dans XE10, TWindowsMediaCodec est automatiquement ajouté pour plusieurs types dont mp4 via TMediaCodecManager.RegisterMediaCodecClass dans la section initialization de FMX.Media.Win, cette unité est implicitement ajouté au projet si l'on est en projet MSWINDOWS via FMX.Media

    Il manque une fonction IsCodecInstalled qui irait vérifier dans l'implémentation courante de TCustomMediaCodec si le codec système est disponible

    l'erreur SMediaFileNotSupported = 'Fichier media %s% non supporté'; ou SMediaFileNotSupported = 'Unsupported media file %s%'; se produit lorsque le TWindowsMediaCodec échoue lors d'un appel des interfaces de IGraphBuilder
    La classe TWindowsMediaCodec est une Factory de TMedia, si ce message se produit c'est qu'elle "recensée" mais pas forcément que le codec soit installé

    une extension non enregistrée ne produira pas de TMedia interne lors du SetFileName, sans message
    Idem, le Play n'ayant pas de TMedia interne ne fera rien

    le mp4 n'est pas considéré comme natif (puisqu'il faut un codec supplémentaire)

    Les formats des fichiers multimédia pris en charge correspondent aux formats natifs de chaque plate-forme :

    Pour Windows :
    Formats audio : .wma, .mp3, .wav
    Formats vidéo : .avi, .wmv
    Pour OS X :
    Formats audio : .mp3
    Formats vidéo : .mov, .m4v, .mp4

    Remarque : Les codecs multimédia FireMonkey incorporés nécessitent que le système d'exploitation de votre ordinateur/périphérique ait les capacités de décodage appropriées pour décoder le fichier avec succès.
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Candidat au Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Lot (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2020
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Bonjour,
    J'ai utilisé le code que SergioMaster a écrit pour lire une vidéo.
    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
    uses
      System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
      FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
      FMX.Media, FMX.Controls.Presentation, FMX.Edit;
     
    type
      TForm7 = class(TForm)
        MediaPlayer1: TMediaPlayer;
        Edit1: TEdit;
        MediaPlayerControl1: TMediaPlayerControl;
        Button1: TButton;
        OpenDialog1: TOpenDialog;
        procedure Button1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form7: TForm7;
     
    implementation
     
    {$R *.fmx}
     
    procedure TForm7.Button1Click(Sender: TObject);
    var media : TMedia;
    begin
    if Opendialog1.execute then
     begin
       Edit1.Text:=ExtractFileName(Opendialog1.FileName);
        MediaPlayer1.FileName:=Opendialog1.FileName;
       Mediaplayer1.Play;
     end;
    end;
     
    end.
    Contrairement à lui lorsque la vidéo se lance elle s'ouvre dans une fenêtre externe et non dans le form.
    J'ai téléchargé les codecs que SergioMaster avez mis en lien dans sa réponse. Est ce un problème de version de fmx ou de direct X ou j ai oublié quelque chose?
    J'utilise fmx avec delphi 10.3.2 sous windows 10.
    Merci d'avance pour votre aide.
    Nicolas
    Images attachées Images attachées  

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Impossible de vérifier puisque ma version 10.3.3 a écrasé la version 10.3.2.
    Quant à mon système :
    Windows 10 64 bits version 1903,
    Direct3D® Version - 9.14.10.01399
    OpenGL® Version - 26.20.11000.13559
    Direct X Version 12

    le mieux est d'essayer de compiler ma version (zip joint) et de voir si cela fonctionne et si c'est le cas trouver les différences
    Fichiers attachés Fichiers attachés
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  9. #9
    Membre éprouvé
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Points : 1 072
    Points
    1 072
    Par défaut
    Bonjour,


    quand je me suis intéressé au Tethering je suis tombé sur cet exemple (entre autre):
    "\Samples\Object Pascal\RTL\Tethering\MediaPlayer\MediaPlayerHD\MediaPlayerHD.dpr"
    tout fonctionne parfaitement et le rendu est dans la fenêtre principale.
    avec les codecs Windows MediaPlayer à jours bien sûr
    D'ailleurs avec ces codecs je peux aussi lire les mkv mp4 etc. sur le MediaPlayer classique de la VCL de D7 à 10.3
    ça nécessite toute fois une petite modification du code !

    si ça peut aider

    Cordialement,

    @+

  10. #10
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Post Scriptum. Ce n'est pas la version de Delphi, je viens de recompiler mon code avec 10.2.3 : même rendu
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  11. #11
    Candidat au Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Lot (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2020
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    SergioMaster, tu as raison c'est pas la version de delphi, j ai désinstallé et réinstallé les codec et mis a jour directX et ça fonctionne.
    Merci beaucoup de votre aide

  12. #12
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    Citation Envoyé par vuillen Voir le message
    j'ai désinstallé et réinstallé les codec et mis à jour directX et ça fonctionne.
    Dommage on ne saura jamais s'il s'agissait de DirectX (mon avis) ou des codecs.
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  13. #13
    Membre éprouvé
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Points : 1 072
    Points
    1 072
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bonjour,

    Dommage on ne saura jamais s'il s'agissait de DirectX (mon avis) ou des codecs.
    je dirais "des codecs" chez moi DirectX 11 & Win7

    Cordialement,

    @+

  14. #14
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    En général le problème vient de l'absence des codec dans l'OS : le player n'interprète pas lui-même la vidéo, il passe par les API du système d'exploitation et par conséquent si celui-ci ne peut gérer le format, Delphi ne le pourra pas.

    Deux autres solutions sont possibles selon les cas :
    - utiliser Chromium embarqué ou un TWebBrowser pour ouvrir le fichier local ou sous forme d'URL, avec un peu de bol ça doit passer
    - utiliser la DLL clients de VLC qui permet d'ouvrir une vidéo dans une zone d'écran. un auto pour la VCL existe, je n'ai pas encore testé un équivalent sous FMX (qui ne fonctionnerait que sous Windows si ça passe).

Discussions similaires

  1. Afficher une vidéo aléatoire dans page HTML
    Par maxmarie dans le forum Langage
    Réponses: 1
    Dernier message: 25/06/2010, 16h48
  2. afficher une flèche à gauche dans un texte dynamique sous firefox3
    Par jdf86340 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/08/2009, 11h37
  3. Afficher une vidéo dans une interface graphique
    Par Arwendil dans le forum Interfaces Graphiques
    Réponses: 28
    Dernier message: 15/05/2008, 11h38
  4. Comment afficher une vidéo dans une page HTML ???
    Par safadev dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 05/10/2005, 19h50

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