CarEye推流库中对于MP4文件推送的优化心得

之前的CarEye推流库推送MP4文件的逻辑是创建推送通道成功后就一直推送媒体流到队列中,然后推送线程读取队列信息进行推送,跟推送实时媒体流数据是一个逻辑,不过后来发现这样会造成这么一个问题,当网络不好的时候会丢帧,推送文件毕竟不同于推送实时流,用户是需要看到完整影像的,基于此点进行逻辑的优化:

开始的时候在解码线程中进行推流通道的网络状态检测,如果断网则暂停推送,恢复连接后就继续推送,这样实施起来相对也简单,不过在实现后发现暂停推送后网络不会自动重连,查看libRTMP库代码后发现是只有你推流的过程中推流失败会重新连接一次网络,如果不推流则不进行重连,这样就有些为难了,这得区分是推送文件还是推送实时流。

然后在推流线程中进行检测,当为推送文件并推送失败时,检测网络状态,网络断开则进行定时重连并报告给解码线程,解码线程检测到网络断开暂停解码,重连成功后继续解码,修改完成后倒是可以正常推送了,但正如你所想,事情不会这么简单的,测试发现断开重连后播放端会看到快进播放的情况或播放失败的情况,这是如何造成的呢?解码线程的时间同步问题。。。费了一番力气后将时间同步问题解决,再进行测试就OK了!~!

808, 905部标流媒体开源项目:https://github.com/Car-eye-team QQ群: 590411159

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值