Linuxでオーディオキャスティングを有効にする方法

Audio Casting Featured Image

オーディオキャスティング、またはオーディオストリーミングは、一つのデバイスで再生されたオーディオを他のデバイスで再生することを可能にします。生のオーディオ、ファイル、またはマイク入力であることもあります。多くのテクノロジー企業は独自のオーディオキャスティングのバージョンを持っています。AppleはAirPlayを、GoogleはChromecastを持っています。Linuxでは、オープンソースであるため、さまざまなオーディオキャスティングの方法が利用可能です。

目次

  • 技術的な視点
  • オーディオキャスティングに必要なもの
  • オーディオキャスティングを有効にする方法
  • よくある質問

関連記事: LinuxからChromecastやGoogle Homeに音声をストリーミングする方法

技術的な視点

異なるメーカーは若干異なるプロトコルを使用していますが、ほとんどすべてのオーディオキャスティングはピアツーピア(P2P)ネットワーキングを使用しています。P2Pはトレントに使用されるため、その名を馳せていますが、ネットワーク手法そのものはそれほど悪名高くありません。

基本的にP2Pは、お使いのデバイスと接続されているデバイスがデータ権限を共有することを意味します。双方は自由にデータを送受信できます。オーディオキャスティングの目的では、送信者がオーディオデータをバイナリに変換し、受信者はそれを再度オーディオデータに変換します。圧縮、ビットレート、バッファリングもこのプロセスで重要ですが、今私たちが飛び込むのは別の話です。

オーディオキャスティングに必要なもの

これらは音声をキャストするために使用する主なアプリケーションです。他にもインストールを伴う方法がありますが、これらはPulseaudioと対話するために使用する主なものです。

Pulseaudioの設定

Paprefs(Pulseaudioの設定)は、すべてのPulseaudioモジュールにアクセスするのに優れた方法です。これを実装するには通常、ドキュメントをくまなく探し、ターミナルを使用する必要がありますが、便利なGUIがあればはるかに簡単です。次のコマンドでPaprefsをインストールします。

sudo apt install paprefs

Paprefsの一つの問題は、Pulseaudioのデフォルトフォルダー名を使用していることです。これを介してモジュールをアクティブ化またはインストールしようとすると、そのデフォルトフォルダーに移動します。このフォルダーはPulseaudioが更新されると存在しないことがあります。

これを解決するには、Paprefsを正しいフォルダーにポイントするシンボリックリンクを作成します。

実際のフォルダーは「pulse-15.99.1+dfsg1」です。シンボリックリンクフォルダーは「pulse-13.99」です。Paprefsはそれをそのように登録しますが、実際のフォルダーを指しているだけで新しいものを自身で作成するのではありません。シンボリックリンクを作成するには、次のターミナルコマンドを使用します。

sudo ln -s '/usr/lib/pulse-15.99.1+dfsg1' '/usr/lib/pulse-15.99'

関連記事: PulseEffectsでLinux PCのオーディオを改善する方法

Pulseaudio音量コントロール

このアプリケーションは、Pulseaudioのシンクとモニターと対話することを可能にします。これは、オーディオが望む場所で再生されているかどうかを確認するのに役立つだけでなく、複数のシンクやコンピューターで作業する際には視覚的インターフェースが常に役立ちます。

以下のターミナルコマンドでPavucontrolをインストールします。

sudo apt install pavucontrol

オーディオキャスティングを有効にする方法

Linuxのすべてのことと同様に、Linuxでオーディオキャスティングを有効にすることは、簡単な場合から非常に困難な場合までさまざまです。私のテストと手法はUbuntuに焦点を当てていますが、Archや他のディストリビューションを使用している場合も、プロセスは似ているはずです。

RTPオーディオキャスティング

RTP(リアルタイムトランスポートプロトコル)を使用することは、私がテストする際に見つけた最も簡単な方法です。ここではPulseaudioを使用しています。

  1. Paprefsのマルチキャスト/RTPタブに移動し、両方のデバイスで「マルチキャスト/RTP受信者を有効にする」と「マルチキャスト/RTP送信者を有効にする」ボックスをチェックします。一方を有効にすることもできますが、両方のデバイスから送受信できるようにしたいので、両方を有効にします。

Screenshot From 2022 09 28 20 28 02

  1. 別のシンクを作成するか、スピーカーから直接別のデバイスにオーディオをフィードすることができます。別のシンクを使用すると、送信するオーディオの音量や形式を制御できます。他のデバイスからのオーディオモニターがPavucontrolの入力デバイスセクションにストリーム表示されるはずです。
  2. ターミナル派の方は、次のモジュールを「/etc/pulse/default.pa」ファイルに追加することもできます。これらはPaprefsで受信者と送信者を有効にするのと同じことを行います。
