概要
Bluetoothイヤホンとか,Bluetoothレシーバーとかありますが,充電するのがめんどいですね.
スマホなら充電は基本できてるし,ずっとスマホにイヤホンを刺しておいて,PC使うときにスマホからPCの音が聞けたら素敵ですよね?
LinuxPCの音 -> LAN -> Android端末のイヤホンorスピーカー
というわけです.
はい.やってみましょう.
方法
PulseAudioの**module-simple-protocol-tcp
**を使います.
PulseAudioは音声入出力デバイスを管理するためのサウンドサーバーですが,音声をTCPで別ホストのPulseAudioに流すという機能もあります.
しかし今回のクライアントはAndroid端末です.
そこで,**PulseDroid**というアプリを使います.
このアプリはmodule-simple-protocol-tcp
でTCP越しに送られてきたデータをAndroidで再生してくれるオープンソースのAndroidアプリです.
めっちゃ古いアプリですが,Android 10のスマホでも問題なく利用できています.
PC側設定
$ pactl load-module module-null-sink sink_name=TCP_output
$ pacmd update-sink-proplist TCP_output device.description=TCP_output
$ pactl load-module module-simple-protocol-tcp rate=48000 format=s16le channels=2 source=TCP_output.monitor record=true port={適当なポート番号} listen=0.0.0.0
その後,pavucontrol
を起動します.
「再生」タブから転送したい出力の出力先を「TCP_output」に設定します.
Android側設定
Androidアプリをダウンロードします.
https://github.com/dront78/PulseDroid/raw/master/bin/PulseDroid.apk
インストールして起動するとこのように表示されます.
ServerにPCのIPアドレス,Portに先程決めたポート番号を設定してStartボタンを押すと,音が流れ始めるはずです!!
新しいAndroid端末は小電力化のために自動でバックグラウンドプロセスを一定時間で終了させる機能がついています.
なのでこの機能が採用される前のアプリをインストールすると予期せずバックグラウンドプロセスが終了することがあります.
PulseDroidも例にもれず,しばらく時間が経つと音が勝手に消えてしまいます.
それを回避するために,設定 -> アプリ情報 -> PulseDroid -> 詳細設定-> 電池の最適化
から,「最適化しない」を選んでおきます.
これで何時間でも使えるはずです!!!!
注意1
load-module
した後に,PulseDroidでStartするようにしないと聞こえません.(逆になったときは単純にPulseDroidをStartし直せばOK)
永続設定
PCで起動時に自動でONにしたい場合は設定ファイルに書きましょう.
.config/pulse/default.pa
.include /etc/pulse/default.pa
load-module module-null-sink sink_name=TCP_output
update-sink-proplist TCP_output device.description=TCP_output
load-module module-simple-protocol-tcp rate=48000 format=s16le channels=2 source=TCP_output.monitor record=true port={適当なポート番号} listen=0.0.0.0