我试图改变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();
}
}
如何解决这个问题?
更改优先级后,我没有使用更新的值更新codecInfoVector。 结果,价值没有反映出来。
PJSIP在端点java类中提供了一种方法。 更新特定代码后,我可以在SDP中看到更新的优先级编解码器。
ep.codecSetPriority("PCMA/8000",codecPriority);
其中ep是端点实例对象。