Bilibili-Evolved/video/frame-playback/frame-playback.js
2019-03-07 16:08:51 +08:00

38 lines
1.4 KiB
JavaScript

import html from 'framePlaybackHtml';
resources.applyStyle("framePlaybackStyle");
const main = async () =>
{
const video = await SpinQuery.select(() => document.querySelector("video"));
const time = await SpinQuery.select(() => document.querySelector(".bilibili-player-video-time"));
if (document.querySelector(".frame-playback"))
{
return;
}
time.insertAdjacentHTML("afterend", html);
await SpinQuery.select(() => document.querySelector(".bilibili-player-video-quality-menu .bui-select-item-active"));
let frameTime = 0;
Observer.attributesSubtree(".bilibili-player-video-quality-menu ul.bui-select-list", () =>
{
const quality = parseInt(document.querySelector(".bilibili-player-video-quality-menu .bui-select-item-active"));
const fps = (() =>
{
switch (quality)
{
// 60fps
case 116:
case 74:
return 60000 / 1001;
// 30fps
default:
return 30000 / 1001;
}
})();
frameTime = 1 / fps;
console.log(frameTime);
});
document.querySelector(".prev-frame").addEventListener("click", () => video.currentTime -= frameTime);
document.querySelector(".next-frame").addEventListener("click", () => video.currentTime += frameTime);
};
Observer.videoChange(main);