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

Occasional freeze when seeking forward #160

Open
Predidit opened this issue Oct 5, 2024 · 8 comments
Open

Occasional freeze when seeking forward #160

Predidit opened this issue Oct 5, 2024 · 8 comments
Assignees
Labels
libmdk mdk bug

Comments

@Predidit
Copy link

Predidit commented Oct 5, 2024

我在使用最新的 fvp 0.26.1 我尝试使用以下代码注册 fvp 并启用更大的播放缓存

  fvp.registerWith(options: {
    'video.decoders': ['FFmpeg'],
    'fastSeek': 'true',
    'player': {
      'avio.reconnect': '1',
      'avio.reconnect_delay_max': '7',
      'buffer': '2000+1500000',
    }
  });

当存在 'fastSeek': 'true' 时,缓存相关设置不生效,移除后缓存相关设置生效

@wang-bin
Copy link
Owner

wang-bin commented Oct 5, 2024

有日志吗?我用./glfwplay -buffer 2000+1500000 -log all $URL然后用左右键fast seek看日志正常

@wang-bin
Copy link
Owner

wang-bin commented Oct 5, 2024

我在master分支扩展了VideoPlayerController一些方法,比如在import fvp并registerWith的条件下可以调用controller.fastSeekTo(),也可以实时切换解码器setVideoDecoders([...]),不过所有这些方法只有在intialize()成功后才会起作用,controller构造的时候只能用默认的或registerWith设置的解码器。

@Predidit
Copy link
Author

Predidit commented Oct 5, 2024

我使用了错误的注册方法,应该使用 'fastSeek': true 而不是 'fastSeek': 'true',不过我仍然想反馈一个关于跳转的问题

我使用以下的代码注册 fvp

        fvp.registerWith(options: {
          'platforms': ['windows', 'linux'],
          'player': {
            'avio.reconnect': '1',
            'avio.reconnect_delay_max': '7',
            'buffer': '2000+1500000',
            'demux.buffer.ranges': '8',
          }
        });

我尝试使用 fastSeek 是希望解决在较大缓存的情况下,向前的跳转偶尔会出现长达数秒的卡顿甚至卡死的问题。我捕获了发生卡顿时的日志,如下所示,卡顿在第14次跳转时发生,跳转的目标应该存在缓存,这本应该立即完成。

kazumi_log.txt

@Predidit Predidit changed the title fastSeek is incompatible with buffer option Occasional freeze when seeking forward Oct 5, 2024
@Predidit
Copy link
Author

Predidit commented Oct 5, 2024

当这种冻结发生时, 视频会继续播放, 但 VideoPlayerController.value.position 等属性不再更新

@wang-bin
Copy link
Owner

wang-bin commented Oct 5, 2024

seek是在解复用的线程执行的,如果有seek请求时,当前下载的一个包还没完成卡了一会(看日志是开始下载一个新的ts切片会卡比较久),seek就会推迟。对于开启缓存的情况其实不用这么操作,我这边可以优化一下

@wang-bin wang-bin self-assigned this Oct 6, 2024
@wang-bin wang-bin added the libmdk mdk bug label Oct 6, 2024
@Predidit
Copy link
Author

新发布的 0.27.0 包含这一修复吗

似乎新的 0.27.0 还没有上传到 pub.dev 上

@wang-bin
Copy link
Owner

没,bug在mdk

@Predidit
Copy link
Author

当出现向前的seek导致的视频冻结时,调用 dispose 方法会概率冻结整个应用程序。

并且会得到 operator ()427 postCObject error 错误

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

No branches or pull requests

2 participants