官网:https://opus-codec.org/
Github:https://github.com/xiph/opus
Opus 可以处理广泛的音频应用,包括 IP 语音、视频会议、游戏内聊天,甚至远程现场音乐表演。它可以从低比特率的窄带语音扩展到非常高质量的立体声音乐。支持的功能有:
opus_encoder_ctl(enc, OPUS_SET_INBAND_FEC(1));
opus_encoder_ctl(enc, OPUS_SET_PACKET_LOSS_PERC(20));
创建完成opus编码器后,调用该接口就能启动opus前向纠错的功能了,编码数据自带冗余包。
int opus_decode ( OpusDecoder ∗ st, const unsigned char ∗ data, opus_int32 len, opus_int16 ∗ pcm, int frame_size, int decode_fec )
opus解码器可以通过放空包或者打开的FEC的情况下尝试恢复数据。
例如:
1. 前一帧与当前帧均正常, 前一帧数据正常解码;
opus_decode(decoder, previous_frame, frame_size, pcm, pcm_size, 0);
2. 前一帧丢失,当前帧正常,可以通过打开FEC的方式解码当前帧,尝试恢复前一帧;
opus_decode(decoder, current_frame, frame_size, pcm, pcm_size, 1);
3. 前一帧与当前帧均丢失,通过放空包的方式,尝试猜出前一帧数据;
opus_decoder(decoder, NULL, 0, pcm, pcm_size, 0);
参考:
webrtc音频QOS方法二(opus编码器自适应网络参数调整功能)丶Java教程网-IT开发者们的技术天堂
Opus FEC小结_xy_kok的博客-CSDN博客