rtmpdump的使用及遇到的问题

本文介绍了rtmpdump的封装与优化过程,包括在iOS移植中遇到的PIPE异常和视频包解码错误的问题,以及如何通过设置SO_NOSIGPIPE选项解决崩溃。同时,对rtmpdump进行了扩展,添加了receiveAudio和receiveVideo命令,允许用户自定义接收音视频的需求。提供源码链接供参考。
摘要由CSDN通过智能技术生成

对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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值