本文所有内容均为原创,转载请注明出处!
上一篇我们介绍了RTP协议的一些基本知识,下面我们介绍如何使用jrtplib这个库传输H264编码。
JRTP传输:
好了,下面是我写的使用JRTP进行发送H264数据包的例子,具体解释可以看注释。发送端也可以接收接收端发送过来的RTCP数据包。
#define MAX_RTP_PKT_LENGTH 1360
#define H264 96
bool CheckError(int rtperr);
class CRTPSender :
public RTPSession
{
public:
CRTPSender(void);
~CRTPSender(void);
protected:
void OnAPPPacket(RTCPAPPPacket *apppacket,const RTPTime &receivetime,const RTPAddress *senderaddress);
void OnBYEPacket(RTPSourceData *srcdat);
void OnBYETimeout(RTPSourceData *srcdat);
public:
void SendH264Nalu(unsigned char* m_h264Buf,int buflen);
void SetParamsForSendingH264();
};
bool CheckError(int rtperr)
{
if (rtperr < 0)
{
std::cout<<"ERROR: "<<RTPGetErrorString(rtperr)<<std::endl;
return false;
}
return true;
}
CRTPSender::CRTPSender(void)
{
}
CRTPSender::~CRTPSender(void)
{
}
void CRTPSender::OnAPPPacket(RTCPAPPPacket *apppacket,const RTPTime &receivetime,const RTPAddress *senderaddress)
{//收到RTCP APP数据
std::cout<<"Got RTCP packet from: "<<senderaddress<<std::endl;
std::cout<<"Got RTCP subtype: "<<apppacket->GetSubType()<<std::endl;
std::cout<<"Got RTCP data: &