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 :

Ecouter une web radio avec FireMonkey


Sujet :

Composants FMX Delphi

  1. #1
    Invité
    Invité(e)
    Par défaut Ecouter une web radio avec FireMonkey
    Bonjour,

    quelqu'un a-t-il essayé de dériver FMX.Media.TMediaPlayer et TCustomMediaCodec pour les rendre compatibles à écouter des Web radios ?
    J'ai réalisé un petit prog Qt pour faire cela en Win, OsX, Nux, Android et iOS. Le code n'utilise pas de bibliothèques tierces à Qt. J'aimerais faire aussi bien avec FireMonkey (sauf pour Nux évidemment).

    J'ai lu dans un 'vieil' article ce conseil mais sans sa mise en oeuvre. Dériver certes mais on ajoute comment la partie http ?
    You would have to implement a custom TMedia-derived class to handle streaming media, and a custom TCustomMediaCodec-derived class (registered for a custom file extension using TMediaCodecManager.RegisterMediaCodecClass()) to create your TMedia class. Then you can assign a URL to TMediaPlayer.FileName that ends with your extension (the real URL would not, so your codec would have to strip it off before accessing the URL)
    J'ai l'habitude de dériver (dans tous les sens du terme) avec Lazarus mais j'ai les sources. On les a sous Delphi ? Quelles variables, quelles méthodes, comment sont-elles déclarées ? Pour l'instant, je ne dispose que de cette documentation officielle. Où est le reste ? 'Reste' signifiant quelque chose d'exploitable comme ceci.
    Je sais bien qu'il existe Bass24 mais je préfère le tout en un.

    Merci.
    Cordialement. Gilles
    Dernière modification par Invité ; 21/04/2018 à 11h31. Motif: Mode sans rouspétance, absent dans la 1ère version.

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 598
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    il ne m'a pas fallu longtemps pour trouver cet emplacement GitHub qui, à défaut d'explication te fournira des pistes

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour Serge,

    oui, celui-ci est effectivement le premier qui est proposé... mais il utilise la bibliothèque Bass24, et de ce fait, je l'ai éliminé.

    Je cherche à maîtriser Delphi (et accessoirement à me convaincre que je peux faire aussi bien qu'en Qt). Donc, je voudrais dériver des composants sous FireMonkey. Je ne me souviens même plus si j'ai su le faire : l'âge certainement. Mon actuelle incapacité à accéder à la doc semble prouver que non.

    Donc j'en reviens à ma nécessité du moment : Comment accède-t-on à la structure donc à la liste exhaustive d'un custom (propriétés et méthodes) pour le dériver sous Firemonkey ?

    Merci. Gilles

  4. #4
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 678
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Une autre piste : http://docwiki.embarcadero.com/CodeE...ngMedia_Sample.
    Je n'ai pas essayé mais cela semble utiliser le TMediaPlayer.
    Mon site - Mes tutoriels - GitHub - N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  5. #5
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 598
    Billets dans le blog
    65
    Par défaut
    Re,
    Citation Envoyé par Selzig Voir le message
    mais il utilise la bibliothèque Bass24, et de ce fait, je l'ai éliminé.
    oui, c'est après avoir posté que j'ai regardé plus en détail le zip
    Donc, je voudrais dériver des composants sous FireMonkey.
    je n'en suis qu'à la tentative de construction de composants simples (tutoriel en rédaction) mais le MediaPlayer n'est pas dans mes objectifs
    Je ne me souviens même plus si j'ai su le faire : l'âge certainement.
    Ou c'est que tu commences à tutoyer un prénommé Aloïs

    Mon actuelle incapacité à accéder à la doc semble prouver que non.
    la doc n'est pas complète, je fouille souvent directement dans les sources où se trouve beaucoup de commentaires (enfin les sources que j'ai lu)

    Comment accède-t-on à la structure donc à la liste exhaustive d'un custom (propriétés et méthodes) pour le dériver sous Firemonkey ?
    sans aucune hésitation, bis répéta : les sources, mais je n'ai pas mis le nez dans celle de TMediaPlayer

    Bon à savoir, quand le composant est à la fois VCL et FMX c'est souvent dans la partie VCL que se trouve le plus de chose, un composant FMX de ce type a souvent un "simple" entête et un fichier inclus (le même que le VCL). Bien que pour l'instant j'arrive encore assez mal à mettre au point mon TPathNameImage (dérivé d'un TImage, le remplissage du bitmap est remplacé par le chemin) avec cette technique !

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    merci pour vos aides.

    @gbegreg : non, cela permet d'écouter un fichier placé sur le net mais pas d'écouter un flux 'live streaming'. Non, non, il faut vraiment dériver ces composants.

    Voici la partie active en Qt (C++)
    Code c++ : 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
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
        int vol;
        vol = 50;
        ui->volLabel->setText(QString::number(vol));
     
        ui->volSlider->setRange(0,100);
        ui->volSlider->setValue(vol);
     
        m_player = new QMediaPlayer;
        m_player->setMedia(QUrl("http://listen.radionomy.com/radio-bach"));//sans le .m3u
        m_player->setVolume(vol);
        m_player->play();
     
        m_timer = new QTimer();
        m_timer->connect(m_timer, SIGNAL(timeout()), this, SLOT(win_minimize()));
        m_timer->start(3500);
    }
    La différence est que dans le QMediaPlayer, la partie de gestion du live streaming provenant d'une URL est implémentée par défaut et pas dans FireMonkey.

    Bonne fin de WE. Cordialement. Gilles
    Dernière modification par tourlourou ; 27/04/2018 à 20h46.

  7. #7
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 491
    Par défaut
    salut

    dans le media player il suffit de lui passer en paramettre une url ou un path et lui gere le flux
    je vois pas le probleme ?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Ah ? J'ai essayé avec l'adresse utilisée en Qt. Et sous windows... je n'entends rien avec FireMonkey quelque soit la méthode employée.

    Cordialement. Gilles

  9. #9
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 491
    Par défaut
    salut

    il lui faut l'extension de fichier à lire
    dans ton cas avec .m3u

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    j'aimerais que cela soit aussi simple.

    Le fichier http://listen.radionomy.com/radio-bach.m3u existe bien puisque un navigateur propose de le télécharger. Pour s'en convaincre, il suffit de cliquer sur le lien.
    Donc, dans un projet fmx vide, je pose un TMediaPlayer1, puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm1.FormShow(Sender: TObject);
    begin
      with MediaPlayer1 do
      begin
        FileName := 'http://listen.radionomy.com/radio-bach.m3u';
        Play;
      end;
    end;
    Run >> Project1 a cessé de fonctionner :
    Nom : 01.png
