4

我正在开发一个软件电话项目并使用 MjSip 堆栈来创建开发它。核心 MjSip 仅支持 PCMA/PCMU 编解码器。但我想用它添加更多编解码器,如 G729、GSM、iLBC 等。

在 MjSip 中,AudioSender.java 类纯 Java 音频流发送器。它使用 javax.sound 包。在该类中, javax.sound.sampled.AudioFormat用于格式化具有 PCM 签名、无符号或浮点类型的音频流。它已经在 MjSip 中完成,如下所示。

AudioFormat.Encoding codec;
        if (pcmu) {
            codec = AudioFormat.Encoding.ULAW;
        } else if (linear_signed) {
            codec = AudioFormat.Encoding.PCM_SIGNED;
        } else if (pcma) {
            codec = AudioFormat.Encoding.ALAW;
        } else {
            codec = AudioFormat.Encoding.PCM_UNSIGNED; // default
        }

if (sound)
         {  AudioFormat format=new AudioFormat(codec,sample_rate,8*sample_size,1,sample_size,sample_rate,big_endian);
            System.out.println("System audio format: "+format);
            audio_input=new AudioInput(format);
            sender=new RtpStreamSender(audio_input.getInputStream(),false,payload_type,frame_rate,frame_size,daddr,dport);
         }

但是我创建了自己的包org.mine.codec包括这些类

Codec.java (This is an Interface)
CodecAttribute.java
CodecUtils.java
CodecFactory.java
CodecG729.java
CodecPCMA.java
CodecPCMU.java

所以我想用这个而不是那个AudioFormat.Encoding。我应该如何构造我的AudioSender.java类以及 RtpStreamSender.java中需要更改的内容?是否可以忽略该AudioFormat类?如果我必须使用它,那么RtpStreamSender.java的构造函数是什么?

4

0 回答 0