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

有时候只有声音没有画面是怎么回事?还有加载失败重播应该如何处理比较好? #30

Closed
sunjianan9900 opened this issue Sep 23, 2021 · 5 comments

Comments

@sunjianan9900
Copy link

有时候只有声音没有画面是怎么回事?

  • 大概持续向下刷一段时间,就会出现视频闪一下然后开始播放声音,但是屏幕是黑的。同时失去控制,控制台打印currentplayer的value,状态也不是正在播放。等于完全没有办法控制了,像是漏网一样。

还有加载失败重播应该如何处理比较好?

  • 有时候会网络加载失败,我采用的方法是重新填入原来的播放列表,强制刷新...
@mjl0602
Copy link
Owner

mjl0602 commented Sep 23, 2021

加载失败重播只需要处理到controller的状态就好了,直接在当前代码上改。
失去控制的问题,看你的描述可能要去看看是否是videoplayer的问题。

@sunjianan9900
Copy link
Author

失控我也觉得是 videoplayer 的问题
完全没有头绪要怎么解决
现在刷个十来个,就会有一个切到背景音播放...

@mjl0602
Copy link
Owner

mjl0602 commented Sep 23, 2021

你如果要用可以换个熟悉的播放器,用VP只是因为VP支持web。封装上,播放器是单独的一层,改一个文件就行了。

@sunjianan9900
Copy link
Author

重播处理controller的状态,我不知道我做的对不对
我在controller里面加了一个reload

reload(int target) async {

    print('开始reload');
    // 暂停播放
    // await playerOfIndex(target)?.controller.seekTo(Duration.zero);
    // await playerOfIndex(target)?.pause();
    print('已经暂停');

    // 释放内存
    playerOfIndex(target)?.controller.removeListener(_didUpdateValue);
    playerOfIndex(target)?.showPauseIcon.removeListener(_didUpdateValue);
    playerOfIndex(target)?.showSpeedIcon.removeListener(_didUpdateValue);
    // await playerOfIndex(target)?.dispose();
    print('已经释放');

    // 预加载
    await playerOfIndex(target)?.init();
    print('已经预加载');


    // 播放
    playerOfIndex(target)?.controller.addListener(_didUpdateValue);
    playerOfIndex(target)?.showPauseIcon.addListener(_didUpdateValue);
    playerOfIndex(target)?.showSpeedIcon.addListener(_didUpdateValue);
    await playerOfIndex(target)?.play();
    print('已经开始播放');

  }

(先 _actLocks.clear();)
调用可以重播,但是方法有点笨,一直检测 state.videoListController.currentPlayer.controller.value.errorDescription ,
每500毫秒检测一次,如果当前播放器有error,就调用上面的reload
.....
我不知道怎么能让他主动重播

@sunjianan9900
Copy link
Author

还是要赞一下,很容易做扩展
很适合我这种新手👍

@mjl0602 mjl0602 closed this as completed Sep 24, 2021
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

2 participants