音声・映像操作マニュアル

8 分で読了
このページの目次

PipeWire + WirePlumber desktop を対象に stream・policy・node・kernel hardware のどこで失敗したか調べる。wpctl・pactl・ALSA の ID は互換でも再起動後に安定でもない。

やりたいこと参照先
音が出ない構造と状態
切替後も旧機器で再生既定先と既存 stream
録音・録画・encode形式と入力元

policy 管理は音声経路の直列要素ではない

PipeWire / WirePlumberアプリpipewire-pulsePipeWireALSA音声機器WirePlumber破線:policy 制御

実線は PulseAudio protocol の再生例。native client は直接 PipeWire へ入る。WirePlumber は link・profile・policy を制御し音声データの直列 hop ではない。Bluetooth は別 backend、図は ALSA の経路。

現 desktop session を先に確認する

# 現 user の audio service を確認する
systemctl --user status pipewire pipewire-pulse wireplumber --no-pager

問題の desktop user で実行し、sudo で root の user manager を見ない。unit 名は環境に合わせる。

# device・node・stream の実名を列挙する
wpctl status -n

現 ID・名前を記録し、再起動・再接続後は取り直す。

# PulseAudio protocol の接続先 server を確認する
pactl info

Server Name/String を想定する互換 server と照合し、接続・session 失敗を先に解決する。

対象の種類ごとに確認する

# 再生先を列挙する
pactl list short sinks
# 録音 device・出力 monitor を列挙する
pactl list short sources

.monitor は通常出力 mix で、物理 mic ではない。

# 再生中に互換層の再生 stream を確認する
pactl list short sink-inputs

native PipeWire stream は現れない場合もある。空なら再生中か・protocol を確認する。

# ALSA が列挙する hardware 再生 device を確認する
aplay -l
# kernel 層で sound card の列挙を確認する
cat /proc/asound/cards

hardware 調査向け。Bluetooth が ALSA にないだけで故障としない。

server の識別、sink、stream を確認する。wpctl の星は既定 node で全 stream の接続先を保証しない。ALSA 列挙だけでは profile・mute・route は不明。

既定機器と固定 stream を分ける

図を準備しています
既定変更後も音声が元に残る理由

既定は自動接続の候補で、既存 stream は独自に固定できる。既定変更・固定・明示移動を分けて示す。

音量・mute を個別に選ぶ

# 既定出力の音量・mute を読む
wpctl get-volume @DEFAULT_AUDIO_SINK@
# 必要時に 5 ポイント上げ、100% を上限にする
wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ --limit 1.0

加算であり 1.05 倍ではない。get-volume で再確認し、route の問題とは分ける。

# 再生を戻す場合に明示的に mute を解除する
wpctl set-mute @DEFAULT_AUDIO_SINK@ 0

0 は解除、1 は mute。toggle は shortcut 向けで、調査では明示状態が再現しやすい。

# mic を止めたい場合だけ入力を mute する
wpctl set-mute @DEFAULT_AUDIO_SOURCE@ 1

入出力は別。本操作は再生修復の必須手順ではない。録音再開は 0 と権限・入力元を確認する。

既定先の変更と既存 stream の移動

# 確認した再生 node を新 stream の既定先にする
wpctl set-default 42

42 を現 sink ID にする。旧既定先を記録し、戻す時も再照会する。星印と新規再生で確認する。

# 移動する再生 stream の現 ID を得る
pactl list short sink-inputs

application と照合する。wpctl sink ID とは別。

# 指定した互換 stream を既存 sink へ移す
pactl move-sink-input 73 YOUR_SINK_NAME

現 ID と sinks 一覧の名前を使う。再一覧・試聴で確認し、stream 再作成後は方針が変わり得る。

profile が合わない場合だけ切り替える

# card の使用可能 profile と現在値を読む
pactl list cards
# 一覧の使用可能な profile を選ぶ
pactl set-card-profile YOUR_CARD_NAME YOUR_PROFILE_NAME

