This document is about: VOICE 2
SWITCH TO

Frequently Asked Questions

哪一種 Photon 產品適合我?

The answer to this depends mostly on your project 這個問題的答案主要取決於您的專案和團隊。
一般來說,我們建議使用FusionQuantum,這是我們最先進的客戶解決方案。

為了快速概覽,兩個產品表都包含產品選擇器 "Quadrant":

如有任何問題,請隨時與我們聯絡。

Photon Cloud

Photon Cloud 宕機了嗎?

您可以在 這裡確每個產品的目前和過去狀態。
我們也在 Discord 伺服器上發布狀態更新。

是否有預設的 Photon Cloud 區域?

實際上,沒有預設區域。客戶端知道 Photon Cloud 的名稱伺服器位址。它們是全域的,用於為給定的 AppId 提供最新的區域清單。

客戶端將 ping 每個區域並識別延遲最低的「最佳區域」。

如果無法成功 ping 通任何區域,則使用清單中的第一個區域。

是否可以停用某些區域?

是的。
它的工作原理是定義一個沒有“禁用”區域的“區域允許列表”。
閱讀更多關於「儀表板區域過濾」的資訊。

我們可以取得所有雲端伺服器/IP 的清單嗎?

這樣的列表並不存在,因為光子雲變化太頻繁。伺服器會被新增或刪除,甚至有時會出現新的區域。這意味著不可能將 Photon Cloud(作為一個整體)添加到允許清單中。

對於企業雲來說這是一個不同的主題。我們會透過電子郵件討論這個問題。

Photon Industries Circle 內的應用程式可以依賴主機名稱進行允許清單:*.photonindustries.io。確保使用 ns.photonindustries.io 作為要連接的「伺服器」。

Photon Voice

如何將對話儲存到檔案中?

我們將分成兩部分來回答這個問題:

首先,傳入的語音流:

Photon 語音串流使用 PlayerId 和 VoiceId 對進行唯一識別。
因此,鑑於這一對,您可以猜測遠端語音串流的來源:哪個播放器和哪個錄音機。
您可以訂閱遠端串流的三個事件:

  • VoiceConnection.RemoteVoiceAdded(RemoteVoiceLink):使用接收到的資訊建立新的遠端語音串流(開始傳輸)。
  • RemoteVoiceLink.FloatFrameDecoded(float[]):從特定遠端語音串流接收音訊訊框。
  • RemoteVoiceLink.RemoteVoiceRemoved:遠端語音串流已結束並被銷毀(停止傳輸)。

如果您想要擷取整個傳入的遠端語音串流,您可以:

  1. RemoteVoiceAdded處理程序中建立並開啟該串流的檔案。
  2. 將音訊資料幀寫入FloatFrameDecoded處理程序中。
  3. 儲存並關閉RemoteVoiceRemoved處理程序中的檔案。

或者您可以開啟和關閉檔案並根據使用者輸入相應地更新FloatFrameDecoded

二、傳出語音流:

對於傳出音訊串流,您可以透過擴充Voice.LocalVoiceAudio<T>.IProcessor來建立自訂處理器。
您可以在IProcessor.Process中取得本機錄製的音訊影格。
需要將元件附加到與Recorder相同的 GameObject 來攔截PhotonVoiceCreatedUnity 訊息。
在該方法中,使用LocalVoice.AddPreProcessor(傳輸前)或LocalVoice.AddPostProcessor (傳輸後)將自訂處理器插入本機語音處理管道中。
有關範例,請參閱“WebRtcAudioDsp.cs”。

如何使用自訂音訊來源?

如果您希望Recorder傳輸您自己的自訂音訊來源產生的音訊:

第一種方法:資料流由消費者驅動

