再进行OPUS编码与解码的时候,走了许多弯路。以下介绍一下实现OPUS编码与解码的步骤。
1. 去官网或者github找到能调通的源码,生成出相应的库opus.lib
2.在自己的项目中,把.h和.lib添加到工程里面(VS项目右键属性 VC++目录,然后库目录和包含目录)。
3.创建编码器或者解码器
enc = opus_encoder_create(kDefaultSampleRate, 2, OPUS_APPLICATION_AUDIO, &error);
dec = opus_decoder_create(kDefaultSampleRate, 2, &error);
参数具体含义可以去opus官网下载pdf或者直接在官网也可以看,比任何地方将的都详细。
4.编码或者解码数据
int encodeBack = opus_encode(enc, pcm_bytes, frame_size, opus_data_encoder, 960);
int de_frame_size = opus_decode(dec, opus_data_encoder, encodeBack, _ini_pcm_bytes, frame_size, 0);
你没看错,就是这么简单,创建,然后直接用。复用时,用它的init()函数。
5.记得释放。opus_decoder_destroy(dec);
走过的坑。 这是一个前后编解码数据相关联的编码解码方式,所以,编码解码的过程中,同一段音频,必须得用同一个编码或者解码器。只有真正结束了,才能释放,不然可能会出现意想不到得结果。