両方 list cards の実名を使い旧 profile を記録する。再生中断・ID 変更があるため再照会し、戻す時は旧実名を使う。

42 は現在の wpctl sink、73 は pactl sink-input。set-default は自動接続する新 stream の既定先で既存移動は policy 等に依存する。特定 stream は明示移動する。profile は利用可能一覧から選び、通話用では音質・capture 能力が変わる。

失敗層の根拠を集めてから再起動

症状発生時の証拠を残す

# 現 session の service error を読む
journalctl --user -u pipewire -u pipewire-pulse -u wireplumber -b -n 150 --no-pager
# node 動作・error・処理時間を観測する
pw-top

負荷を再現し ERR 増加・対象 node を見る。q で終了。一度の高値だけで原因としない。

# 問題 node の詳細属性を見る
wpctl inspect 42

ID を再確認し node.name・device 関連・media type を読む。

# sink の mute・port・状態・属性を読む
pactl list sinks
# device 消失時に kernel・firmware error を読む
journalctl -k -b -n 100 --no-pager
現象対応
Dummy Output のみ列挙・driver/firmware・権限・policy log
sink と stream はあるが無音target・stream/device mute・profile/port・mixer・配線
途切れ・雑音pw-top error・負荷と時刻を照合してから rate/quantum を調整
Bluetooth 無音Bluetooth で接続・profile を確認

根拠がある場合に wireplumber を再起動し必要な層だけ拡げる。アプリの再接続が必要になり得る。aplay hw の失敗は形式や占有でも起こり、speaker-test default は PipeWire 経由かもしれない。124 は timeout の証拠だけ。

入力元を選び container と codec を確認

録音:入力を選び、停止して file を確認する

# 名前で mic または出力 monitor を選ぶ
pactl list short sources
# 確認した入力から WAV を録音する
parecord --file-format=wav --device=YOUR_SOURCE_NAME recording.wav

入力名・未使用 file 名を指定する。Ctrl-C で止め shell が戻ってから次へ進み、録音と後処理を一括貼付しない。

# 録音後に長さ・channel・sample rate・codec を確認する
ffprobe -v error -show_format -show_streams -of json recording.wav

解析・期待する長さを確認して試聴する。存在だけで正しい入力の録音とは限らない。

変換:入力と local encoder を先に確認する

# 入力 file の stream・codec・長さを読む
ffprobe -v error -show_format -show_streams -of json input.mp4
# この build に必要な encoder があるか確認する
ffmpeg -hide_banner -encoders

以下は libx264・aac。hardware encoder は device・driver・権限も必要。

# 最初の映像と任意の最初の音声を H.264/AAC へ変換する
ffmpeg -n -i input.mp4 -map 0:v:0 -map "0:a:0?" \
  -c:v libx264 -crf 23 -c:a aac output.mp4

-n は上書き拒否、-map は stream 選択、? は音声なしを許す。CRF が小さいほど通常品質・容量が増す。全字幕・添付・音声を保持する例ではない。

# 出力形式・長さを確認し、映像・音声を再生確認する
ffprobe -v error -show_format -show_streams -of json output.mp4

container 変更だけなら互換性を確認して新 file へ -c copy を検討する。再 encoding とは別方式。

録音は Ctrl-C で終了。monitor は出力 mix、通常 source は入力。raw parec を拡張子だけで WAV にしない。FFmpeg の例は encoder が必要で CRF23 は万能品質値ではない。copy も container 互換性が必要。

Wayland は desktop 対応 portal/recorder を使う。wf-recorder は対応 screencopy が必要で全 compositor 共通ではない。音声は実 source 名を指定する。media key は現在の desktop 構文で wpctl/playerctl に結ぶ。firmware は kernel の欠落ファイルを特定する。

WirePlumber wpctl · Linking policy · FFmpeg · wf-recorder