最近在搞一个rtmp协议推送音视频数据Flash播放,过程中遇到一个挺头疼问题,推送两台H264视频设备,一台视频播放正常,另一台设备的视频播放总是失败。
代码一步步跟,分析发送的数据,始终没有找到原因,后来怀疑是不是另一台设备的H264视频编码的问题,就直接将受到的H264裸数据写到文件中,然后用发送裸H264的测试程序测试,结果发送成功。。。
无奈,后来只好将测试程序发送的RTMP封装数据和实例RTMP封装数据进行比较,发现,两组数据唯一的不同就是时间戳,后来上网查询相关资料,终于发现,果然是时间戳导致的问题,一台数据的时间戳比较小,始终没有超过0xffffff,另一台设备时间戳大于0xfffff。根据网上的方法,将librtmp库的源码进行了相关修改,重新编译后进行调用,果然就没问题了,现在特地将网上的资料分享给大家,哈哈!
更改rtmp.c文件 RTMP_SendPacket 此函数