2014年1月4日 星期六

解決「PulseAudio 在 Fedora 的『多認證』切換」問題

在測試安裝好 Fedora 20 的 ASUS M2400 時,想說:可以將『遠端主機』的桌面帶到筆電上。這樣一來,即使筆電效能不佳,也可以藉其操作『遠端主機』的桌面。當然,在 Linux 作業系統下,VNC 應是最方便的選擇。
  可是套件中的 VNC 並不能轉送聲音,既然,兩邊都是 Fedora,那麼 PulseAudio 就是首選了。不過,平常是在另一台桌機上操作『遠端主機』的桌面,PulseAudio 的音訊轉送有加上『授權認證』,避免被別人收到或收到別人誤送的聲音。若要每次變換操作的電腦時,就要將認證的設定重做一次的有些麻煩。查了網路,並沒有類似的做法,大概別人都沒這個需求吧!
  經過一些嘗試,找到一個簡單的做法,步驟如下:

一、在轉送的兩端間,分別做『授權認證』的設定

由於認證的 cookie 是在 PulseAudio 啟動時產生的,所以要做『授權認證』切換的『授音端』電腦都設定好認證,確保所產生的 cookie 是正確、可用的。相關操作,請參考之前的發文:

二、複製 cookie 到『遠端主機』

將上一步驟中『受音端』產生的『授權認證』 cookie,都複製一份到『遠端主機』,放在『個人的』 PulseAudio 的『授權認證』 cookie 的目錄,在 Fedora 19 系統是放在『 ~/.config/pulse/ 』目錄中。另外,將每個從不同『受音端』來的 cookie 更改為較方便辨認的檔案名稱。
[SiB@Core-i7 ~]$ cd .config/pulse/
[SiB@Core-i7 pulse]$ ll
總計 12
-rw-------. 1 SiB users 256  1月  4 14:59 cookie
-rw-------. 1 SiB users 256  1月  4 14:54 cookie.Celeron-D.SiB
-rw-------. 1 SiB users 256  1月  4 14:54 cookie.M2400.SiB
上例中,『 cookie 』是 PulseAudio 運行時所用的 cookie,『 cookie.Celeron-D.SiB 』是『受音端』Celeron-D 以 SiB 帳號登入時,PulseAudio 運行所用的 cookie,而『 cookie.M2400.SiB 』是『受音端』M2400 以 SiB 帳號登入時,PulseAudio 運行所用的 cookie。

三、切換『受音端』的『授權認證』cookie

要觀察 PulseAudio 音源調整的過程,在「MATE 桌面環境」要從《應用程式》→《影音》啟動『 PulseAudio Volume Control 』程式。
  要切換『遠端主機』聲音的去向到『受音端』Celeron-D 時,要更換『受音端』的『授權認證』 cookie,
[SiB@Core-i7 pulse]$ cp cookie.Celeron-D.SiB cookie
[SiB@Core-i7 pulse]$ pulseaudio --kill
第一個命令是複製(更換)『授權認證』cookie,第二個命令是重新啟動 PulseAudio。略等一下,就可看到『遠端主機』的音源輸出切換到『受音端』Celeron-D 了。
要切換『遠端主機』的聲音去向到『受音端』M2400 時,要更換『受音端』的『授權認證』 cookie 如下:
[SiB@Core-i7 pulse]$ cp cookie.M2400.SiB cookie
[SiB@Core-i7 pulse]$ pulseaudio --kill
第一個命令是複製(更換)『授權認證』cookie,第二個命令是重新啟動 PulseAudio。略等一下,就可看到『遠端主機』的音源輸出切換到『受音端』M2400 了。
至於兩個『受音端』PulseAudio 的顯示結果都相同,可以看到都是由『音源端』Core-i7 的 SiB 帳號輸入音訊。

相關發文:

有關 VNC 的使用,請參考之前的發文:

已測試版本:

  • Fedora + MATE : (19 → 19), (19 → 20)

參考資料:

沒有留言:

張貼留言

感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)