FAQ Qt FAQ Qt Creator FAQ PyQt & PySide

FAQ QtConsultez toutes les FAQ

Nombre d'auteurs : 26, nombre de questions : 298, dernière mise à jour : 26 juillet 2017 

 
OuvrirSommaireModulesPhononPhonon Généralités

Phonon est un framework multimédia créé à l'origine pour le bureau KDE. Il offre des fonctions de base telles que la lecture d'une vidéo ou d'un fichier son, le réglage du volume...

La particularité de Phonon réside dans le fait qu'il permet de s'abstraire des couches de bas niveau pour accéder aux fonctions multimédias d'un système d'exploitation.

Ainsi, une application utilisant Phonon intégrera DirectX ou Xine/GStreamer ou QuickTime de façon transparente pour le développeur. Chacun de ces accès étant géré par un plug-in nommé back-end. C'est ce dernier qui se chargera d'intégrer la couche bas niveau dans l'application

Mis à jour le 7 mai 2012  par LeGars

Lien : Comment fonctionne le framework Phonon ?

Pour Windows et Mac OS, Phonon est directement inclus dans le framework Qt. Sous Linux, Phonon constitue généralement un paquet à part.

Mis à jour le 7 mai 2012  par LeGars

Avec Visual Studio Express :

  1. Installer Visual Studio Express ;
  2. Ouvrir la console via le raccourci de Visual Studio ;
  3. Aller dans C:\qt\2009.03\qt (pour le Qt SDK ; dans les autres cas, aller dans le dossier des sources de Qt) ;
  4. Taper configure.exe -phonon -platform win32-msvc2008 <autres...>
  5. Taper nmake
  6. Et c'est fini !

Avec MinGW :

  1. Ouvrir la console via le raccourci du Qt SDK ;
  2. Taper configure.exe -phonon <autres...> ;
  3. Taper mingw32-make ;
  4. Et c'est fini !
Créé le 30 octobre 2009  par LeGars

Contrairement aux autres classes de Qt, les noms de classes ne commencent pas par Q. C'est surtout dû au fait que Phonon est un projet utilisant Qt, mais non de Qt.

Par exemple, pour ajouter la classe MediaSource, il faut ajouter cette ligne.

 
Sélectionnez
#include <Phonon/MediaSource>

Dans le fichier .pro :

 
Sélectionnez
QT += phonon
Créé le 30 octobre 2009  par LeGars

Le fichier de bibliothèque phonon_ds94 (ayant une extension .dll pour Windows, .so pour Linux) n'est pas trouvé. Sous Windows, la solution la plus courante est d'ajouter le fichier dans le dossier de l'exécutable suivant l'arborescence suivante :

 
Sélectionnez
[dossier application]
|
|- appli.exe
|- QtGui4.dll
|- QtCore4.dll
|- phonon.dll
|- phonon_backend \
    |- phonon_ds94.dll

Sous Linux, bien que cette solution fonctionne, il est plus courant de créer un lien symbolique (ln -s), afin de rendre le fichier phonon_ds94.so visible pour l'application en créant un lien dans le répertoire /usr/lib.

Le fichier de la bibliothèque se trouve dans le dossier de Qt (sous Windows, par défaut dans C:\Qt\version\), suivant l'arborescence suivante :

 
Sélectionnez
[Dossier où Qt est installé]
|-qt
   |-bin
      |- phonon4.dll
      |- QtGui4.dll
      |- QtCore4.dll
   |- plugins
      |- phonon_backend
         |- phonon_ds94.dll

La documentation indique aussi que Phonon nécessite les bibliothèques d'OpenGL pour pouvoir fonctionner. En général, il n'est pas nécessaire de joindre les fichiers pour OpenGL, car sous Windows elles sont installées en même temps que le système (dans le dossier system32), donc le programme ira les chercher lui-même.

Créé le 7 mai 2012  par Alexandre Laurent

Lien : Déployer une application Phonon sous Windows et Mac OS X

Le framework Phonon possède trois types d'objets : les données sources (media data sources), les nœuds (media nodes) et les périphériques (media devices). Observons la liste des classes du framework Phonon représentant ces différents objets :

  • Phonon::AudioOutput : permet d'envoyer des données audio à la carte son (la sortie casque est aussi une sortie de la carte son) ;
  • Phonon::Effect : utilisé pour transformer un flux audio ;
  • Phonon::EffectWidget : un widget permettant de contrôler les paramètres d'un effet ;
  • Phonon::MediaNode : la classe de base pour tous les nœuds de type média ;
  • Phonon::MediaObject : un nœud média qui contrôle la lecture d'un objet multimédia ;
  • Phonon::MediaSource : un objet qui fournit les données médias à un nœud de données source ;
  • Phonon::Path : Un chemin de données d'un nœud de données source à un nœud contrôleur d'objet média ;
  • Phonon::SeekSlider : un widget permettant d'afficher et de modifier la position de lecture d'un objet média dans le temps ;
  • Phonon::VideoPlayer : un widget qui peut charger et jouer une vidéo, et qui gère automatiquement la création du nœud média et des chemins en arrière-plan ;
  • Phonon::VideoWidget : un widget pour jouer une vidéo ;
  • Phonon::VolumeSlider : un widget pour afficher et modifier le volume d'un objet média.

Les données source sont représentées par des objets Phonon::MediaSource auxquels on fournit un fichier, une URL ou un QIODevice à partir duquel les données sont récupérées.

