JRTPLIB 3.5.2手册中文版---part6

 

3.2.8 RTPTransmissionInfo

-----------------------------------------------------------------------头文件:rtptransmitter.h

       类RTPTransmissionInfo是一个抽象基类,根据特定的传输组件有特定的(继承)实现。所有的具体实现都继承下面的函数,用来确定对这些参数来说哪个传输组件是有效的(【译注:就是说该函数是用来指出实际使用的传输组件类型的,原文:All actual implementations inherit the following function which identify the component type for which these parameters are valid】):

RTPTransmitter::TransmissionProtocol GetTransmissionProtocol()

关于基于IPv4的UDP传输器的信息

------------------------------------------------------------------------头文件:rtpudpv4transmitter.h

类RTPUDPv4TransmissionInfo给出了关于基于IPv4的UDP传输组件的更多信息,可用的成员函数如下:

std::list<uint32_t> GetLocalIPList() const

-----返回传输器可选择作为本机IP地址的IPv4地址列表。

int GetRTPSocket() const

-----返回用于收发RTP数据包的套接字描述子。

int GetRTCPSocket() const

-----返回用于收发RTCP数据包的套接字描述子。

关于基于IPv6的UDP传输器的信息

------------------------------------------------------------------------头文件:rtpudpv6transmitter.h

类RTPUDPv6TransmissionInfo给出了关于基于IPv6的UDP传输组件的更多信息,可用的成员函数如下:

std::list<in6_addr> GetLocalIPList() const

-----返回传输器可选择作为本机IP地址的IPv6地址列表。

int GetRTPSocket() const

-----返回用于收发RTP数据包的套接字描述子。

int GetRTCPSocket() const

-----返回用于收发RTCP数据包的套接字描述子。

 

3.2.9 RTPAddress

-------------------------------------------------------------------------头文件:rtpaddress.h

       类RTPAddress是一个用来指出单播目的地址或者组播组的抽象基类。该类定义了下面的参数用来确定具体实现所使用的(地址类型)。

enum AddressType {IPv4Address, IPv6Address, UserDefinedAddress};

       基于IPv4的UDP传输器使用类型RTPAddress::IPv4Address,基于IPv6的UDP传输器使用类型RTPAddress::IPv6Address。当使用用户自定义类型的传输组件时RTPAddress:: UserDefinedAddress会很有用。

       类定义了以下接口:

AddressType GetAddressType() const

-----返回具体实现所代表的地址类型。

RTPAddress *CreateCopy() const

-----创建一个RTPAddress对象的拷贝。

bool IsSameAddress(const RTPAddress *addr) const

-----检查对象使用的地址是否与地址addr相同,具体实现需要能够处理参数为NULL的情况。

bool IsFromSamHost(const RTPAddress *addr) const

-----检查地址addr所代表的主机是否与对象是同一个,具体实现需要能够处理参数为NULL的情况。

RTPIPv4Address

------------------------------------------------------------------------头文件:rtpipv4address.h

       该类在基于IPv4的UDP传输组件中使用,类定义了下面的函数。

RTPIPv4Address(uint32_t ip=0, uint16_t port=0)

-----创建一个IP地址为ip,端口号为port的对象,两个参数都是主机字节序表示。

RTPIPv4Address(const uint8_t ip[4], uint16_t port=0)

-----创建一个IP地址为ip,端口号为port的对象,两个参数都是主机字节序表示。

void SetIP(uint32_t ip)

-----将对象的IP地址设为ip,ip是用主机字节序表示。

void SetPort(uint16_t port)

-----将对象的端口号设为port,port是用主机字节序表示。

uint32_t GetIP() const

-----返回以主机字节序表示的对象IP地址。

Uint16_t GetPort() const

-----返回以主机字节序表示的对象端口号。

       当RTPIPv4Address地址用于传输器的组播函数的任意一个时,端口号将被忽略。当该类的对象用于传输器的接受或者拒绝函数中的一个时,0号端口将代表指定IP地址的所有端口。

 

RTPIPv6Address

------------------------------------------------------------------------头文件:rtpipv6address.h

       该类在基于IPv6的UDP传输组件中使用,类定义了下面的函数。

RTPIPv6Address()

-----创建一个IP地址和端口号都为0的对象。

RTPIPv6Address(const uint8_t ip[16], uint16_t port=0)

-----创建一个IP地址为ip,端口号为port的对象,两个参数都是主机字节序表示。

RTPIPv6Address(in6_addr ip, uint16_t port=0)

-----创建一个IP地址为ip,端口号为port的对象,两个参数都是主机字节序表示。

void SetIP(in6_addr ip)

-----将对象的IP地址设为ip。

void SetIP(const uint8_t ip[16])

-----将对象的IP地址设为ip。  

void SetPort(uint16_t port)

-----将对象的端口号设为port,port是用主机字节序表示。

void GetIP(uint8_t ip[16]) const

-----拷贝对象IP地址到ip。

in6_addr GetIP() const

-----返回对象IP地址。

Uint16_t GetPort() const

-----返回以主机字节序表示的对象端口号。

       当RTPIPv6Address地址用于传输器的组播函数的任意一个时,端口号将被忽略。当该类的对象用于传输器的接受或者拒绝函数中的一个时,0号端口将代表指定IP地址的所有端口。

【to be continued!】
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果在Android开发中遇到了"Unsupport mime 'audio/g711-alaw'"的错误提示,这是由于Android系统本身并不支持G711A和G711U的音频格式,而只支持G711标准的PCM编码格式。因此,如果要在Android中使用G711A或G711U的音频格式,需要使用第三方的库进行编解码。 这里推荐使用JRTPLIB库,它是一个开源的RTP协议库,支持G711A、G711U、G722、L16等音频格式的编解码。使用JRTPLIB库可以方便地实现RTP协议的编解码,并支持自定义的音频格式。 以下是使用JRTPLIB库进行G711A编解码的示例代码: ```java // 初始化JRTPLIBjrtplib::RTPSessionParams sessionParams; sessionParams.SetOwnTimestampUnit(1.0/8000.0); jrtplib::RTPSession rtpSession; rtpSession.Create(sessionParams); // 创建G711A编解码器 jrtplib::G711Codec g711Codec; // 编码 unsigned char encodedData[1024]; int encodedDataLen = 0; g711Codec.Encode(g711Data, g711DataLen, encodedData, 1024, encodedDataLen); // 解码 unsigned char decodedData[1024]; int decodedDataLen = 0; g711Codec.Decode(encodedData, encodedDataLen, decodedData, 1024, decodedDataLen); ``` 在上述代码中,首先使用jrtplib::RTPSessionParams对象设置了音频采样率,并创建了一个RTPSession对象。然后使用jrtplib::G711Codec对象进行G711A的编解码操作。 需要注意的是,JRTPLIB库需要在C++环境下编写,并使用JNI技术将C++代码与Java代码进行交互。因此,使用JRTPLIB库需要一定的C++编程经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值