{"id":13438397,"url":"https://github.com/PipeWire/pipewire","last_synced_at":"2025-03-19T18:33:02.855Z","repository":{"id":37789725,"uuid":"92733703","full_name":"PipeWire/pipewire","owner":"PipeWire","description":"Mirror of the PipeWire repository (see https://gitlab.freedesktop.org/pipewire/pipewire/)","archived":false,"fork":false,"pushed_at":"2024-10-29T10:56:03.000Z","size":34581,"stargazers_count":1825,"open_issues_count":43,"forks_count":133,"subscribers_count":68,"default_branch":"master","last_synced_at":"2024-10-29T12:47:34.859Z","etag":null,"topics":["audio","daemon","framework","multimedia","video"],"latest_commit_sha":null,"homepage":"http://pipewire.org","language":"C","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PipeWire.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-05-29T11:30:05.000Z","updated_at":"2024-10-29T10:56:07.000Z","dependencies_parsed_at":"2023-09-23T02:07:08.315Z","dependency_job_id":"f7b30ce3-b905-41a4-999f-15b1c0992856","html_url":"https://github.com/PipeWire/pipewire","commit_stats":null,"previous_names":[],"tags_count":132,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PipeWire%2Fpipewire","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PipeWire%2Fpipewire/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PipeWire%2Fpipewire/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PipeWire%2Fpipewire/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PipeWire","download_url":"https://codeload.github.com/PipeWire/pipewire/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244483779,"owners_count":20460175,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio","daemon","framework","multimedia","video"],"created_at":"2024-07-31T03:01:05.191Z","updated_at":"2025-03-19T18:33:01.155Z","avatar_url":"https://github.com/PipeWire.png","language":"C","readme":"# PipeWire\n\n[PipeWire](https://pipewire.org) is a server and user space API to\ndeal with multimedia pipelines. This includes:\n\n  - Making available sources of video (such as from a capture devices or\n    application provided streams) and multiplexing this with\n    clients.\n  - Accessing sources of video for consumption.\n  - Generating graphs for audio and video processing.\n\nNodes in the graph can be implemented as separate processes,\ncommunicating with sockets and exchanging multimedia content using fd\npassing.\n\n## Building and installation\n\nThe preferred way to install PipeWire is to install it with your\ndistribution package system. This ensures PipeWire is integrated\ninto the rest of your system for the best experience.\n\nIf you want to build and install PipeWire yourself, refer to\n[install](INSTALL.md) for instructions.\n\n## Usage\n\nThe most important purpose of PipeWire is to run your favorite apps.\n\nSome applications use the native PipeWire API, such as most compositors\n(gnome-shell, wayland, ...) to implement screen sharing. These apps will\njust work automatically.\n\nMost audio applications can use either ALSA, JACK or PulseAudio as a\nbackend. PipeWire provides support for all 3 backends. Depending on how\nyour distribution has configured things this should just work automatically\nor with the provided scripts shown below.\n\nPipeWire can use environment variables to control the behaviour of\napplications:\n\n* `PIPEWIRE_DEBUG=\u003clevel\u003e`         to increase the debug level (or use one of\n                                   `XEWIDT` for none, error, warnings, info,\n                                   debug, or trace, respectively).\n* `PIPEWIRE_LOG=\u003cfilename\u003e`        to redirect log to filename\n* `PIPEWIRE_LOG_SYSTEMD=false`     to disable logging to systemd journal\n* `PIPEWIRE_LATENCY=\u003cnum/denom\u003e`   to configure latency as a fraction. 10/1000\n                                   configures a 10ms latency. Usually this is\n\t\t\t\t   expressed as a fraction of the samplerate,\n\t\t\t\t   like 256/48000, which uses 256 samples at a\n\t\t\t\t   samplerate of 48KHz for a latency of 5.33ms.\n\t\t\t\t   This function does not attempt to configure\n\t\t\t\t   the samplerate.\n* `PIPEWIRE_RATE=\u003cnum/denom\u003e`      to configure a rate for the graph.\n* `PIPEWIRE_QUANTUM=\u003cnum/denom\u003e`   to configure latency as a fraction and a\n                   samplerate. This function will force the graph samplerate to\n                   `denom` and force the specified `num` as the buffer size.\n* `PIPEWIRE_NODE=\u003cid\u003e`             to request a link to the specified node. The\n                    id can be a node.name or object.serial of the target node.\n\n### Using tools\n\n`pw-cat` can be used to play and record audio and midi. Use `pw-cat -h` to get\nsome more help. There are some aliases like `pw-play` and `pw-record` to make\nthings easier:\n\n```\n$ pw-play /home/wim/data/01.\\ Firepower.wav\n```\n\n### Running JACK applications\n\nDepending on how the system was configured, you can either run PipeWire and\nJACK side-by-side or have PipeWire take over the functionality of JACK\ncompletely.\n\nIn dual mode, JACK apps will by default use the JACK server. To direct a JACK\napp to PipeWire, you can use the `pw-jack` script like this:\n\n```\n$ pw-jack \u003cappname\u003e\n```\n\nIf you replaced JACK with PipeWire completely, `pw-jack` does not have any\neffect and can be omitted.\n\nJACK applications will automatically use the buffer-size chosen by the\nserver. You can force a maximum buffer size (latency) by setting the\n`PIPEWIRE_LATENCY` environment variable like so:\n\n```\nPIPEWIRE_LATENCY=128/48000 jack_simple_client\n```\nRequests the `jack_simple_client` to run with a buffer of 128 or\nless samples.\n\n\n### Running PulseAudio applications\n\nPipeWire can run a PulseAudio compatible replacement server. You can't\nuse both servers at the same time. Usually your package manager will\nmake the server conflict so that you can only install one or the\nother.\n\nPulseAudio applications still use the regular PulseAudio client\nlibraries and you don't need to do anything else than change the\nserver implementation.\n\nA successful swap of the server can be verified by checking the\noutput of\n\n```\npactl info\n```\nIt should include the string:\n```\n...\nServer Name: PulseAudio (on PipeWire 0.3.x)\n...\n```\n\nYou can use pavucontrol to change profiles and ports, change volumes\nor redirect streams, just like with PulseAudio.\n\n\n### Running ALSA applications\n\nIf the PipeWire alsa module is installed, it can be seen with\n\n```\n$ aplay -L\n```\n\nALSA applications can then use the `pipewire:` device to use PipeWire\nas the audio system.\n\n### Running GStreamer applications\n\nPipeWire includes 2 GStreamer elements called `pipewiresrc` and\n`pipewiresink`. They can be used in pipelines such as this:\n\n```\n$ gst-launch-1.0 pipewiresrc ! videoconvert ! autovideosink\n```\n\nOr to play a beeping sound:\n\n```\n$ gst-launch-1.0 audiotestsrc ! pipewiresink\n```\n\nPipeWire provides a device monitor as well so that\n\n```\n$ gst-device-monitor-1.0\n```\n\nshows the PipeWire devices and applications like cheese will\nautomatically use the PipeWire video source when possible.\n\n### Inspecting the PipeWire state\n\nTo inspect and manipulate the PipeWire graph via GUI, you can use [Helvum](https://gitlab.freedesktop.org/ryuukyu/helvum).\n\nAlternatively, you can use use one of the excellent JACK tools, such as `Carla`,\n`catia`, `qjackctl`, ...\nHowever, you will not be able to see all features like the video\nports.\n\n`pw-mon` dumps and monitors the state of the PipeWire daemon.\n\n`pw-dot` can dump a graph of the pipeline, check out the help for\nhow to do this.\n\n`pw-top` monitors the real-time status of the graph. This is handy to\nfind out what clients are running and how much DSP resources they\nuse.\n\n`pw-dump` dumps the state of the PipeWire daemon in JSON format. This\ncan be used to find out the properties and parameters of the objects\nin the PipeWire daemon.\n\nThere is a more complicated tool to inspect the state of the server\nwith `pw-cli`. This tool can be used interactively or it can execute\nsingle commands like this to get the server information:\n\n```\n$ pw-cli info 0\n```\n\n## Documentation\n\nFind tutorials and design documentation [here](doc/index.dox).\n\nThe (incomplete) autogenerated API docs are [here](https://docs.pipewire.org).\n\nThe Wiki can be found [here](https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/home)\n\n## Contributing\n\nPipeWire is Free Software and is developed in the open. It is mostly\nlicensed under the [MIT license](COPYING). Check [LICENSE](LICENSE) for\nmore details about the exceptions.\n\nContributors are encouraged to submit merge requests or file bugs on\n[gitlab](https://gitlab.freedesktop.org/pipewire).\n\nJoin us on IRC at #pipewire on [OFTC](https://www.oftc.net/).\n\nWe adhere to the Contributor Covenant for our [code of conduct](CODE_OF_CONDUCT.md).\n\n[Donate using Liberapay](https://liberapay.com/PipeWire/donate).\n\n## Getting help\n\nYou can ask for help on the IRC channel (see above).  You can also ask\nquestions by [raising](https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/new)\na gitlab issue.\n","funding_links":["https://liberapay.com/PipeWire/donate"],"categories":["C","HarmonyOS"],"sub_categories":["Windows Manager"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPipeWire%2Fpipewire","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FPipeWire%2Fpipewire","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPipeWire%2Fpipewire/lists"}