【问题标题】:How to determine video playing in exoplayer is from cache or network?如何确定在 exoplayer 中播放的视频是来自缓存还是网络?
【发布时间】:2019-07-19 12:19:40
【问题描述】:

我想确定当前在 exoplayer 中播放的视频是来自缓存目录还是直接从服务器播放。

【问题讨论】:

    标签: android video exoplayer2.x


    【解决方案1】:

    没有直接检查或回调 (AFAIK),但您可以检查给定的 URI 是否已缓存,以及是否已缓存,是完全缓存还是仅部分缓存。

    getCached 方法将允许您查询这个 (https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/upstream/cache/CacheUtil.html):

    public static void getCached(
        DataSpec dataSpec,
        Cache cache,
        CachingCounters counters)
    

    值得记住的是,它可能不是缓存的整个视频(尤其是超过一定长度),如果不是,也不一定是缓存的开头。

    答案中有一个很好的例子,展示了如何查看缓存的内容和可用的内容:https://stackoverflow.com/a/48099461/334402

    【讨论】:

    • 谢谢米克。但是这个解决方案并没有让我清楚地识别如何区分缓存视频或流视频。
    • @PrakharGupta - 我不确定你是否可以,即使你可以,它也不会适用于整个流,通常只是其中的一部分。我认为对于大多数一般情况而言,合理的设计目标是保持域的良好分离——即播放器将拥有 URI 并请求它,但它不会看到 URI 何时在本地或通过网络提供服务。对于您的特殊情况,我怀疑您可能需要某种类似于上述机制的机制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-19
    • 2020-07-16
    • 2014-09-18
    • 1970-01-01
    • 2018-08-05
    • 2015-06-18
    • 2012-10-19
    相关资源
    最近更新 更多