二. opus 编码器使用

1 编码器 Encoder

    enc = opus_encoder_create(48000, 1, OPUS_APPLICATION_AUDIO, &err);    //OPUS_APPLICATION_VOIP void  / OPUS_APPLICATION_AUDIO 对大多数非语音信号,如音乐,在给定比特率条件下提供了最高的质量
    opus_encoder_ctl(enc, OPUS_SET_COMPLEXITY(10)); //复杂性)是一个值从 1 到 10,1 最低,10 最高,值越大越复杂
    opus_encoder_ctl(enc, OPUS_SET_PACKET_LOSS_PERC(6));
    opus_encoder_ctl(enc, OPUS_SET_BITRATE(6000));   //比特/秒(b/s)
    opus_encoder_ctl(enc, OPUS_SET_SIGNAL(signal_type)); //(信号的类型)包括 OPUS_AUTO (缺省), OPUS_SIGNAL_VOICE, or OPUS_SIGNAL_MUSIC。
    data_len = opus_encode(enc, pcm1, 960, data, 2000);

2 解码器

OpusDecoder* opus_decoder_create ( opus_int32   Fs, int     channels,   int *   error )  //创建
int opus_decoder_ctl(OpusDecoder *st, int request, ...)  //控制
int opus_packet_parse   (   const unsigned char *   data,
        opus_int32      len,
        unsigned char *     out_toc,
        const unsigned char *   frames[48],
        short   size[48],
        int *   payload_offset 
    ) 

//other

3. Repacketizer

可将多个包 Opus 合并成一个包,或将以前合并的包分离成多个 Opus 包。
只有在所有的帧都有相同的编码模式、带宽、帧大小,并且合并后的包总的时长不超过 120 毫秒,合并有效的包才能成功。

4. Opus Multistream API

Multistream API 允许将多个 Opus 数据流组合成一个包,能够支持多达 255 通道。

参考

posted on 2023-01-03 09:19  WillingCPP  阅读(824)  评论(0)    收藏  举报

导航