Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
pipewire [Le 27/03/2023, 00:57] 192.168.1.1pipewire [Le 16/02/2024, 02:05] (Version actuelle) 192.168.1.1
Ligne 1: Ligne 1:
 {{tag>Kinetic multimédia audio vidéo mao}} {{tag>Kinetic multimédia audio vidéo mao}}
  
-{{ https://doc.ubuntu-fr.org/_media/logo/pipewire.png?100| logo de PipeWire}}+{{ :logo:pipewire.png?100| logo de PipeWire}}
  
 ====== PipeWire ====== ====== PipeWire ======
Ligne 17: Ligne 17:
  
 ===== Installation ===== ===== Installation =====
 +==== Ubuntu 22.10 ou supérieure ====
 PipeWire est installé par défaut sur Ubuntu à partir de la version [[:kinetic|Kinetic 22.10]]. Vous pouvez [[:tutoriel:comment_installer_un_paquet|installer le paquet]] **[[apt>pipewire-jack]]** pour profiter des applications compatibles [[:jackd|JACK]]. PipeWire est installé par défaut sur Ubuntu à partir de la version [[:kinetic|Kinetic 22.10]]. Vous pouvez [[:tutoriel:comment_installer_un_paquet|installer le paquet]] **[[apt>pipewire-jack]]** pour profiter des applications compatibles [[:jackd|JACK]].
  
 +On ne trouve les paquets **[[apt>pipewire-alsa]]** et **[[apt>pipewire-jack]]** qu'à partir de [[:kinetic|Kinetic 22.10]].
 +
 +==== Ubuntu 20.04 et 22.04 ====
 Sur les versions précédentes il est possible d'[[:tutoriel:comment_installer_un_paquet|installer le paquet]] **[[apt>pipewire]]** depuis les dépôts officiels à partir de [[:focal|Focal 20.04]] ([[:depots#sections_universe_et_multiverse_maintenues_par_les_motu|dépôt universe]] pour cette version précise). Sur les versions précédentes il est possible d'[[:tutoriel:comment_installer_un_paquet|installer le paquet]] **[[apt>pipewire]]** depuis les dépôts officiels à partir de [[:focal|Focal 20.04]] ([[:depots#sections_universe_et_multiverse_maintenues_par_les_motu|dépôt universe]] pour cette version précise).
  
 On trouve **[[apt>pipewire-pulse]]** à partir de [[:jammy|Jammy 22.04]] ([[:depots#sections_universe_et_multiverse_maintenues_par_les_motu|dépôt universe]] pour cette version précise). On trouve **[[apt>pipewire-pulse]]** à partir de [[:jammy|Jammy 22.04]] ([[:depots#sections_universe_et_multiverse_maintenues_par_les_motu|dépôt universe]] pour cette version précise).
  
-On ne trouve les paquets **[[apt>pipewire-alsa]]** et **[[apt>pipewire-jack]]** qu'à partir de [[:kinetic|Kinetic 22.10]]. 
  
 Avec [[apt>pipewire-pulse]] et [[apt>pipewire-alsa]], il est conseillé de désinstaller respectivement [[:PulseAudio]] et [[:jackd|JACK]]. Avec [[apt>pipewire-pulse]] et [[apt>pipewire-alsa]], il est conseillé de désinstaller respectivement [[:PulseAudio]] et [[:jackd|JACK]].
  
 +=== Installer le gestionnaire WirePlumber (recommandé) ===
 +
 +Le gestionnaire de session par défaut est **pipewire-media-session**, un autre gestionnaire de session du son est disponible et est intensivement recommandé car il serait plus performant et aurait plus de fonctionnalité.
 +
 +<code>
 +sudo add-apt-repository ppa:pipewire-debian/wireplumber-upstream
 +
 +sudo apt-get update
 +</code>
 +
 +Installez les paquets additionnels de pipewire
 +<code>
 +sudo apt install gstreamer1.0-pipewire libpipewire-0.3-{0,dev,modules} libspa-0.2-{bluetooth,dev,jack,modules} pipewire{,-{audio-client-libraries,pulse,bin,jack,alsa,v4l2,libcamera,locales,tests}}
 +</code>
 +
 +Installez le gestionnaire de session
 +<code>
 +sudo apt-get install wireplumber{,-doc} gir1.2-wp-0.4 libwireplumber-0.4-{0,dev}
 +</code>
 +
 +Maintenant, cachez pulseaudio (votre ancien gestionnaire)((source: [[https://github.com/pipewire-debian/pipewire-debian#1-add-the-launchpad-ppa|étape 3a documentation]]))
 +<note tip>Vous n'avez pas besoin de supprimer pulseaudio pour le remplacer par pipewire</note>
 +<code>
 +systemctl --user --now disable pulseaudio.{socket,service}
 +systemctl --user mask pulseaudio
 +</code>
 +
 +Lancer cette commande pour autoriser et lancer PipeWire((source: étape 3b de la documentation)).
 +<code>
 +systemctl --user --now enable pipewire{,-pulse}.{socket,service} filter-chain.service
 +</code>
 +
 +Puisqu'on a choisi WirePlumber comme gestionnaire de session, on doit lancer cette commande
 +<code>
 +systemctl --user --now enable wireplumber.service
 +</code>
 +
 +Vous devriez avoir du son, désormais avec PipeWire + WirePlumber
 +
 +//Voir [[https://github.com/pipewire-debian/pipewire-debian#1-add-the-launchpad-ppa|la documentation sur la forge officielle]]//
 +
 +==== Ubuntu 18.04 ====
 <note>Il est aussi possible d'installer PipeWire et tous ses outils sur des versions plus anciennes qui ne les incluent pas dans les dépôts par défaut, à partir d'Ubuntu [[:bionic|Bionic 18.04]]. <note>Il est aussi possible d'installer PipeWire et tous ses outils sur des versions plus anciennes qui ne les incluent pas dans les dépôts par défaut, à partir d'Ubuntu [[:bionic|Bionic 18.04]].
  
Ligne 34: Ligne 78:
 Voir ici la documentation en anglais à ce sujet : https://pipewire-debian.github.io/pipewire-debian/</note> Voir ici la documentation en anglais à ce sujet : https://pipewire-debian.github.io/pipewire-debian/</note>
  
-===== Utilisation ===== +===== Configuration =====
- +
-==== Configuration ====+
  
 Pour une utilisation simple il n'y a rien à configurer. Il suffit de choisir la sortie audio de son choix dans les [[:gnome-control-center|paramètres du système]] ou plus rapidement dans le [[gnome-shell#le_menu_systeme|menu système de la barre supérieure]] (pour [[:GNOME]], à adapter si vous utilisez un autre [[:environnements|environnement de bureau]]). Pour une utilisation simple il n'y a rien à configurer. Il suffit de choisir la sortie audio de son choix dans les [[:gnome-control-center|paramètres du système]] ou plus rapidement dans le [[gnome-shell#le_menu_systeme|menu système de la barre supérieure]] (pour [[:GNOME]], à adapter si vous utilisez un autre [[:environnements|environnement de bureau]]).
- 
-Pour voir la liste des logiciels et appareils disponibles : 
-<code>wpctl status</code> 
  
 Pour voir la liste des actions disponibles en [[:commande_shell|ligne de commande]] : Pour voir la liste des actions disponibles en [[:commande_shell|ligne de commande]] :
 <code>pw-cli help</code> <code>pw-cli help</code>
 +
 +Pour voir la liste des logiciels et appareils disponibles (via [[#gestionnaire_de_session|WirePlumber]]) :
 +<code>wpctl status</code>
  
 ==== Routage ==== ==== Routage ====
Ligne 60: Ligne 102:
  
 {{:captures:qpwgraph_screenshot-1.png?400|}} {{:captures:qpwgraph_screenshot-1.png?400|}}
 +
 +Il n'est pas indispensable d'utiliser cette interface. Les simples connexions sont gérées automatiquement depuis les paramètres de l'[[:environnements|environnement de bureau]] : en choisissant une sortie audio dans le [[:gnome-shell#le_menu_systeme|menu système de GNOME]] par ex., les logiciels du bureau (tels que le navigateur internet ou les lecteurs audio ou vidéo) se connecteront automatiquement au périphérique audio sélectionné. **qpwgraph** peut permettre de visualiser ce comportement.
 +
 +Le routage vidéo permet de diriger le ou les flux vidéo de webcams, de cartes d'[[:capture_video|acquisition vidéo]], ou de lecteurs vidéos, vers un ou des logiciel(s) de //streaming// (tel que [[:OBS]]), ou de capture ([[:VJing]] ou enregistrement), ou autres logiciels multimédia en temps réel.
  
 <note tip> <note tip>
-Il n'est pas indispensable d'utiliser cette interface. Les simples connexions sont gérées automatiquement depuis les paramètres de l'[[:environnements|environnement de bureau]] : en choisissant une sortie audio dans le [[:gnome-shell#le_menu_systeme|menu système de GNOME]] par ex., les logiciels du bureau (tels que le navigateur internet ou les lecteurs audio ou vidéo) se connecteront automatiquement au périphérique audio sélectionné. qpwgraph peux permettre de visualiser ce comportement.+On peut aussi visualiser ces connexions actives sans passer par **qpwgraph** au moyen de la commande : 
 +<code>wpctl status</code> 
 +Chaque connexion est un "//Stream//" représenté par ''source > destination''.
 </note> </note>
  
Ligne 70: Ligne 118:
  
 Il n'existe pour le moment pas d'interface graphique pour le gérer. Il n'existe pour le moment pas d'interface graphique pour le gérer.
 +
 +On peut le contrôler avec la commande ''wpctl'' et ses fichiers de configuration se trouvent sous ''/usr/share/wireplumber''.
 +
 +==== Création d'appareils virtuels ====
 +
 +Il peut être utile de créer un appareil virtuel (//virtual sink//) pour par ex. faciliter le routage entre les différentes applications.
 +
 +Pour cela créez un fichier ''~/.config/pipewire/pipewire.conf.d/10-null-sink.conf'' contenant par ex. :
 +
 +<file conf 10-null-sink.conf>context.objects = [
 +    {   factory = adapter
 +        args = {
 +           factory.name     = support.null-audio-sink
 +           node.name        = "Virtual Stereo"
 +           media.class      = Audio/Sink
 +           object.linger    = true
 +           audio.position   = [ FL FR ]
 +           monitor.channel-volumes = true
 +        }
 +    }
 +    {   factory = adapter
 +        args = {
 +           factory.name     = support.null-audio-sink
 +           node.name        = "Virtual Quadri"
 +           media.class      = Audio/Sink
 +           object.linger    = true
 +           audio.position   = [ FL FR RL RR ]
 +           monitor.channel-volumes = true
 +        }
 +    }
 +]</file>
 +Ici on crée 2 appareils virtuels, un stéréo, l'autre quadriphonique.
 +
 +==== Réseau ====
 +
 +De la même manière il est possible de créer différents types de //[[#creation_d_appareils_virtuels|virtual sinks]]//, par ex. pour diffuser à distance (//streamer//) de l'audio en utilisant différents protocoles réseaux ([[https://github.com/roc-streaming/roc-toolkit|ROC]], [[wpfr>Real-time_Transport_Protocol|RTP]], [[wpfr>AirPlay_(Apple)|AirPlay]], [[:pulseaudio|Pulse]] Tunnel, [[:jackd|JACK]] Tunnel, etc.). Voir la liste des modules disponibles sur la [[https://docs.pipewire.org/page_pipewire_modules.html|documentation officielle]] et sur le [[https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Network|wiki de freedesktop.org]].
 +
 +Ceci permet de diffuser le son de votre ordinateur (qu'il s'agisse seulement du son de certaines applications ou de l'intégralité des sons du bureau) sur un appareil distant.
 +
 +Grâce à [[:ZeroConf]], PipeWire peut créer automatiquement des //virtual sinks// correspondant à des appareils connectés à votre réseau local. Par ex. pour profiter d'un appareil AirPlay :
 +<code>pactl load-module module-raop-discover</code>
 +Les appareils compatibles AirPlay visibles devraient alors apparaître comme les interfaces audio ordinaires de votre ordinateur.
 +
 +===== Problèmes courants =====
 +
 +  * Pour savoir quel serveur de son vous utilisez, entrez la commande suivante : <code>pactl info</code>Si le retour indique ''Nom du serveur : PulseAudio (on PipeWire)'', vous utilisez bien PipeWire.
 +
 +  * La commande <code>fuser -v /dev/snd/*</code> indique également si on utilise PipeWire et WirePlumber, ou autre serveur de son et [[#gestionnaire de session]].
 +
 +  * Pour obtenir des informations sur votre installation audio, vous pouvez aussi [[:tutoriel:comment_installer_un_paquet|installer le paquet]] **[[apt>inxi]]** et lancer la commande : <code>inxi -A</code>
 +
 +  * La commande <code>systemctl --user status pipewire</code> donnera aussi de nombreuses informations sur l'état du serveur.
 +
 +  * La commande <code>wpctl status</code> donne un aperçu général de la configuration audio.\\ Chaque élément audio ou vidéo (matériel ou logiciel) est précédé d'un numéro qu'on peut utiliser comme identifiant (//ID//). On peut utiliser cet //ID// pour obtenir une description détaillée d'un élément précis de la manière suivante : <code>wpctl inspect ID</code>
 +
 +==== Delay Bluetooth ====
 +
 +La connexion [[:bluetooth]] introduit un temps de latence. Quand on regarde des vidéos, la vidéo est généralement retardée de la même durée sans qu'on s'en rende compte, ce qui permet à l'ensemble de rester synchronisé.
 +
 +PipeWire permet d'utiliser plusieurs sorties simultanément, dans ce cas on perçoit par contre bien l'écart audio entre une sortie filaire et une sortie bluetooth.\\
 +Le seul moyen de synchroniser les 2 signaux est alors de retarder le signal filaire.
 +
 +À cette fin on peut trouver des informations au chapitre //Delay// de [[https://docs.pipewire.org/page_module_filter_chain.html#Delay|la documentation]] en anglais.\\
 +Une autre possibilité peut-être plus simple (mais plus lourde) est d'ajouter un [[mao#effets|effet]] [[:jackd|JACK]] ou [[:LV2]] qui propose ce genre de chose dans la chaîne audio (un //[[wpfr>Delay_(effet)|delay]]// sans //feedback// et 100% //wet// - sans signal source).
  
 ===== Voir aussi ===== ===== Voir aussi =====
  
   * **(en)** [[https://pipewire.org|Site officiel]]   * **(en)** [[https://pipewire.org|Site officiel]]
 +  * **(en)** [[https://docs.pipewire.org|Documentation officielle]]
 +  * **(en)** [[https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/home|Wiki PipeWire]] sur [[wpfr>Freedesktop.org]]
   * [[https://linuxmao.org/PipeWire|PipeWire sur Linux MAO]]   * [[https://linuxmao.org/PipeWire|PipeWire sur Linux MAO]]
 +  * de nombreuses informations souvent valables aussi pour Ubuntu (mais en anglais), sur la [[https://wiki.archlinux.org/title/PipeWire|documentation de Arch Linux]]
  
 ---- ----
 //Contributeurs : [[:utilisateurs:krodelabestiole]]// //Contributeurs : [[:utilisateurs:krodelabestiole]]//