Hi all,
I’m having an issue with recording using pipewire. It looks like no audio data is being received.
When I run “pw-record —verbose test.wav” all values remain “0”. Is this a known issue? I don’t see any errors being logged. The audio playback with “pw-play” does work.
stream time: now:0 rate:0/0 ticks:0 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:0
stream time: now:0 rate:0/0 ticks:0 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:0
stream time: now:0 rate:0/0 ticks:0 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:0
This issue might only affect me with this specific setup as I’m running the command in a NixOS-LXC-container using the ProxmoxVE-host as remote. My intention is to connect to the remote via the “native-protocol” over a socket mounted into the container.
Like I said no data seems to be streamed, but when I also run “pw-record” on the host I can see that data also starts to stream to the “pw-record” in the container.
After i enabled “pipewire-pulse” in the container, the recording starts to work as intended. But I’m unsure if I’m now using a pulseaudio-socket or somethjng.
Details:
- running NixOS 24.04 in the LXC container
- no audio data streaming to the LXC container via native-prrotocol from remote
- audio playback from container to remote works
- able to start audio data streaming by starting record on remote
My intention is to run Wyoming Satellite via NicOS in a LXC/container in combination with other LXC containers also having access to audio.
When recording is not working, i get this output “pw-record --verbose test.wav”:
sndfile: opened file "test.wav" format 10010002 channels:2 rate:48000
PCM: fmt:s16 rate:48000 channels:2 width:2
rate:48000 latency:0 (0.000s)
connecting record stream; target=(null)
stream state changed unconnected -> connecting
stream param change: Spa:Enum:ParamId:Latency
stream param change: Spa:Enum:ParamId:Tag
stream param change: Spa:Enum:ParamId:Props
stream properties:
application.name = "pw-record"
node.name = "pw-record"
node.rate = "1/48000"
media.type = "Audio"
media.category = "Capture"
media.role = "Music"
media.filename = "test.wav"
media.name = "test.wav"
stream.is-live = "true"
node.want-driver = "true"
node.autoconnect = "true"
media.class = "Stream/Input/Audio"
remote 0 is named "pipewire-0"
stream state changed connecting -> paused
stream param change: Spa:Enum:ParamId:Props
stream param change: Spa:Enum:ParamId:Latency
stream param change: Spa:Enum:ParamId:Format
stream state changed paused -> streaming
stream set volume to 1.000 - success
stream node 42
stream time: now:0 rate:0/0 ticks:0 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:0
stream time: now:0 rate:0/0 ticks:0 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:0
stream time: now:0 rate:0/0 ticks:0 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:0
stream time: now:0 rate:0/0 ticks:0 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:0
stream time: now:0 rate:0/0 ticks:0 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:0
stream time: now:0 rate:0/0 ticks:0 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:0
stream time: now:0 rate:0/0 ticks:0 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:0
stream time: now:0 rate:0/0 ticks:0 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:0
stream time: now:0 rate:0/0 ticks:0 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:0
When recording does work, i get this output:
[system@wyomingsatellite:~]$ pw-record --verbose test.wav
sndfile: opened file "test.wav" format 10010002 channels:2 rate:48000
PCM: fmt:s16 rate:48000 channels:2 width:2
rate:48000 latency:0 (0.000s)
connecting record stream; target=(null)
stream state changed unconnected -> connecting
stream param change: Spa:Enum:ParamId:Latency
stream param change: Spa:Enum:ParamId:Tag
stream param change: Spa:Enum:ParamId:Props
stream properties:
application.name = "pw-record"
node.name = "pw-record"
node.rate = "1/48000"
media.type = "Audio"
media.category = "Capture"
media.role = "Music"
media.filename = "test.wav"
media.name = "test.wav"
stream.is-live = "true"
node.want-driver = "true"
node.autoconnect = "true"
media.class = "Stream/Input/Audio"
remote 0 is named "pipewire-0"
stream state changed connecting -> paused
stream param change: Spa:Enum:ParamId:Props
stream param change: Spa:Enum:ParamId:Latency
stream param change: Spa:Enum:ParamId:Format
stream state changed paused -> streaming
stream set volume to 1.000 - success
stream node 42
stream time: now:0 rate:0/0 ticks:0 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:0
stream time: now:85603714382469 rate:1/48000 ticks:45056 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:1024
stream time: now:85604717204772 rate:1/48000 ticks:93184 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:1024
stream time: now:85605719990988 rate:1/48000 ticks:141312 delay:0 queued:0 buffered:0 buffers:2 avail:0 size:1024
Update: I just now noticed that the record does work the first time, but when i terminate the command (ctrl-c) then the second time the record does not work. So it seems that something gets “stuck”.
When i run pw-record on the host, i get this output:
remote 0 is named "pipewire-0"
stream state changed connecting -> paused
stream param change: Spa:Enum:ParamId:Props
stream param change: Spa:Enum:ParamId:Latency
stream param change: Spa:Enum:ParamId:Latency
stream param change: Spa:Enum:ParamId:Format
stream state changed paused -> streaming
stream set volume to 1.000 - success
stream node 47
stream time: now:0 rate:0/0 ticks:0 delay:0 queued:0 buffered:0 buffers:0 avail:0
stream time: now:86084923881870 rate:1/48000 ticks:45056 delay:1024 queued:0 buffered:0 buffers:1 avail:0
stream time: now:86085926613730 rate:1/48000 ticks:93184 delay:1024 queued:0 buffered:0 buffers:1 avail:0
stream time: now:86086929321931 rate:1/48000 ticks:141312 delay:1024 queued:0 buffered:0 buffers:1 avail:0
stream time: now:86087932054547 rate:1/48000 ticks:189440 delay:1024 queued:0 buffered:0 buffers:1 avail:0
stream time: now:86088934794173 rate:1/48000 ticks:237568 delay:1024 queued:0 buffered:0 buffers:1 avail:0