Android 如何确认opus编码缓冲区大小?
函数opus_encode需要帧大小作为参数。在api文档中,它表示缓冲区大小是每个通道的样本数。 但如何确定我应该使用哪种尺寸 我在android中使用opus。采样率16k,缓冲区大小1280。当我在编码和解码中将帧大小设置为640时,解码文件的长度是原始pcm的一半。当我设置为960时,解码文件是原始pcm的2/3。但是设置为1280,encode将返回-1作为arg错误 当我使用酷编辑播放解码,它比原始pcm快 我的参数一定有些问题。 任何使用opus的人都可以帮助我。Android 如何确认opus编码缓冲区大小?,android,opus,Android,Opus,函数opus_encode需要帧大小作为参数。在api文档中,它表示缓冲区大小是每个通道的样本数。 但如何确定我应该使用哪种尺寸 我在android中使用opus。采样率16k,缓冲区大小1280。当我在编码和解码中将帧大小设置为640时,解码文件的长度是原始pcm的一半。当我设置为960时,解码文件是原始pcm的2/3。但是设置为1280,encode将返回-1作为arg错误 当我使用酷编辑播放解码,它比原始pcm快 我的参数一定有些问题。 任何使用opus的人都可以帮助我。 非常感谢。Opu
非常感谢。Opus编码定义:
opus_int32 opus_encode ( OpusEncoder * st,
const opus_int16 * pcm,
int frame_size,
unsigned char * data,
opus_int32 max_data_bytes )
指定帧大小时,需要将其设置为pcm
buffer中可用的每个通道的采样数
OPUS codec支持立体声和单声道信号,编码器的相应配置是通道
参数,您可以在调用OPUS\u编码器创建
函数时指定该参数
您还需要了解OPUS编解码器支持的帧大小。它支持具有:2.5、5、10、20、40或60毫秒音频数据的帧
16kHz的一毫秒音频是16个采样(16000/1000)。因此,对于mono,您可以将帧大小设置为:
- 16*2.5=40(非常罕见)
- 16*5=80(罕见)
- 16*10=160
- 16*20=320
- 16*40=640
- 16*60=960