筆者について
FreeBSDを通じてOSSにささかな貢献を。
- 日本xrdpユーザ会発起人
- xrdp developer
- FreeBSD developer
OSS活動をご支援いただける方を募集しています
2016-10-19 xrdp でオーディオリダイレクト可能なデスクトップ環境を構築する (Ubuntu 16.10)
■ xrdp でオーディオリダイレクト可能なデスクトップ環境を構築する (Ubuntu 16.10)
この記事は2014年9月18日に書いた xrdp でオーディオリダイレクト可能なデスクトップ環境を構築する (Xbuntu 14.04.1) の改訂版です。
環境
- Linux ディストリビューション
- Ubunut 16.10
- xrdp
- 0.9.0~20160601+git703fedd-3
Ubuntu では 16.10 以降、開発版の xrdp がリポジトリに含まれているので、それを使います。
この記事を書いた時点でのバージョンは 20160601 時点のバージョンです。
xrdp のインストール
Ubuntu では 16.10 以降、開発版の xrdp がリポジトリに含まれているので、それを使います。0.9.0~20160601+git703fedd-3 以降のバージョンであれば OK です。
$ sudo apt install xrdp
source.list の編集
"# deb-src " で始まる行のコメントアウトを解除します。
$ sudoedit /etc/apt/sources.list
sed を使うならこうです。
$ sudo sed -i.bak -e "s/^# deb-src \(.*\)/deb-src \1/" /etc/apt/sources.list
編集が終わったら、apt update を実行しておきます。
PulseAudio モジュールのビルド&インストール
xrdp のソースの中に含まれる pulse-notes.ubuntu.txt をベースにモジュールをインストールします。
dpkg-dev パッケージがインストールされていない場合は、あらかじめインストールしておきます。
$ sudo apt install dpkg-dev
PulseAudio のソースをダウンロードします。
$ cd /tmp $ apt source pulseaudio
PulseAudio に依存するパッケージをインストールします。
$ sudo apt build-dep pulseaudio
PulseAudio をビルドします。
$ cd pulseaudio-8.0 $ dpkg-buildpackage -rfakeroot -uc -b
xrdp の PulseAudio モジュールをビルドします。これには xrdp のソースコードが必要なので、予め clone しておきます。clone 先はどこでもいいですが、今回は $HOME 以下にします。Ubuntu リポジトリにある xrdp のバージョンに合わせるため、devel ブランチを使います。
$ git clone --branch devel --recursive https://github.com/neutrinolabs/xrdp.git
pulse モジュールのディレクトリに入ります。
$ cd ~/xrdp/sesman/chansrv/pulse
Makefile の PULSE_DIR の部分を、先ほどの pulseaudio-8.0 の場所を指すように書き換えます。差分はこのようになります。合わせて、CFLAGS も以下のように書き換えます。
diff --git a/sesman/chansrv/pulse/Makefile b/sesman/chansrv/pulse/Makefile index da1a89a..2471e5d 100644 --- a/sesman/chansrv/pulse/Makefile +++ b/sesman/chansrv/pulse/Makefile @@ -2,8 +2,8 @@ # build xrdp pulseaudio modules # -PULSE_DIR = /home/lk/pulseaudio-1.1 -CFLAGS = -Wall -O2 -I$(PULSE_DIR) -I$(PULSE_DIR)/src -DHAVE_CONFIG_H -fPIC +PULSE_DIR = /tmp/pulseaudio-8.0 +CFLAGS = -Wall -O2 -I$(PULSE_DIR) -I$(PULSE_DIR)/src -I../../../ -I../../../common -I../../ -DHAVE_CONFIG_H -fPIC all: module-xrdp-sink.so module-xrdp-source.so
Makefile を書き換えたら make します。
$ make
make が終わると module-xrdp-sink.so, module-xrdp-source.so という2つのファイルができているので、これを /usr/lib/pulse-8.0/modules 以下にコピーします。
$ sudo cp module-xrdp-sink.so module-xrdp-source.so /usr/lib/pulse-8.0/modules/
これで終わりです。
リモートデスクトップ接続して音を出してみる
ここまで来たら、あとは xrdp にリモートデスクトップで接続するだけです。
xrdp のデーモンを立ち上げておきます。
$ sudo systemctl start xrdp
Windows のリモートデスクトップクライアントで接続し radiko などにアクセスして音を出してみると、リモートデスクトップ経由で音声が転送されて、クライアント側で音声が鳴っているのを確認できると思います。
pavucontrol などで、オーディオの出力先デバイスが xrdp sink になっていれば成功です。
2016年10月1日現在、xrdp はオーディオ転送の MP3 圧縮に対応しています。Ubuntu のリポジトリにあるものは MP3 圧縮が有効になっていないようですが、クライアント・サーバ双方が対応していれば、オーディオが MP3 でエンコードされて転送されます。