我正在尝试更改pjsip android中使用的编解码器的优先级。
我能够获得编解码器的优先级,但是在更改编解码器的优先级后,它并没有反映出来。
if( ep != null)
{
try {
CodecInfoVector codecInfoVector = ep.codecEnum();
if(!codecInfoVector.isEmpty()){
System.out.println("Codecs Enabled!!");
System.out.println("Number of codecs enabled now: "+codecInfoVector.size());
for(int i=0;i<codecInfoVector.size();i++)
{
CodecInfo codecInfo = codecInfoVector.get(i);
String codecId = codecInfo.getCodecId();
short codecPriority = 128;//use higher number for making preferred codec first.
short disableCodecPriority = 0;//use 0 to disable codec in sdp
System.out.println("Codec info now is: "+ codecId);
switch(codecId)
{
case "PCMA/8000/1":
if(Dialer_Properties.enablePCMA)
codecInfo.codecSetPriority("PCMA/8000",codecPriority);
else
codecInfo.codecSetPriority("PCMA/8000",disableCodecPriority);
break;
case "PCMU/8000/1":
if(Dialer_Properties.enablePCMU)
codecInfo.codecSetPriority("PCMU/8000",codecPriority);
else
codecInfo.codecSetPriority("PCMU/8000",disableCodecPriority);
break;
case "G729/8000/1":
if(Dialer_Properties.enableG729)
codecInfo.codecSetPriority("G729/8000",codecPriority);
else
codecInfo.codecSetPriority("G729/8000",disableCodecPriority);
break;
}
System.out.println("Codec Priority now is: "+codecInfo.getPriority());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
如何解决此问题?
答案 0 :(得分:1)
更改优先级后,我没有使用更新后的值来更新codecInfoVector。
结果,这些值未得到反映。
PJSIP在终结点Java类中提供了一个方法。
更新特定代码后,我可以在SDP中查看更新的优先级编解码器。
ep.codecSetPriority("PCMA/8000",codecPriority);
其中ep是端点实例对象。