> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# xWMA 概觀

> 適用於 XBOX 遊戲的 xWMA 音訊格式:WMA Professional 的子集,由 XAudio2 以軟體解碼,用於壓縮的對話和音樂串流。

xWMA 是 Windows Media Audio (WMA) Professional 壓縮格式的子集。[XAudio2](/zh-TW/build/console-features/audio/overviews/xaudio2-overview) 以軟體支援 xWMA 解碼。xWMA 以輕量包裝函式使用 WMA 位元串流格式,適用於可以負擔少量 CPU 使用量以換取更高壓縮率的對話和音樂。品質設定可讓使用者變更壓縮聲音的位元速率。

<Note>xWMA 和 XMA2 都源自為 Windows Media Audio (WMA) 開發的轉碼器,而且兩者都是專為 XBOX 遊戲所開發。XMA2 所使用的可用轉碼器與參數子集比 xWMA 所使用的子集小。雖然 xWMA 和 XMA2 都是為 XBOX 開發的,但兩者不能互換:每種檔案格式的標頭都不同,而且這些格式與 PC 版 Windows 不相容。XMA2 和 xWMA 使用的轉碼器也略有不同,因此各自會因所使用的壓縮系統而產生自己的失真。</Note>

本主題內容:

* [xWMA 編碼](#ID4EW)
* [xWMA 解碼](#ID4E6B)
* [xWMA 迴圈播放](#ID4ETD)
* [xWMA 檔案的結構](#ID4ESE)

<a id="ID4EW" />

## xWMA 編碼

若要將音訊資料編碼為 xWMA,請使用 xWMAEncode 命令列工具,或依賴 XWMAEncoder.lib 的自訂工具。

### xWMAEncode

若要將音訊檔案編碼為 xWMA 以搭配 XAudio2 使用,請使用 [xWMA 命令列編碼器](/zh-TW/build/console-features/audio/tools/xwmaencode-tools)。

### XWMAEncoder.lib

XWMAEncoder.lib 是靜態連結的程式庫,可作為 [xWMA 命令列編碼器](/zh-TW/build/console-features/audio/tools/xwmaencode-tools)命令列工具的替代方案。您的自訂工具可依賴此程式庫,透過 **XWMAEncoder** 函式執行 xWMA 編碼。如需使用此函式的詳細資訊和範例,請參閱 XBOX 360 文件。

<a id="ID4E6B" />

## xWMA 解碼

Windows 和 XBOX One 上的 XAudio2 支援 xWMA 的軟體解碼,也可透過 xWMADecode API 進行。

| 技術 | 描述 |
| - | - |
| XACT | XBOX One 不支援 XACT。 |
| XAudio2 | 若要在 XAudio2 中使用 xWMA 編碼的資料,(1) 以 xWMA 特定的值初始化 WAVEFORMATEXTENSIBLE 結構,以及 (2) 在建立來源語音時,將該結構作為引數傳遞給 [CreateSourceVoice](https://learn.microsoft.com/windows/desktop/api/xaudio2/nf-xaudio2-ixaudio2-createsourcevoice)。如需在 XAudio2 中載入和播放聲音的範例,請參閱[如何:使用 XAudio2 播放聲音](https://msdn.microsoft.com/library/windows/desktop/ee415787\(v=vs.85\).aspx)。 |
| XWMADecode | 使用 XWMADecode API 直接將 xWMA 緩衝區解碼為 PCM 緩衝區,而不需使用 XAudio2。 |

<a id="ID4ETD" />

## xWMA 迴圈播放

xWMA 不支援迴圈區域,也不支援在 xWMA 檔案中對任意封包進行迴圈播放。只能對整個 xWMA 檔案進行迴圈播放。在 XAudio2 中,xWMA 對傳遞給 [IXAudio2SourceVoice::SubmitSourceBuffer](https://learn.microsoft.com/windows/desktop/api/xaudio2/nf-xaudio2-ixaudio2sourcevoice-submitsourcebuffer) 之 [XAUDIO2\_BUFFER](https://learn.microsoft.com/windows/desktop/api/xaudio2/ns-xaudio2-xaudio2_buffer) 中的值有與迴圈播放相關的限制。如果 xWMA 檔案的所有音訊資料都以單一緩衝區提交,且使用者想要對其進行迴圈播放,則必須符合下列限制。

1. XAUDIO2\_BUFFER.LoopBegin 必須一律為零。
2. XAUDIO2\_BUFFER.LoopLength 必須為零,或是整個檔案之 xWMA 資料的大小 (以樣本為單位)。
3. XAUDIO2\_BUFFER.LoopCount 可以是任何值。
4. XAUDIO2\_BUFFER.Flags 必須設為 XAUDIO2\_END\_OF\_STREAM。

如果 xWMA 音訊資料以多個緩衝區提交,則只能透過重新提交一系列緩衝區來手動迴圈播放音訊。

由於 xWMA 音訊迴圈播放時可能會產生一段靜音,因此 xWMA 音訊的迴圈播放一般應只用於具有平滑淡入和淡出的聲音。範例包括海浪聲和某些細微的環境噪音。

<a id="ID4ESE" />

## xWMA 檔案的結構

xWMA 檔案是具有下列區塊類型的標準 RIFF 檔案。

\| 區塊 FCC| 描述|
\| --- | --- | --- | --- |
\| RIFF| 標準 RIFF 區塊包含下列內容: <br />1. 在其資料區段的前四個位元組中,包含值為 `XWMA` 的檔案類型。 <br /> 2. 在資料區段的其餘部分,包含檔案中的其他區塊。 |
\| fmt| 此區塊包含 xWMA 檔案的格式標頭。此區塊中的資料對應於具有一或兩個聲道之 xWMA 資料的 [WAVEFORMATEX](https://learn.microsoft.com/windows/desktop/api/mmreg/ns-mmreg-waveformatex) 結構,或對應於具有三個以上聲道之 xWMA 資料的 WAVEFORMATEXTENSIBLE 結構。 |
\| data| 此區塊包含編碼的 xWMA 音訊資料。在 XAudio2 中使用 xWMA 時,data 區塊的內容會讀入緩衝區,並作為 [XAUDIO2\_BUFFER](https://learn.microsoft.com/windows/desktop/api/xaudio2/ns-xaudio2-xaudio2_buffer) 結構的 pAudioData 成員傳遞給來源語音。data 區塊的內容不需要進行位元組交換。 |
\| dpds| 此區塊包含已解碼封包的累計資料大小陣列,其中每個元素是依序解碼對應的 xWMA 封包後所累計的位元組數。此區塊的大小 (以 UINT32 測量) 及其資料區段的內容,在 XAudio2 中用於填入 [XAUDIO2\_BUFFER\_WMA](https://learn.microsoft.com/windows/desktop/api/xaudio2/ns-xaudio2-xaudio2_buffer_wma) 結構。 |

<a id="ID4EPG" />

## 另請參閱

[xWMA 命令列編碼器](/zh-TW/build/console-features/audio/tools/xwmaencode-tools)


## Related topics

- [Overview of xWMA](/build/console-features/audio/overviews/xwma-overview.md)
- [xWMA 概述](/zh-CN/build/console-features/audio/overviews/xwma-overview.md)
- [xWMA 개요](/ko/build/console-features/audio/overviews/xwma-overview.md)
- [xWMA の概要](/ja-jp/build/console-features/audio/overviews/xwma-overview.md)
- [服務 C API 概觀 - PFLocalization.h](/zh-TW/services/playfab/api-references/c/pflocalization/pflocalization_members.md)
