pjsua2按键音

播放按键音两种方式

1,自己实现。播放16个音频文件。
也不是很麻烦。这个就不介绍了。简单来说就是播放音频文件。
2,pjsua2里面内置的。
很好用。
主要是使用ToneGenerator这个类。

使用ToneGenerator实现

因为pjsua2封装的pjsip的类,因此,你可以通过参考pjsip的demo来得到pjsua2的接口的调用(我是通过搜索源码来对应关联的)。

主要的代码如下:

初始化

//初始化
ToneGenerator *m_pToneGenerator = nullptr;

m_pToneGenerator = new ToneGenerator();
m_pToneGenerator->createToneGenerator(8000);

//下面这步很重要,我找了半天的原因。
AudioMedia& play_med = Endpoint::instance().audDevManager().getPlaybackDevMedia();
m_pToneGenerator->startTransmit(play_med);

调用部分

ToneDigitVector t_toneDigitVector;
ToneDigit t_digit;
t_digit.digit = "3";
t_digit.on_msec = 260;
t_digit.off_msec = 200;//这里能控制声音播放的时长
t_digit.volume = 0;
t_toneDigitVector.push_back(t_digit);
try {
    m_pToneGenerator->playDigits(t_toneDigitVector);
} catch (Error &err) {
    qDebug()<<"m_toneGenerator.playDigits err:"<<err.info().c_str();
    }

注意里面的 t_digit.digit 字段默认的取值是0~9*#ABCD,也可以自己设置自定义的按键音(通过调用setDigitMap)。

另一种调用

//    ToneDescVector t_toneDescVector;
//    ToneDesc t_toneDesc;
//    t_toneDesc.freq1 = 200;
//    t_toneDesc.freq2 = 0;
//    t_toneDesc.on_msec = 100;
//    t_toneDesc.off_msec =100;
//    t_toneDescVector.push_back(t_toneDesc);
//    m_pToneGenerator->play(t_toneDescVector);

总结

ToneGenerator 还是很好用的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值