JavaScriptを有効にしてください

【Docker】🎧WindowsでDockerから音を出す方法|PulseAudio TCP接続

 ·  ☕ 3 分で読めます

【Docker】🎧WindowsでDockerから音を出す方法|PulseAudio TCP接続

Windows環境でDockerコンテナ内から音を再生したいこと、ありますよね?
しかし、Dockerは音声出力機能を直接サポートしておらず、コンテナ内でGUIアプリや音声処理をしても音が出ません。

PulseAudioをWindowsにインストールし、Dockerと接続して音を再生する方法を、mp3音源にも対応した最小構成で解説します。
また、ホストIPの代わりに host.docker.internal を使うことで、より柔軟な構成にする方法も紹介します。


🧱 全体構成(イメージ)


+------------------------------+
\|   Windows ホスト            |
\|  - PulseAudio サーバー      |
\|  - TCPポート 4713           |
+------------------------------+
↑
TCP接続(音声出力)
↓
+------------------------------+
\| Dockerコンテナ(Linux)     |
\|  - ffplay で mp3 を再生      |
+------------------------------+

PulseAudio for Windowsのセットアップ

✅ PulseAudioをダウンロード

  1. 以下のページから Windows 用 PulseAudio を取得
    🔗 https://www.freedesktop.org/wiki/Software/PulseAudio/Ports/Windows/

  2. ダウンロードした ZIP を展開し、任意のフォルダ(例:C:\pulseaudio)に配置します。


✅ TCPモードでPulseAudioを起動

コマンドプロンプトまたは PowerShell で以下を実行:

1
2
cd C:\pulseaudio
.\pulseaudio.exe -D --exit-idle-time=-1 --load="module-native-protocol-tcp auth-anonymous=1 port=4713"

📌 オプション解説:

  • -D:デーモン起動
  • --exit-idle-time=-1:常に起動状態を維持
  • module-native-protocol-tcp:TCP接続を許可(auth-anonymous=1 はローカル用途に限定)

Dockerイメージを作成

📄 Dockerfile を作成(カレントディレクトリに)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
FROM ubuntu:22.04

RUN apt-get update && \
    apt-get install -y ffmpeg pulseaudio-utils wget && \
    apt-get clean

# テスト用音楽ファイル(みゅうー Menuet mp3)
RUN wget https://www.ne.jp/asahi/music/myuu/wave/menuettm.mp3 -O /test.mp3

CMD ["ffplay", "-nodisp", "-autoexit", "/test.mp3"]

📌 使用する音声ファイル:


📦 Dockerイメージをビルド

1
docker build -t ubuntu-pulseaudio-sample .

3️⃣ Dockerコンテナを実行して音を再生!

host.docker.internal を使って実行

1
2
3
docker run --rm \
  -e PULSE_SERVER=tcp:host.docker.internal \
  ubuntu-pulseaudio-sample

📌 host.docker.internal は、ホストOSをDockerから参照する特殊なホスト名で、Windows・macOS の Docker Desktop で使用可能です。


✅ 成功すれば…

スピーカーから「Menuett」の優雅なピアノ曲が流れます 🎵
Dockerコンテナ内からホストのPulseAudioを経由してmp3音声再生に成功した証です。


🔐 注意点・補足

内容詳細
セキュリティauth-anonymous=1 は誰でも接続可能なのでローカル限定にしてください
自動起動化PulseAudio の起動をバッチファイルにしてスタートアップ登録すると便利
host.docker.internalWindows/macOS の Docker Desktop では使用可能。Linuxでは無効
音が出ないときファイアウォールで TCP 4713 ポートがブロックされていないか確認
ffplay の音量-volume オプションで音量調整も可能(0〜1000)

🎯 まとめ

  • Dockerコンテナから音を出すには、PulseAudioをホストにインストールし、TCP経由で接続する。
  • ffplay を使えば、mp3wav など様々なフォーマットに対応可能。
  • host.docker.internal を使えば、IPアドレス指定不要で接続できて便利。

▶ 次のステップ

  • 🎵 Python(pydub, pygame, pyaudio)などと組み合わせて音声アプリを作る
  • 📦 GUIアプリ(VLC, Audacityなど)をDockerで動かして音声出力
  • 🔄 WSL2 との連携構成(PulseAudio共通利用)を構築

🔗 参考リンク

共有

こぴぺたん
著者
こぴぺたん
Copy & Paste Engineer