librtmp发送flv tag扩展时间戳
2017-11-30 20:46
211 查看
一 librtmp 存在一个bug当时间戳大于0xffffff也就是4.64小时的时候,会和FMS掉连接,至于修复方法网上比较多,我就不多说了。可以参考这个:http://blog.csdn.net/jiang_shikun/article/details/46047417
二 librtmp调用有的同学发送rtmp 消息的时候,是直接调用的RTMP_SendPacket 发送的,在RTMPPacket *packet->m_nTimeStamp 打上时间戳。有的同学习惯以flv tag的方式发送rtmp消息。调用的librtmp提供的外部接口,int RTMP_Write(RTMP *r, const char *buf, int size); 调用传入的数据是一个个flv tag格式的。当时间戳大于3字节的时候,如何封装flv tag中的时间戳呢?查看flv 格式文档:
将高8bits 填充到Timestamp Extended 字节中。参见代码: flv_tag_buf[4] = last_timestamp >> 16 &0xff;
flv_tag_buf[5] = last_timestamp >> 8 &0xff;
flv_tag_buf[6] = last_timestamp &0xff;
flv_tag_buf[7] = last_timestamp >>24&0xff;
rtmp_ret = RTMP_Write(rtmp_object_,(char*)flv_tag_buf,flv_tag_len);
二 librtmp调用有的同学发送rtmp 消息的时候,是直接调用的RTMP_SendPacket 发送的,在RTMPPacket *packet->m_nTimeStamp 打上时间戳。有的同学习惯以flv tag的方式发送rtmp消息。调用的librtmp提供的外部接口,int RTMP_Write(RTMP *r, const char *buf, int size); 调用传入的数据是一个个flv tag格式的。当时间戳大于3字节的时候,如何封装flv tag中的时间戳呢?查看flv 格式文档:
将高8bits 填充到Timestamp Extended 字节中。参见代码: flv_tag_buf[4] = last_timestamp >> 16 &0xff;
flv_tag_buf[5] = last_timestamp >> 8 &0xff;
flv_tag_buf[6] = last_timestamp &0xff;
flv_tag_buf[7] = last_timestamp >>24&0xff;
rtmp_ret = RTMP_Write(rtmp_object_,(char*)flv_tag_buf,flv_tag_len);
相关文章推荐
- librtmp 时间戳超过 0xffffff时,FMS掉连接
- 通过LIBRTMP发送H264和AAC
- RTMP时间戳大于0xffffff,数据发送失败问题
- librtmp 时间戳超过 0xffffff时,FMS掉连接
- RTMPdump(libRTMP) 源代码分析 8: 发送消息(Message)
- RTMPdump(libRTMP) 源代码分析 8: 发送消息(Message)
- RTMPdump(libRTMP) 源代码分析 8: 发送消息(Message)
- librtmp 时间戳超过 0xffffff时,FMS掉连接
- rtmpdump的librtmp时间戳有问题,服务器会断开连接
- librtmp发送阻塞
- 利用LIBRTMP直播时 更改发送数据的包大小
- RTMPdump(libRTMP) 源代码分析 8: 发送消息(Message)
- RTMPdump(libRTMP) 源代码分析 8: 发送消息(Message)
- RTMPdump(libRTMP) 源代码分析 8: 发送消息(Message)
- RTMPdump(libRTMP) 源代码分析 8: 发送消息(Message)
- librtmp发送AVC,AAC数据包
- librtmp发送阻塞
- librtmp 时间戳超过 0xffffff时,crtmpserver掉连接
- rtmpdump的librtmp时间戳有问题,服务器会断开连接
- 利用LIBRTMP直播时 更改发送数据的包大小