librtmp发送flv tag扩展时间戳

本文介绍了 librtmp 中的一个时间戳溢出 bug,该 bug 在时间戳超过 4.64 小时时导致与 FMS 的连接丢失,并提供了修复方法。此外,还探讨了在发送 RTMP 消息时如何正确处理超过 3 字节的时间戳,以 FLV tag 格式进行封装。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 一 librtmp 存在一个bug当时间戳大于0xffffff也就是4.64小时的时候,会和FMS掉连接,至于修复方法网上比较多,
我就不多说了。可以参考这个:http://blog.youkuaiyun.com/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);




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值