見出し画像

Proxmox 音の出るコンソール

仮想環境でデスクトップを運用している人も多いと思う。しかし、音に関しては意外と問題がある。動画やWeb会議などを仮想デスクトップで運用した場合に音が出せないことも多い。そこでProxmoxのコンソールで音が出せないかを調べてみると、なんか使えそうなことが分かったので記録しておく。


■Windowsのコンソールで音を出す方法

流れはこんな感じ

  1. 仮想マシンを停止

  2. 仮想ハードウェアの設定を変更

  3. 仮想マシンを起動

  4. 仮想マシンにドライバーをインストール

  5. リモートコンソール側にドライバーをインストール

  6. リモート側でコンソール(SPICE)を開く

■仮想ハードウェアの設定を変更

ディスプレイの設定でグラフィックカードの設定を変更する
→SPICE

音声デバイスを追加する
→intel-hda(ドライバ:SPICE)
ほかのドライバーでも動くかもしれないが、不具合報告があるみたいなので無難に(intel-hda)を選択する

■仮想マシンにドライバーをインストール

仮想マシンのWindowsに対して「Windows SPICE ゲスト ツール(spice-guest-tools)」なるものをインストールする

このインストーラーには、SPICE のパフォーマンスと統合を向上させるために Windows ゲストにインストールできるオプションのドライバーとサービスがいくつか含まれています。これには、qxl ビデオ ドライバーと SPICE ゲスト エージェント (コピー アンド ペースト、自動解像度切り替えなど) が含まれます。

https://www.spice-space.org/download.html

ダウンロードして実行するとウイザードが起動するのでポチポチクリックしていくだけ。
Windowsのデバイスマネージャーでオーディオデバイスが正常に認識されていることを確認しておくと良いらしい。念のためWindowsを再起動しておく。ディスプレイドライバーも置き換わるので解像度については再設定を行う。

■リモートコンソール側にドライバーをインストール

同じようなことを書いてある記事も多いが、ゲストOSとリモート側のOSとの組み合わせ次第で準備すべき作業がどうも違うようだった。

Windowsについてはこちらの「virt-viewer(https://releases.pagure.org/virt-viewer/virt-viewer-x64-11.0-1.0.msi)」ビューアソフトを入れる必要があった。
ダウンロードについてはこちらから行う
https://virt-manager.org/download

Win_x64.MSI をダウンロードする

実行するとウイザードが起動するのでポチポチクリックしていく

■リモート側でコンソール(SPICE)を開く

ここまで準備ができたら専用のコンソール(SPICE)を開く

いつもの見なれたツールバーにて「コンソール」を展開する
ここで「SPICE」を選択する
SPICEに接続するための構成ファイルをダウンロードする
ここで選択するかファイルマネージャー等で開く

「pve-spice.vv」の中身はこんな感じになっている、一度起動すると消えるので注意。

[virt-viewer]
title=VM 1000 - Windows10
host-subject=OU=PVE Cluster Node,O=Proxmox Virtual Environment,CN=proxmox.local
password=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
host=pvespiceproxy:xxxxxxxx:1000:proxmox::xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
secure-attention=Ctrl+Alt+Ins
proxy=http://proxmox.local:3128
type=spice
ca=-----BEGIN CERTIFICATE-----\xxxxxxxxxxxxx\n-----END CERTIFICATE-----\n
delete-this-file=1
toggle-fullscreen=Shift+F11
tls-port=61001
release-cursor=Ctrl+Alt+R

ファイルを開くとこんなバーが付いたウインドウが開くので操作に問題がないか確認する。仮想ハードウェアの設定に問題があるとマウスが正常に使えなかったり、OSの設定系のウインドウが開かない事例もある。

コンソールバー

あとはYoutubeなどの音源を再生してみると良い。リモートコンソール側のPCから音が再生されれば成功です。

■音付きコンソールの使用帯域

試しにローカルLANでどの程度のデータが流れるのか見てみました。

コンソール(SPICE)起動しYoutube動画を停止状態
送信 16Kbps 程度
受信 700~800Kbps 程度

コンソール(SPICE)の中で待機させていたYoutube動画を普通サイズで再生
送信 1Mbps 程度
受信 100~200Mbps 程度

コンソール(SPICE)の中で待機させていたYoutube動画をシアターサイズで再生
送信 1Mbps 程度
受信 100~300Mbps 程度
※このサイズで動画を再生すると私の環境では音が震えたり、動画がコマ飛びすることがありました。Proxmoxのホストもリモート側のCPU、メモリ、NWに関しては余裕がある状態なのでドライバーの処理能力があまり高くないのかも?

同じ動画でコンソール(noVNC)であれば音もないので・・・
送信 0.2~1Mbps 程度
受信 30~70Mbps 程度

複数のゲストOSを立ち上げてまでは負荷テストはしていませんが、個人的な環境程度で音の出るコンソールを運用する分には良いかもしれませんね。

■SPICEってなに?

ぶっちゃけ「noVNC」と「SPICE」は何が違うのか?簡単に言うと

  • 「noVNC」は互換性は高いが機能が限られる

  • 「SPICE」は専用ドライバーを用いるが高い機能性を持つ

こんな感じみたい。実際、SPICEを使った画面と音の転送イメージは個人的な見解だけど映像・音声規格のHDMIに似ている?感じですね。コンソールの転送は普通は映像のエンコード・デコードするのが基本で、そこにマウスの操作情報が合わさってコンソールとして機能する。そんなシンプルなコンソールに映像と一緒に音声もバンドルしちゃえ!って感じでHDMIケーブル一本繋げば音も映像もつながるよ!って感じの革命を思い出した(笑)

■SPICEを使った音転送の制限

この機能を使うにはディスプレイドライバに「SPICE」を選択する必要がある。なのでProxmoxでChromeOSを起動する場合は(VirGL GPU)が必須であることから残念ながら仮想ChromeOSでは音を出すことができなかった。もしかしたらChromeOSへLinuxを入れてからLinux用のドライバー入れたら音がでるかも?そんなわけでSPICEの恩恵を得るにはディスプレイドライバをSPICEにする制限があることだけは頭に入れておく。

■追伸(ChromeOS)で音がでた

結論から言うと音はでました。
やはり、ChromeOSにLinuxを入れて spice のエージェントをインストールするだけですね。

sudo apt-get install spice-vdagent

しかし、ChromeOSの場合はディスプレイカードを以下のように設定する必要があるためなのかコンソール(SPICE)ではマウスが表示されませんでした。しかたないので操作はWebかnoVNC側で代行です(笑) 

ChromeOS固有設定

マウスについてはおそらくOSの再起動後に正常に機能するようになりました。そんなわけで、たんなるチャレンジものでした。
ちなみにこの実験でディスプレイドライバ側のSPICEと音との関連性が消えました。

SPICEについてはこのサイトがわかりやすいかも?


いいなと思ったら応援しよう!