HcdCachePlayer icon indicating copy to clipboard operation
HcdCachePlayer copied to clipboard

关于缓存视频

Open jf101010 opened this issue 9 years ago • 7 comments

在缓存视频时,第一个视频可以缓存,第二和第三个视频在HcdVideoRequestTask中的self.taskArr始终会添加两次connection导致无法使视频从temp移到document,请问这个该怎么解决?

jf101010 avatar Jul 25 '16 07:07 jf101010

我也发现这个问题了,,第一个视频比较短,第三个比较长,所以这两个都没有缓存成功,这是一个奇葩的bug,我也正在找原因。

Jvaeyhcd avatar Jul 25 '16 10:07 Jvaeyhcd

主要是HcdVideoRequestTask.h中的self.taskArr的count值在第二个视频的时候,不知道为什么会add了两个值。麻烦你看一下这是什么原因?第一个视频的count值就只为1。

jf101010 avatar Jul 25 '16 11:07 jf101010

因为这段代码的原因:

        // 如果新的rang的起始位置比当前缓存的位置还大300k,则重新按照range请求数据
        if (self.task.offset + self.task.downLoadingOffset + 1024 * 300 < range.location ||
            // 如果往回拖也重新请求
            range.location < self.task.offset) {
            [self.task setUrl:interceptedURL offset:range.location];
        }

每次[self.task setUrl:interceptedURL offset:range.location];调用,taskArr就会add一次

Jvaeyhcd avatar Jul 25 '16 11:07 Jvaeyhcd

那请问这是什么原因导致的?我打断点跑了后发现正如你所说的,第一个视频就不会进这个方法,第二和第三个就会进,应该才开始播放时都不会进这个方法啊

jf101010 avatar Jul 26 '16 04:07 jf101010

在从头开始播放时,第二次进入了- (void)dealWithLoadingRequest:(AVAssetResourceLoadingRequest *)loadingRequest方法,获取的range.location不在为0,但是这时视频并没有开始播放,为什么range的位置不为0?

jf101010 avatar Jul 26 '16 04:07 jf101010

请问这个问题怎么解决?我也遇到了

callmewenxi avatar May 06 '17 08:05 callmewenxi

我发现把这个1024 * 300 改大一点就可以了,请问改大了会有什么影响吗?

callmewenxi avatar May 06 '17 08:05 callmewenxi