From 8d97491556a1f3d3435310dec80a847a0501a47f Mon Sep 17 00:00:00 2001 From: WardPearce Date: Sun, 15 Sep 2024 19:31:04 +1200 Subject: [PATCH] Add fix for dash quality --- materialious/android/app/build.gradle | 4 ++-- materialious/electron/package.json | 2 +- materialious/package.json | 2 +- materialious/src/lib/Player.svelte | 32 ++++++++++++++++++++++++++- materialious/src/lib/misc.ts | 13 +++++++++++ update_versions.py | 2 +- 6 files changed, 49 insertions(+), 6 deletions(-) diff --git a/materialious/android/app/build.gradle b/materialious/android/app/build.gradle index 6fd91c68..3d67f9d6 100644 --- a/materialious/android/app/build.gradle +++ b/materialious/android/app/build.gradle @@ -7,8 +7,8 @@ android { applicationId "us.materialio.app" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 31 - versionName "1.3.2" + versionCode 32 + versionName "1.3.3" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" aaptOptions { // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. diff --git a/materialious/electron/package.json b/materialious/electron/package.json index 36cfe801..0efe5f43 100644 --- a/materialious/electron/package.json +++ b/materialious/electron/package.json @@ -1,6 +1,6 @@ { "name": "Materialious", - "version": "1.3.2", + "version": "1.3.3", "description": "Modern material design for Invidious.", "author": { "name": "Ward Pearce", diff --git a/materialious/package.json b/materialious/package.json index b76e7845..2bb70adf 100644 --- a/materialious/package.json +++ b/materialious/package.json @@ -1,6 +1,6 @@ { "name": "materialious", - "version": "1.3.2", + "version": "1.3.3", "private": true, "scripts": { "dev": "vite dev", diff --git a/materialious/src/lib/Player.svelte b/materialious/src/lib/Player.svelte index 14d9d447..69bd66e2 100644 --- a/materialious/src/lib/Player.svelte +++ b/materialious/src/lib/Player.svelte @@ -12,7 +12,13 @@ import type { MediaPlayerElement } from 'vidstack/elements'; import { deleteVideoProgress, getVideoProgress, saveVideoProgress } from './Api'; import type { VideoPlay } from './Api/model'; - import { getBestThumbnail, proxyVideoUrl, videoLength, type PhasedDescription } from './misc'; + import { + getBestThumbnail, + proxyVideoUrl, + pullBitratePreference, + videoLength, + type PhasedDescription + } from './misc'; import { authStore, instanceStore, @@ -205,6 +211,29 @@ userVideoSpeed = player.playbackRate; }); + player.addEventListener('provider-change', (event) => { + const provider = event.detail; + const bitrate = pullBitratePreference(); + if (provider?.type === 'dash') { + (provider as any).config = { + streaming: { + abr: { + ABRStrategy: 'abrBola', + movingAverageMethod: 'ewma', + autoSwitchBitrate: { + video: false, + audio: false + }, + initialBitrate: { + video: bitrate, + audio: bitrate + } + } + } + }; + } + }); + if (get(sponsorBlockStore) && get(sponsorBlockCategoriesStore)) { const currentCategories = get(sponsorBlockCategoriesStore); @@ -382,6 +411,7 @@ title={data.video.title} streamType={playerIsLive ? 'live' : 'on-demand'} viewType={audioMode ? 'audio' : 'video'} + fullscreen={false} keep-alive {src} > diff --git a/materialious/src/lib/misc.ts b/materialious/src/lib/misc.ts index 7effca4d..7e6c2caa 100644 --- a/materialious/src/lib/misc.ts +++ b/materialious/src/lib/misc.ts @@ -175,6 +175,19 @@ export async function loadPfp(url: string): Promise { return URL.createObjectURL(await resp.blob()); } +export function pullBitratePreference(): number { + const vidstack = localStorage.getItem('video-player'); + + if (vidstack) { + const vidstackSettings = JSON.parse(vidstack); + if (vidstackSettings.quality && vidstackSettings.quality.bitrate) { + return vidstackSettings.quality.bitrate; + } + } + + return -1; +} + export function proxyGoogleImage(source: string): string { if (source.startsWith('//')) source = `https:${source}`; diff --git a/update_versions.py b/update_versions.py index 679eaa0d..8ef0dd8e 100644 --- a/update_versions.py +++ b/update_versions.py @@ -5,7 +5,7 @@ import json import os import re -LATEST_VERSION = "1.3.2" +LATEST_VERSION = "1.3.3" WORKING_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), "materialious") ROOT_PACKAGE = os.path.join(WORKING_DIR, "package.json")