load-module module-null-sink sink_name=rtp  
load-module module-rtp-send source=rtp.monitor  
set-default-sink rtp  
load-module module-rtp-recv

手動で行う場合は、chmodを使用してdefault.paファイルの権限を変更する必要があります。

関連記事: Linuxで端末に入力できない問題を解決する方法

直接接続オーディオキャスティング

両方のコンピュータの「/etc/pulse/default.pa」ファイルに次の行を追加します。これらのモジュールはサーバーとクライアント間の認証用です。

load-module module-esound-protocol-tcp auth-anonymous=1  
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/24

さらに、「/etc/pulse/client.conf」ファイルにdefault-serverパラメータを設定します。サーバーのIPアドレスまたはホスト名(PC名)のいずれかを使用できます。

WindowsからLinuxへのオーディオキャスティング

WindowsコンピュータからLinuxデバイスにストリーミングしたい場合、PulseaudioだけではWindowsからLinux、またはその逆に信頼性の高いストリーミングはできません。Screamは、WindowsからLinuxへの音声キャストを可能にする数少ない代替手段の一つです。この方法はWindows 11でテストされていないことに注意してください。

インストールは、GithubリンクからWindows 10アプリケーションをダウンロードし、リポジトリからLinux受信機をダウンロードするだけの簡単な作業です。以下のターミナルコマンドで受信機をインストールでき、受信機リンクでも入手できます。

# Redhat, CentOS, など  
sudo yum install pulseaudio-libs-devel  
  
# Debian, Ubuntu, など  
sudo apt-get install libpulse-dev

Pulseaudioの使用を避けたい場合、JackはWindowsからLinuxへのオーディオストリーミングの確実な方法を提供します。この方法は、ASIOブリッジを使用して、JACKをWindowsコンピュータのオーディオシンクに接続します。

LinuxとWindowsの両方のコンピュータにJACKをインストールします。Windowsでは、以下のリンクからダウンロードしてインストールできます。Linuxの場合は、パッケージマネージャからインストールする必要があります。私の場合、aptを使用し、次のコマンドを使用しました。

sudo apt install jackd

また、WindowsマシンにASIO Bridgeをインストールしておく必要があります。インストールが完了したら、Windowsのコマンドラインで以下のコマンドを実行します。

regsvr32 32bits\JackRouter.dll  
regsvr32 64bits\JackRouter.dll

Linuxマシンでは、ターミナルにjack_load netmanagerと入力するか、qjackctlを使用して自動的にアクティブ化するよう設定します(CadenceやCatiaも素晴らしいパッチベイです)同じコマンドを使用します。オプションタブに移動し、「起動後にスクリプトを実行する」ボックスにチェックを入れ、コマンドを追加します。

Screenshot From 2022 09 30 18 10 28

最後のステップは、WindowsデバイスでJACK NetDriverを起動します。あるいは、コマンドラインにjackd -R -d netと入力し、ASIO Bridgeを起動し、ASIOデバイスをJackRouterに設定します。qjackctlや選択したパッチベイにWindowsのホスト名が表示されるはずです。この手順はqjackctlの再起動を必要とする場合があるので、最初の試行で成功しなくても心配しないでください。

関連記事: Linuxでflac2allを使用してFLACファイルをトランスコードする方法

よくある質問

Linuxでオーディオをキャストするために使用できる代替アプリケーションはありますか?

Linuxには多くのメディアサーバーやキャスティングアプリケーションがあります。すべてを説明しきることは不可能ですが、特に注目すべきはMkchromecastやSoundwireです。

オーディオキャスティングを有効にすると、私のPCはサイバー攻撃に対して脆弱になりますか?

ネットワーク関連の作業において懸念されるのはセキュリティです。いくつかのオーディオキャスティング方法はコンピュータを脆弱にする可能性がありますが、実際の危険はあまりないと思われます – 閉じられたLANネットワーク内で作業している限りは。

これらの方法を使用してテレビにオーディオをキャストできますか?

残念ながら、VLCやmkchromecastのような外部アプリケーションがない限り、RTPや直接接続を使用してオーディオをテレビに直接送信することはできません。しかし、ほとんどのスマートテレビはアプリケーションをインストールしたり、他のデバイスからオーディオを受信および送信したりすることを許可します。