对rtmpdump进行了封装、优化。
1. 使用说明请参考雷神文章 http://blog.csdn.net/leixiaohua1020/article/details/14229047
2. 遇到的问题
在ios移植中首先遇到的问题就是PIPE异常奔溃,添加 signal(SIGPIPE, SIG_IGN); 后还是不行,安卓是可以了。
后又在ios时修改为
int on = 1;
setsockopt(r->m_sb.sb_socket, SOL_SOCKET, SO_NOSIGPIPE, &on, sizeof(on));
这时就可以了。
第二个问题 RTMP_GetNextMediaPacket 获取到的视频包会导致视频解码器奔溃,最后查出是包体有误,长度有时会是小于5个字节的数据。始终没查出这是怎么出来的这种包,最后做了安全检查
int RtmpConnection::handle_input()
{
RTMPPacket packet = { 0 };
int read = RTMP_GetNextMediaPacket(_rtmp, &packet);
if (read <= 0 || read == 2){
return -1;
}
uint8_t *packetBody = (uint8_t *)packet.m_body;
unsigned int nPacketLen