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

D+自動播放時間軸對不上 #484

Closed
dogwowo opened this issue Jan 10, 2023 · 6 comments
Closed

D+自動播放時間軸對不上 #484

dogwowo opened this issue Jan 10, 2023 · 6 comments

Comments

@dogwowo
Copy link

dogwowo commented Jan 10, 2023

之前的版本沒有遇過類似狀況,
但這幾天看D+發現自動播放或手動播放下一部時間軸會整個跑掉
有時候重新整理還是一樣

@muzuiget
Copy link
Owner

需要账号,原因类似 #471 (comment)

@malagebidi
Copy link

需要账号,原因类似 #471 (comment)

给你发邮件了,希望抽空修复一下。

@muzuiget
Copy link
Owner

这个错位现在是随机的,刷新几下又对得上了。

因为是动态插入出品工作室片头(例如 Disney 那个城堡),<video> 里的时间轴就和字幕对不上了。以前可以在 .m3u8 里判断出来,现在不行了,找不到哪里记录了这个偏移。

最后折腾了半天,我发现最简单的方法:就是把进度条拖回最开始从头播放,这时候不会再显示片头,然后时间轴就对得上了。

@hermanho
Copy link

最近我觀看幕府將軍有類似問題. 當劇集從頭開始播放時, Disney+ 會播放 STAR Original 片頭, 而這個片頭並不計算在Disney+ 播放器的時間線內

STAR Original 片頭

https://www.youtube.com/watch?v=rAu8nqR82Hw

我簡單驗證了Disney+ 是如何決定要播放 STAR Original 片頭
是在這個 XHR 請求

https://disney.playback.edge.bamgrid.com/v7/playback/ctr-regular

這個 XHR 回應可以簡化成以下例子

{
  "stream": {
    "insertion": {
      "mode": "SGAI",
      "points": [
        {
          "id": "INT-0",
          "offset": 0,
          "placement": "PREROLL",
          "content": [
            {
              "type": "AUXILIARY_CONTENT",
              "subtype": "BRAND_BUMPER",
              "playoutRequired": true,
              "path": "/ps01/disney/xxxxxxx/unenc-all-xxxxxxxx-yyyyyy.m3u8",
              "duration": 3000,
              "auxId": "xxxxxxx",
              "visuals": [],
              "actions": []
            }
          ]
        }
      ]
    }
  },
  "playhead": {
    "position": 1,
    "last_modified": "2024-01-09T01:19:10.794Z",
    "status": "PlayheadFound"
  }
}

當 playhead.position === 0 && stream.insertion.points 內有 "type" === "AUXILIARY_CONTENT" && "subtype" === "BRAND_BUMPER", 就會播放片頭然後播放器的時間線會重設到0再播放正片

如果playhead.position 係 1, 就會直接播放正片.

這個可以用Fiddler / Proxyman驗證

@muzuiget
Copy link
Owner

其实我也发现这个“片头效果”叫“bumper”,意思是汽车前面的保险杠,大概 3 秒钟。

在过去这个 bumper 在视频的 .m3u8 文件中,如果发现视频的 .m3u8 文件最开头的视频 .mp4 文件带有 bumper 属性,就需要把字幕偏移 3 秒钟,这样才能和字幕文件的时间轴对的上。这种情况下,看 .m3u8 就知道 bumper 一定显示或者一定不显示。

但是现在改了,视频的 .m3u8 文件就是纯正片内容的视频地址,bumper 的信息被移动到别处,bumper 是随机的。估计给人一种“仪式感”,比如你第一次播放显示,但是中途离开后再回来继续观看,就不显示了。这就是为什么有时刷新一下就正常了。

你这个请求信息,应该表示这个视频有 bumper,不表示是否一定会显示。

所以最简单还是重置进度条方法,其实我应该把这个方法信息显示在字幕菜单页面中的,只是我懒一直都没添加。

@muzuiget
Copy link
Owner

在 v2.28.0,在字幕菜单页面添加了 #593 的链接。

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

4 participants