如何在pjsip android中更改编解码器优先级

7
我试图更改在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();
            }
        }

如何解决这个问题?
1个回答

2

在更改优先级后,我没有使用更新后的值更新codecInfoVector。
因此,这些值没有反映出来。

PJSIP在端点Java类中提供了一种方法。
在更新特定代码后,我可以在SDP中看到已更新的优先级编解码器。

ep.codecSetPriority("PCMA/8000",codecPriority);

这里的ep是端点实例对象。


如何在设置编解码器优先级后更新codecInfoVector? - Himadri
@Himadri 我使用了端点实例来设置编解码器优先级,这有助于在使用 codecinfo 之前更新 codecInfoVector,因此它得到了反映。 - Jeeva
我也在做同样的事情。使用端点实例来设置编解码器优先级,发现编解码器优先级未被应用。 - Himadri
@Himadri兄弟,请发表您的代码,并将其作为单独的问题提出。 - Jeeva

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接