Les nœuds médias sont de trois types : les nœuds source, (à ne pas confondre avec les données source), les nœuds processeurs et les nœuds contrôleurs. Les nœuds source sont représentés par la classe Phonon::MediaObject et fournissent l'interface de lecture du média.

Un objet Phonon::MediaObject possède l'objet courant Phonon::MediaSource et peut également avoir une liste d'autres objets source prêts à être lus les uns après les autres.

La sortie d'un objet Phonon::MediaObject doit aller sur un contrôleur par un ou plusieurs chemins. Un chemin est représenté par un objet Phonon::Path et doit avoir un nœud source (Phonon::MediaObject) ainsi qu'un nœud contrôleur tel que Phonon::AudioOutput ou Phonon::VideoWidget. Le chemin peut être direct ou peut contenir des nœuds processeurs intermédiaires afin de fournir des effets spéciaux.

Le module Phonon ne supporte pas la manipulation directe de données dans un flux média. Il fournit cependant une manipulation indirecte des flux audio à travers les processeurs d'effets. Ces processeurs (Phonon::Effect) peuvent être ajoutés, à un chemin entre la source et le contrôleur où ils transforment les données de l'un à l'autre. Les effets disponibles dépendent du back-end de Phonon et sont fournis par la fonction Phonon::BackendCapabilities::availableAudioEffects(). Les effets peuvent inclure l'amplification du son, le positionnement du flux dans un environnement stéréo, l'égalisation ou le ré-échantillonnage.

Pour en appliquer un, nous créons une nouvelle instance de Phonon::Effect pour l'effet que nous voulons. Il faut ensuite garder le pointeur vers l'objet Phonon::Path retourné par la fonction Phonon::createPath(), puis appeler Phonon::Path::insertEffect() en passant l'effet que l'on vient de créer.

Le nœud contrôleur est l'endroit où les données sont finalement envoyées aux périphériques tels que la carte son, un casque audio ou un widget vidéo représentés par le nœud média Phonon::AudioOutput ou par les widgets Phonon::VideoPlayer et Phonon::VideoWidget qui servent également de nœuds médias.

Les relations entre les objets sont illustrées dans le schéma suivant :

Relations entre les objets du framework Phonon
Créé le 7 mai 2012  par Jonathan Courtois

Lien : Qu'est-ce que Phonon ?

Cela semble être plus un problème avec votre plug-in Phonon. Le back-end officiellement supporté est GStreamer, mais la même chose peut arriver quelque soit le back-end utilisé.

Vous devez avoir un back-end fonctionnel de GStreamer pour que Phonon fonctionne correctement dans Qt. Pour déterminer si GStreamer fonctionne ou non, essayez-le en utilisant la commande suivante :

 
Sélectionnez
./gst-launch playbin uri=file:///home/joe/my-random-media-file.mpeg

(en remplaçant le chemin vers le fichier par celui d'un fichier qui devrait fonctionner).

Si vous recevez des erreurs ou que vous ne pouvez pas lire le fichier, alors GStreamer n'est pas installé ou est mal configuré. Cela doit être corrigé pour utiliser le framework de Phonon.

Même si vous arrivez à compiler les bibliothèques et extensions de GStreamer, il se peut que cela ne fonctionne toujours pas. Les limitations du matériel pour décoder les différents formats feront que certains de ces formats ne pourront pas être lus. De plus, il se peut que les formats lus ne seront pas décodés assez rapidement par la machine. Le SDK (Software Development Kit) de votre machine contient GStreamer spécialement compilé (et donc optimisé) pour votre matériel. Dans ce cas-là, ces binaires doivent être utilisés pour utiliser au maximum les capacités de votre machine.

Une fois de plus, si vous ne pouvez pas utiliser GStreamer, alors vous ne pouvez pas utiliser Phonon. Dans ce cas là, vous devez contacter le fournisseur du SDK ou rapporter un bogue sur la page de projet de GStreamer.

Créé le 7 mai 2012  par Alexandre Laurent

Une méthode pour créer la miniature d'une vidéo est d'utiliser QPixmap::grabWindow() afin de construire une pixmap en capturant le contenu d'une fenêtre donnée. Ensuite, vous pouvez sauvegarder la pixmap avec QPixmap::save().

Le problème de cette approche est que, s'il y a une autre fenêtre qui recouvre la vidéo, cela va capturer cet objet gênant.

Une autre approche est d'utiliser Phonon pour charger une vidéo puis d'utiliser QPixmap::grabWidget() sur le widget vidéo.

Créé le 7 mai 2012  par Alexandre Laurent

Si vous voulez distribuer votre programme utilisant Phonon sur d'autres machines, vous devez joindre les fichiers suivants avec votre application. Dans le répertoire de votre exécutable, quel que soit votre compilateur, il faudra :

  • votreProgramme.exe ;
  • phonon4.dll ;
  • QtCore4.dll ;
  • QtGui4.dll ;
  • QtOpenGL4.dll ;
  • un répertoire phonon_backend, avec le fichier phonon_ds9d4.dll.

Il est nécessaire de copier QtOpenGL4.dll, car le framework se base dessus sous Windows.

Pour MinGW, dans le dossier de l'application, vous devez aussi avoir :

  • libgcc_s_dw2-1.dll ;
  • mingwm10.dll.

Pour Visual Studio, il faut installer sur la machine cible les bibliothèques de Visual Studio. Pour cela, il suffit d'installer un des redistribuables Microsoft Visual Studio. Une version est généralement disponible dans votre installation.

Créé le 7 mai 2012  par Alexandre Laurent
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2006 - 2017 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.