作品編碼定義:
opus_int32 opus_encode (OpusEncoder * st,
const opus_int16 * pcm,
int frame_size,
unsigned char * data,
opus_int32 max_data_bytes)
當指定frame_size需要將其設定爲每在pcm
緩衝器中可用一個通道的樣本數。
OPUS編解碼器支持立體聲和單聲道信號,編碼器的相應配置是channels
當您調用opus_encoder_create
函數時指定的參數。
您還需要了解OPUS編解碼器支持的幀大小。它支持幀數爲2.5,5,10,20,40或60ms的音頻數據。
1毫秒的16kHz音頻是16個樣本(16000/1000)。因此,對於單聲道可以指定frame_size設置爲:
- 16 * 2.5 = 40(非常罕見)
- 16 * 5 = 80(罕見)
- 16 * 10 = 160
- 16 * 20 = 320
- 16 * 40 = 640
- 16 * 60 = 960
OPUS編解碼器將不接受另一尺寸。處理1280個採樣的緩衝區大小的最佳方式是分割四個20ms數據包或兩個40ms數據包。
因此,您從緩衝區接收的一個緩衝區編碼兩個或四個數據包。