Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于缓存视频 #13

Open
jf101010 opened this issue Jul 25, 2016 · 7 comments
Open

关于缓存视频 #13

jf101010 opened this issue Jul 25, 2016 · 7 comments

Comments

@jf101010
Copy link

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

@Jvaeyhcd
Copy link
Owner

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

@jf101010
Copy link
Author

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

@Jvaeyhcd
Copy link
Owner

因为这段代码的原因:

        // 如果新的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一次

@jf101010
Copy link
Author

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

@jf101010
Copy link
Author

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

@callmewenxi
Copy link

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

@callmewenxi
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants