mirror of
https://github.com/immich-app/immich.git
synced 2026-05-18 03:10:24 +03:00
video quality selector
This commit is contained in:
@@ -34,6 +34,7 @@
|
||||
import 'media-chrome/media-time-range';
|
||||
import 'media-chrome/media-volume-range';
|
||||
import 'media-chrome/menu/media-playback-rate-menu';
|
||||
import 'media-chrome/menu/media-rendition-menu';
|
||||
import 'media-chrome/menu/media-settings-menu';
|
||||
import 'media-chrome/menu/media-settings-menu-button';
|
||||
import 'media-chrome/menu/media-settings-menu-item';
|
||||
@@ -144,6 +145,19 @@
|
||||
}
|
||||
});
|
||||
|
||||
// Once ABR has picked an initial codec tier, drop the others.
|
||||
// The player already avoids switching codecs, and removing the other codecs
|
||||
// makes the quality selector cleaner with only resolution options.
|
||||
api.once(Hls.Events.LEVEL_SWITCHED, (_event, data) => {
|
||||
const chosenLevel = api.levels[data.level];
|
||||
for (let idx = api.levels.length - 1; idx >= 0; idx--) {
|
||||
const { codecSet, videoRange } = api.levels[idx];
|
||||
if (codecSet !== chosenLevel.codecSet || videoRange !== chosenLevel.videoRange) {
|
||||
api.removeLevel(idx);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
api.on(Hls.Events.FRAG_LOADED, () => (rebuildCount = 0));
|
||||
|
||||
api.on(Hls.Events.ERROR, (_, data) => {
|
||||
@@ -342,6 +356,16 @@
|
||||
<span slot="title">{$t('playback_speed')}</span>
|
||||
</media-playback-rate-menu>
|
||||
</media-settings-menu-item>
|
||||
{#if featureFlagsManager.value.realtimeTranscoding}
|
||||
<media-settings-menu-item class="mx-1 rounded-lg p-1 ps-2">
|
||||
{$t('video_quality')}
|
||||
<Icon slot="suffix" icon={mdiChevronRight} class="m-2" />
|
||||
<media-rendition-menu slot="submenu" hidden>
|
||||
<Icon slot="back-icon" icon={mdiChevronLeft} class="m-2" />
|
||||
<span slot="title">{$t('video_quality')}</span>
|
||||
</media-rendition-menu>
|
||||
</media-settings-menu-item>
|
||||
{/if}
|
||||
</media-settings-menu>
|
||||
{/if}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user