Affichages : 658
Taille : 11,8 Ko

    Ce n'est pas engageant. Gilles

  11. #11
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 491
    Par défaut
    salut

    il faut verifier que le codec existe pour le mediaplayer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     if MediaPlayer1.Media <> nil then
       begin
            MediaPlayer1.Play;
       end;
    si il n'as pas le codec il ne pourras jamais le lire

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par anapurna Voir le message
    il faut verifier que le codec existe pour le mediaplayer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     if MediaPlayer1.Media <> nil then
       begin
            MediaPlayer1.Play;
       end;
    si il n'as pas le codec il ne pourras jamais le lire
    De quels codecs parlez-vous ? Ceux de mon poste sont installés par défaut : le lecteur Windows Media est correctement installé et fonctionne. Ils ne conviendraient pas ?

    J'en reviens à cette doc et je pense toujours que par défaut le Tmedia de Firemonkey n'est pas capable de lire du live streamning.

    D"autre part le programme équivalent compilé en Qt et que j'essaie de porter en Firemonkey fonctionne sans aucune modification de Windows sur le PC utilisé pour réaliser cette tentative.

    Cordialement. Gilles
    Dernière modification par Invité ; 24/04/2018 à 21h12.

  13. #13
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 678
    Billets dans le blog
    2
    Par défaut
    Bonsoir,

    J'ai trouvé ce lien : http://www.howtobuildsoftware.com/in...ith-firemonkey

    Il est bien indiqué que par défaut, Firemonkey implémente la classe TMedia que pour les fichiers locaux. Une liste de choses à faire est mentionnée afin de pouvoir mettre une url dans la propriété filename du Mediaplayer.
    Mon site - Mes tutoriels - GitHub - N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  14. #14
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 491
    Par défaut
    salut

    tu oubli que firemonkey est multi-platform je suppose donc
    qu'ils ont implémenté le TmediaPlayer minimal commun à toutes les platform


    PS : j'ai regardé la demo ici
    a priori c'est bien le codec qui n'est pas bon il ne gere pas le http

  15. #15
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 598
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    je regardé (et testé) cette même démo. Ce n'est pas vraiment ce que je comprenais comme Streaming, c'est vraiment décevant comme démo

  16. #16
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    je crois qu'il y a une confusion. En réalité, tout est flux donc stream notamment la lecture d'un fichier. Pour écouter une web radio, il faut être capable d'utiliser le live streaming, ce que fait Qt nativement (si on peut dire) et pas FireMonkey. Il faut incorporer cette capacité au TMedia. De ce fait, il faut être capable de le dériver et on en revient à ma question initiale. Dériver je sais faire mais à condition d'avoir les éléments nécessaires. VCL et LCL sont faites pour cela.

    Citation Envoyé par anapurna Voir le message
    tu oubli que firemonkey est multi-platform [/URL]
    Non je n'oublie pas mais Qt est aussi (et même plus) multi-platorme et je n'ai pas rencontré ce problème.

    Mais en réalité mon problème n'est pas là. Je suis à nouveau confronté à une de mes limites sous FMX et je pense que je n'en suis pas entièrement responsable.

    Visiblement avec Firemonkey, "on" considère que dériver des classes des composants fournis n'est pas utile puisqu'on ne fournit pas les éléments de base nécessaires. S'il faut une semaine pour dériver un malheureux TMedia (et encore j'en suis toujours au même stade), cela limite quand même les capacités du produit que je trouve beaucoup plus fermé que Delphi VCL, Lazarus et Qt. Alors soit, c'est certainement possible mais l'environnement au sens large de Firemonkey ne l'incite pas et aide peu. Or, les bonnes idées ne sont pas toujours les plus simples... et les approches parfois compliquées. Et ce n'est pas à la plate forme de développement de vous compliquer la tâche mais au contraire de vous la faciliter. Heureusement, je ne possède qu'une licence Academic de Tokyo. Généraliste, vous avez dit "généraliste" ? J'émets des réserves.

    Donc malfré mon dépit et pour rester positif, j'en suis là :
    You would have to implement a custom TMedia-derived class to handle streaming media, and a custom TCustomMediaCodec-derived class (registered for a custom file extension using TMediaCodecManager.RegisterMediaCodecClass()) to create your TMedia class.
    ...et je cherche comment on obtient une information suffisamment exhaustive pour dériver mes 2 Tcustom sans perdre trop de temps.

    Bon assez tergiversé. On va aller voir dans les répertoires si on trouve des sources. Si tel est le cas, cela ressemblera à Lazarus à ses débuts.
    Cordialement. Gilles
    Dernière modification par Invité ; 26/04/2018 à 12h01.

  17. #17
    Invité
    Invité(e)
    Par défaut
    Bon cela avance. J'ai trouvé les sources.

    1. Question idiote : on ne peut pas recompiler Delphi comme on le fait en Lazarus ou Qt ? Je suppose que non.
    2. Alors, à défaut, comment dérive-t-on la section initialization-finalization d'une classe en l'occurrence celle de FMX.Media.Win.pas ? Ajouter une propriété, ajouter ou modifier une méthode, je sais faire mais comment modifie-t-on cette partie ?



    Merci. Cordialement. Gilles
    Dernière modification par Invité ; 26/04/2018 à 16h45.

  18. #18
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 598
    Billets dans le blog
    65
    Par défaut
    Bonsoir,

    pour te répondre, je vais plus ou moins t'indiquer comment j'ai fait pour dériver un composant TImage pour en faire un TPathImage (c'est à dire un composant où l'on ne charge pas l'image mais indique juste le chemin complet de l'image)
    Comme je voulais que mon composant soit utilisable avec des données (donc livebindings) j'ai commencé par lire le tutoriel proposé dans le doc wiki sur comment déclaré une propriété et la possibilité de la lier (TTrackBar de la VCL)
    Après avoir cerné le truc en décomposant tout.
    Je me suis penché sur le TPathImage , création d'un nouveau composant de type TImage, création d'une nouvelle propriété FNomImage je passe sur les détails,
    test d'abord avec création au runtime puis une fois au point installation du nouveau composant dans un paquet ... nickel
    J'ai suivi la même démarche sous FMX ... nickel, j'ai même découvert que l'on pouvait cacher des propriétés (en l'occurence je ne voulais pas voir la possibilité du chargement d'une image) et même réussi à faire en sorte que la propriété NomImage puisse se saisir via un bouton [...] en mode désign.

    Ou ça se complique c'est si l'on veut que le composant soit VCL et FMX (là j'ai mis le foutoir dans différents répertoires, tant et si bien que je ne retrouve plus mes petits) comme Pénélope je vais devoir refaire la tapisserie. J'avais trouvé quelques videos intéressantes sur le comment faire (dont une de Konopka) j'espére toujours avoir les liens !

    Bref, si tu veux, j'ai mon début de tutoriel (uniquement du composant VCL) et quelques sources (dans mon foutoir )

  19. #19
    Invité
    Invité(e)
    Par défaut
    Merci Serge. Je veux bien parce que jamais je n'ai modifié cette section en LCL.

    D'autre part, j'ai maintenant la certitude que le Lecteur Windows media intègre bien le codec pour m3u :
    Nom : Capture d’écran 2018-04-26 à 16.59.24.png
Affichages : 588
Taille : 17,8 Ko

    Donc, cela semble se préciser. Sauf surprise désagréable, je devrais y arriver. Et si cela fonctionne, évidemment, je mets le code en ligne.

    Bonne fin de journée. Gilles

  20. #20
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 598
    Billets dans le blog
    65
    Par défaut
    Je pense que ce qu'il faut implémenter c'est plutôt un truc du genre de la capture vidéo où l'on commence à afficher quand le buffer est plein mais bon c'est peut être une idée en l'air !
    en tout cas, voilà mon brouillon (pour ce qu'il vaut car en le relisant je vois que il n'y a pas vraiment la toute première étape fichier/nouveau/package)

    joint aussi une partie de mon "foutoir" dans le zip l'intéressant : imagenomfichier.bpl
    une grossière erreur après mes diverses lectures et visionnage : ne pas préfixer les unités (à priori c'est réservé à Embarcadero) donc pas de VCL.xxxxxxx (dixit Ray Konopka tout fâché de cette "interdiction")
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Peut-on mettre en route une web cam avec SilverLight?
    Par hugo7 dans le forum Silverlight
    Réponses: 8
    Dernier message: 09/06/2010, 20h04
  2. une station radio avec vb.net
    Par jesslegende dans le forum Windows Forms
    Réponses: 6
    Dernier message: 03/10/2009, 17h47
  3. [JBoss tool] Comment lancer une web app avec JBoos tool
    Par kij dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 17/04/2009, 10h44
  4. Site d'une web radio http://www.radiotamazgha.com
    Par kmdkaci dans le forum Mon site
    Réponses: 2
    Dernier message: 18/12/2008, 18h00
  5. sécuriser une web appli avec session/.htaccess
    Par phicarre dans le forum Sécurité
    Réponses: 1
    Dernier message: 02/10/2007, 00h58

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