zoukankan      html  css  js  c++  java
  • EasyDSS_Dash版本虚拟直播输出RTMP流中断问题的优化调整

    几个月前,TSINGSEE青犀视频开发团队增加了EasyDSS对DASH直播的支持,在EasyDSS的DASH版本中,不仅直播分发了DASH流,并且经过研究,虚拟直播推到直播间也拥有了DASH流数据。

    此版本虚拟直播采用新内核“lalserver”中拉flv本地文件流输出RTMP流。实现完成后还是存在会虚拟直播中断的问题,发现是在调用“lalserver”push方法时,返回了error,” context deadline exceeded”如图:

    于是我们对该问题进行了优化调整。首先将拉flv推rtmp方法使用递归处理,如果返回error,则重新推流,这样会发现如果有虚拟直播中断推流不成功,则就一直在推流-返回error,会导致程序一直卡在push方法中一直循环。

    经测试发现,代码逻辑中对pushsession做释放是放在for循环之后,但是代码中返回error时,for直接return,而pushsession则无法释放,导致下次pushsession推流时则继续报error,所以现在加defer,将释放资源提到for循环上面,则就会执行到释放资源方法。

    defer:将会在该方法返回前最后执行的关键字

    递归处理:

    将session释放放在最上面:

  • 相关阅读:
    求数列的和
    统计字符
    保留最大的数
    POJ百练—IP地址转换
    HDOJ1213(并查集)
    HDOJ1059(多重背包)
    HDOJ1171(多重背包)
    多重背包(标准模板)
    HDOJ1251(前缀匹配---分块查找&map应用)
    hdoj1113(字符串map应用)
  • 原文地址:https://www.cnblogs.com/easydss/p/15348592.html
Copyright © 2011-2022 走看看