[Discussions] 关于视频缓存
Closed this issue · 12 comments
大佬 我有一个关于视频缓存的问题,就是视频暂停的时候缓存就停止了,能不能在暂停的时候也缓存视频知道到达设置的最大缓存位置呢?下面是我的代码
options.setPlayerOptionIntValue(1, forKey: "videotoolbox_hwaccel")
options.setPlayerOptionIntValue(1024 * 1024 * 200, forKey: "max-buffer-size") // 设置最大缓冲区大小为200MB
options.setPlayerOptionIntValue(30, forKey: "min-frames") // 设置最小缓存帧数
options.setPlayerOptionIntValue(30, forKey: "probsize") // 设置探测数据大小
options.setPlayerOptionIntValue(1024 * 16, forKey: "analyzeduration") // 设置分析数据时长
options.setPlayerOptionIntValue(1024 * 1024 * 5, forKey: "http-pre-buffer-size") // 设置预缓冲大小为5MB
options.setPlayerOptionIntValue(1, forKey: "start-on-prepared") // 准备好后立即开始播放
options.setPlayerOptionIntValue(1, forKey: "threaded_opens") // 启用多线程打开
options.setPlayerOptionIntValue(1, forKey: "flush_packets") // 启用每次读取后清空缓冲
哈哈,这个问题已经被我发现了,将在最近2天发布新版本修复。
哈哈,这个问题已经被我发现了,将在最近2天发布新版本修复。
哈哈 好的,期待大佬新版本
试试新包:https://github.com/debugly/ijkplayer/releases/tag/k0.11.7-beta-240905094015
大佬 我试了一下,不行呢,我打印了playableDuration,发现暂停视频之后,playableDuration就不动了,self.player?.allHudItem()["tcp-spd"]也变成0了
应该是已经达到缓存的上限了。
应该是已经达到缓存的上限了。
应该没有达到上限,我这个视频是70M,上限设置的是200M
确实,已经修改,正在打包。
确实,已经修改,正在打包。
大佬 我下载新版本看了一下,还是不行,状态和之前一样的
大佬如果您只是暂停播放,不seek的话,是不是缓存就暂停了呢?我这里只要暂停视频,就不会继续缓存了,playableDuration也不变了
是的。
播放器一直处于buffer满(接近于满)的状态,这是一个生产者和消费者的关系,视频渲染会消耗,读包线程会去填充,这样播放器就能一直播放。
你暂停前的那一刻,buffer是满的,所以暂停后播放器并不会继续预加载,除非你的网络不够好,暂停前buffer不满,暂停后才会继续预加载。
是的。 播放器一直处于buffer满(接近于满)的状态,这是一个生产者和消费者的关系,视频渲染会消耗,读包线程会去填充,这样播放器就能一直播放。 你暂停前的那一刻,buffer是满的,所以暂停后播放器并不会继续预加载,除非你的网络不够好,暂停前buffer不满,暂停后才会继续预加载。
明白了,谢谢大佬的解答👍🏻