【发布时间】:2009-07-03 15:54:08
【问题描述】:
使用 NetStream 从 http 流式传输内容,我注意到 esp 具有某些导出的 h264,如果播放器遇到空缓冲区,它将停止并缓冲到请求的长度(如预期的那样)。
但是,一旦缓冲区已满,播放就不会继续,而是会向前跳,因此 - 在短时间内立即播放缓冲的持续时间,从而再次触发空缓冲区..然后这将继续结束了。
大概当网络流暂停缓冲时,播放头位置继续,并且播放器试图在恢复时捕捉到该位置 - 但是考虑到建立一个 2 秒的缓冲区可能需要 5 秒 - 它最终得到一个无用的缓冲区又来了。。
(这是一个假设)
我试图通过侦听空缓冲区 netstatus 事件、暂停流并同时设置一个循环来检查当前缓冲区长度与请求的缓冲区长度来解决此问题。缓冲区长度大于或等于请求的缓冲区..但是当没有足够的视频剩余时这会导致问题..例如,一个 10 秒的缓冲区只剩下 5 秒,循环只是坐在那里等待当只剩下 5 个时,缓冲区长度为 10 秒...
您会认为您可以简单地检查哪个更小,剩余时间或请求的缓冲区长度..但是 flash 给出的时间并不准确..
如果添加净流当前时间索引,加上缓冲时间,总时间不是电影的整个持续时间(结束时)。它很接近但不一样。
这让我回到了最初的问题,如果有其他方法可以解决这个问题,显然 flash 知道缓冲区何时准备就绪,那么如何在缓冲区准备好时让 flash 暂停,并在缓冲区准备好后恢复?目前它没有......它会暂停,然后一旦缓冲区已满 - 它会在大约 0.1 秒内播放整个缓冲内容。
提前致谢, 斯蒂芬。
【问题讨论】:
标签: flash actionscript-3 video streaming