gpt4 book ai didi

cobalt - 处理缓冲区不足的最佳方法?

转载 作者:行者123 更新时间:2023-12-02 02:21:13 26 4
gpt4 key购买 nike

我正在 Starboard 中实现媒体处理程序,但遇到了 Cobalt 中的客户端应用程序无法足够积极地缓冲内容的情况。这会导致它只是在空缓冲区中闲置。当平台缓冲区耗尽时,触发的正确右舷事件是什么?我应该以某种方式冒出错误,还是可以向客户端应用程序发出请求更多数据的信号?

最佳答案

当出现欠载时,播放器实现应通过内部暂停视频播放来处理它。对于最终用户来说,媒体播放被暂停,而媒体堆栈的状态仍被视为“正在播放”。这使播放器有机会在再次恢复播放之前接收一些视频数据。在引用实现中,PlayerWorker 通过暂停音频播放来实现此目的。由于媒体时间和视频播放与音频时间 Hook ,因此整个播放器暂停。

当新数据到来时,播放器应自动恢复播放。播放器实现还可以选择增加预滚动/恢复所需的缓冲区量,以避免 future 的欠载,但这通常不是必需的。

正如您提到的,您的应用程序经常遇到运行不足的情况。即使可以正确处理欠载,解决此问题以获得更好的用户体验也是很棒的。

我要检查的第一件事是测试环境是否有足够的网络带宽来满足所请求的视频质量。如果应用程序面向网络非常差的市场,请考虑缓冲更多媒体数据。

如果网络带宽足够时应用程序运行不足,则表明媒体数据处理速度不够快。一个好方法是检查 kSbPlayerDecoderStateNeedsData 是否被足够频繁地触发,并且 SbPlayerWriteSample() 是否被调用而没有太多延迟,因为这是跨 Starboard 边界移动媒体数据的唯一位置。

关于cobalt - 处理缓冲区不足的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40517025/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com