推送
流程:初始化、连接服务器、发送数据
这一部分主要用的是librtmp,由于是使用别人封装好的库,总的来说比较简单
初始化
简单地调用一下函数
rtmp = RTMP_Alloc();
RTMP_Init(rtmp);
连接服务器
四个函数分别代表:设置URL、使自己成为发送端、建立NetConnection,建立NetStream
RTMP_SetupURL(rtmp, url);
RTMP_EnableWrite(rtmp);
RTMP_Connect(rtmp, NULL);
RTMP_ConnectStream(mRTMP, 0);
发送数据
不断从队列中取出RTMP包,加上时间戳和流ID,然后往服务器发送,帧率的控制位于编码线程,所以这里不用计算时间,直接加上时间戳发送即可,而且由于这里也不好计算时间,还有就是这里的队列是阻塞队列
while (true) {
RTMPPacket& packet = queue.front();
packet.m_nInfoField2 = rtmp->m_stream_id;
packet.m_nTimeStamp = RTMP_GetTime();
RTMP_SendPacket(rtmp