AudioClipWrapper是此方法的範例。
它串流分配給Recorder.AudioClip的音訊剪輯。

  1. 建立一個類別來讀取音訊來源並實作 Photon.Voice.IAudioReader介面。例如 MyAudioReaderSource

  2. 在編輯器(或程式碼)中將 Recorder.SourceType 設定為 Factory

  3. 在應用程式初始化期間(建立 Recorder 之前)建立類別的實例:

    C#

    // MyAudioReaderSource is just an example, replace with your own class name and constructor
    recorder.InputFactory = () => new MyAudioReaderSource();
    
  4. 只要客戶端連接到語音室並且Recorder正在傳輸,就會在您的自訂音訊來源實例(例如MyAudioReaderSource)上呼叫IAudioReader.Read(float[] buffer)方法。
    調整呼叫頻率和緩衝區大小以符合自訂音訊來源實例(例如MyAudioReaderSource)的IAudioReader.SamplingRate屬性傳回的取樣率。

第二種方法:資料流是由生產者ToneAudioPusher所驅動,而
“AudioUtil.cs”中則是這種方法的範例。

  1. 在這種情況下,實作Photon.Voice.IAudioPusher介面可能會更方便。例如“MyAudioPusherSource”。
    您只需要實作“IAudioPusher.SetCallback”方法,該方法主要儲存給定的回呼。

  2. 在編輯器(或程式碼)中將 Recorder.SourceType 設定為 Factory

  3. 在應用程式初始化期間(在建立 PhotonVoiceRecorder 之前)的某個位置建立類別的實例:

    C#

    // MyAudioPusherSource is just an example, replace with your own class name and constructor
    recorder.InputFactory = () => new MyAudioPusherSource();
    

Photon Voice 將為您完成所有緩衝工作。

計費

您是否為學生、業餘愛好者或獨立開發者提供特別優惠?

我們所有的產品都有免費套餐和一次性入門方案。
我們通常也會參加Unity的資源商店銷售活動,偶爾也會贈送代金券給幸運兒。

我可以為單一 Photon 應用程式組合多個 100 CCU 方案嗎?

不可以。

每個AppId只能申請一個。
它們可以與付費訂閱相結合,並在有效期內使用。

如果您的單一應用程式需要更多 CCU,下一個更高的方案是 500 CCU 方案。
如果您訂閱月度或年度方案,那麼除了月度/年度方案中的 CCU 之外,您仍將保留 100 個 CCU 12 個月。

我的 Photon 計畫包含多少流量?

Photon Cloud 和 Premium Cloud 方案包括每個 CCU 3GB。

例如, 1,000 個 CCU 的月度方案每月包含 3 TB 的流量。

如果您的應用程式產生超用流量,我們將自動透過電子郵件發送提醒。您將在月底透過您的 Photon 帳戶電子郵件收到超額使用通知。該內容金額基於以下計算:

總流量 - 包含流量 = 超額流量(以 GB 為單位)

流量以每 GB 2.38台幣/4.75台幣計算,具體取決於所使用的 Photon Cloud 區域。該費用會追加到下個月費用清單裡。

如果峰值 CCU 超過我的 Photon Cloud 方案預訂的 CCU,會發生什麼情況?

如果您訂閱了 500 CCU / 1,000 CCU / 2,000 CCU 方案,則會自動為您的應用程式啟動「CCU Burst」。 Photon Cloud 將允許比您預訂的更多的 CCU,以便為您的用戶提供最佳體驗。

但是一旦Burst啟動,您有義務根據商定的條款在 48 小時內升級到所需的訂閱等級。

如果您不升級,我們將向您的 Photon 帳戶電子郵件發送“超額通知”,並收取超出您訂閱方案的每個 CCU 按 32.4台幣/33台幣/43.2台幣(基於所使用的 SDK)的費用。該費用會自動追加到您的下個月費用清單裡。

Photon 以「峰值 CCU」收費,即給定月份內每個區域的峰值 CCU 的總和。即使達到高峰後使用量減少,也請務必升級,以免產生超額費用。

Back to top