Feat: dash Quality and bili hevc

This commit is contained in:
zijiren233 2023-11-15 18:13:12 +08:00
parent eb966b974f
commit 0bdc1937af
5 changed files with 44 additions and 12 deletions

6
package-lock.json generated
View File

@ -12,6 +12,7 @@
"@vueuse/router": "^10.5.0",
"artplayer": "^5.0.9",
"artplayer-plugin-danmuku": "^5.0.1",
"artplayer-plugin-dash-quality": "^2.0.0",
"axios": "^1.4.0",
"dashjs": "^4.7.2",
"element-plus": "^2.3.8",
@ -1871,6 +1872,11 @@
"resolved": "https://registry.npmjs.org/artplayer-plugin-danmuku/-/artplayer-plugin-danmuku-5.0.1.tgz",
"integrity": "sha512-b6/Y4/+X0rNmnqS5+zzQgow+WW4iVT8eFv4LAUzJgIyORIcf5Gn00Dy0PZ+kwGb1VJy0CUCRK6gVVvh0tWsRAg=="
},
"node_modules/artplayer-plugin-dash-quality": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/artplayer-plugin-dash-quality/-/artplayer-plugin-dash-quality-2.0.0.tgz",
"integrity": "sha512-bQ1cGEX54O1s/9OVuFAHnV/zqDdOgM4uNPBzl3F1cqPUAxWzc1dfLt9OFTyEWCWyNBN9A5xjx7bRK4vevxcrdg=="
},
"node_modules/async-validator": {
"version": "4.2.5",
"resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz",

View File

@ -16,6 +16,7 @@
"@vueuse/router": "^10.5.0",
"artplayer": "^5.0.9",
"artplayer-plugin-danmuku": "^5.0.1",
"artplayer-plugin-dash-quality": "^2.0.0",
"axios": "^1.4.0",
"dashjs": "^4.7.2",
"element-plus": "^2.3.8",

View File

@ -47,18 +47,18 @@ watchers.push(
);
const playMpd = (player: HTMLMediaElement, url: string, art: any) => {
import("dashjs")
.then((dashjs) => dashjs.default)
.then((dashjs) => {
if (dashjs.supportsMediaSource()) {
const dash = dashjs.MediaPlayer().create();
dash.initialize(player, url, false);
art.dash = dash;
art.on("destroy", () => dash.reset());
} else {
art.notice.show = "Unsupported playback format: mpd";
}
});
import("@/utils/dash").then((dash) => {
if (dash.isSupported()) {
const plugin = dash.newDashQualityPlugin();
plugin(art);
const d = dash.newDash();
d.initialize(player, url, false);
art.dash = d;
art.on("destroy", () => d.destroy());
} else {
art.notice.show = "Unsupported playback format: mpd";
}
});
};
const playFlv = (player: HTMLMediaElement, url: string, art: any) => {

22
src/utils/dash.ts Normal file
View File

@ -0,0 +1,22 @@
import dashjs from "dashjs";
import artplayerPluginDashQuality from "artplayer-plugin-dash-quality";
export function newDash(): dashjs.MediaPlayerClass {
return dashjs.MediaPlayer().create();
}
export function isSupported(): boolean {
return dashjs.supportsMediaSource();
}
export function newDashQualityPlugin(): (art: Artplayer) => {
name: "artplayerPluginDashQuality";
} {
return artplayerPluginDashQuality({
control: true,
setting: true,
getResolution: (level) => level.height + "P",
title: "画质",
auto: "自动"
});
}

View File

@ -641,6 +641,9 @@ const playerUrl = computed(() => {
return `${window.location.origin}/api/movie/live/${room.currentMovie.id}.m3u8`;
}
} else if (room.currentMovie.base?.proxy) {
if (room.currentMovie.base!.vendorInfo?.bilibili) {
return `${window.location.origin}/api/movie/proxy/${roomID.value}/${room.currentMovie.id}?t=hevc`;
}
return `${window.location.origin}/api/movie/proxy/${roomID.value}/${room.currentMovie.id}`;
} else {
return room.currentMovie.base!.url;