xfangfang / wiliwili

第三方B站客户端,目前可以运行在PC全平台、PSVita、PS4 、Xbox 和 Nintendo Switch上
https://xfangfang.github.io/wiliwili
GNU General Public License v3.0
3.03k stars 146 forks source link

Live broadcast related #225

Closed lanytcc closed 8 months ago

lanytcc commented 8 months ago

f61638a772c8ba84bcbf3f681cddd1d5dfacc892

  1. 修了一个不知道是不是bug,mpv stop会触发MpvEventEnum::MPV_RESUME事件
  2. 给mpv_core和和danmaku_core、subtitle_core做了解耦

33fa5b0818706b2c18f3a9c564f8c4368abc5cb7 直播弹幕时间的计算脱离mpv提供的playback_time,视频暂停不会影响到弹幕位置的计算

f5cbaf0d17f64b8e2dbbf9c6b087fc5a6980fb4e

  1. 直播界面的暂停按钮逻辑与视频的不太一样,所以那部分我给它提到两个activity里面了
  2. 将原来的视频进度替换成了主播的开播时间
lanytcc commented 8 months ago

f6aff73 最新的commit有一种在写屎山的感觉,我以为能重用的。我后面重写一个xml吧

xfangfang commented 8 months ago

感谢贡献。 当时也是想之后有时间再模仿官方的直播页重写一下,所以复用了一些内容,但是后来因为我不咋看直播就被搁置了。


修了一个不知道是不是bug,mpv stop会触发MpvEventEnum::MPV_RESUME事件

这个确实是,我之前还一直没注意到这个问题。


没有其他的修改的话,我就合并啦~

lanytcc commented 8 months ago

嗯嗯,暂时没发现其他问题,你测试看一下,没问题就合吧

xfangfang commented 8 months ago

f6aff73 最新的commit有一种在写屎山的感觉,我以为能重用的。我后面重写一个xml吧

稍微重构了一下这部分代码,提交在:https://github.com/xfangfang/wiliwili/commit/5c0a310a73641284dbfcb25a749f6d98d2a6d85f

  1. 把视频组件的播放暂停按钮从其他activity的引用给取消了,添加了 setCustomToggleAction 给直播页使用。
  2. 删除了 timeLabel,换为复用 leftStatusLabel
  3. 删除了 IN_LIVE,换成了 setLiveMode()
  4. brls::delay 也是在主线程运行的,所以不需要包裹 brls::sync,除此之外给直播页自动停止的 delay 添加了 ASYNC_RETAIN、ASYNC_TOKEN、ASYNC_RELEASE,避免退出直播页后影响到其他页面。比如在5s内完成:直播页按暂停,退出直播页,随机打开一个视频,按暂停。

除此之外,貌似有的直播间获取直播地址会报错:“调用bvc-play-url-one出错” 这个可能是 B站API变动,我今天稍后研究一下。

后续:https://github.com/xfangfang/wiliwili/pull/228

发现 LiveDamaku里也用了这个api来获取开播时间,所以把LiveDamaku里的请求顺便给删除了。

lanytcc commented 8 months ago

f6aff73 最新的commit有一种在写屎山的感觉,我以为能重用的。我后面重写一个xml吧

稍微重构了一下这部分代码,提交在:5c0a310

1. 把视频组件的播放暂停按钮从其他activity的引用给取消了,添加了 setCustomToggleAction 给直播页使用。

2. 删除了 timeLabel,换为复用 leftStatusLabel

3. 删除了 IN_LIVE,换成了 setLiveMode()

4. brls::delay 也是在主线程运行的,所以不需要包裹 brls::sync,除此之外给直播页自动停止的 delay 添加了 ASYNC_RETAIN、ASYNC_TOKEN、ASYNC_RELEASE,避免退出直播页后影响到其他页面。比如在5s内完成:直播页按暂停,退出直播页,随机打开一个视频,按暂停。

除此之外,貌似有的直播间获取直播地址会报错:“调用bvc-play-url-one出错” 这个可能是 B站API变动,我今天稍后研究一下。

后续:#228

发现 LiveDamaku里也用了这个api来获取开播时间,所以把LiveDamaku里的请求顺便给删除了。

复用 leftStatusLabel我也想过,这块我确实不熟悉,都是很棒的改动