Got preselect audio selection for IOS and android for direct play working

This commit is contained in:
Alex Kim
2024-11-24 01:02:00 +11:00
parent 0418cffba1
commit ad2bfd8f28

View File

@@ -18,7 +18,10 @@ import { writeToLog } from "@/utils/log";
import native from "@/utils/profiles/native"; import native from "@/utils/profiles/native";
import { msToTicks, ticksToSeconds } from "@/utils/time"; import { msToTicks, ticksToSeconds } from "@/utils/time";
import { Api } from "@jellyfin/sdk"; import { Api } from "@jellyfin/sdk";
import { BaseItemDto, MediaSourceType } from "@jellyfin/sdk/lib/generated-client"; import {
BaseItemDto,
MediaSourceType,
} from "@jellyfin/sdk/lib/generated-client";
import { import {
getPlaystateApi, getPlaystateApi,
getUserLibraryApi, getUserLibraryApi,
@@ -305,14 +308,23 @@ export default function page() {
? ticksToSeconds(item.UserData.PlaybackPositionTicks) ? ticksToSeconds(item.UserData.PlaybackPositionTicks)
: 0; : 0;
// Preselection of audio and subtitle tracks. // Preselection of audio and subtitle tracks.
let initOptions = ["--sub-text-scale=60"] let initOptions = ["--sub-text-scale=60"];
let externalTrack = { name: "", DeliveryUrl: "" }; let externalTrack = { name: "", DeliveryUrl: "" };
const allSubs = stream.mediaSource.MediaStreams?.filter((sub) => sub.Type === "Subtitle") || []; const allSubs =
const chosenSubtitleTrack = allSubs.find((sub) => sub.Index === subtitleIndex); stream.mediaSource.MediaStreams?.filter((sub) => sub.Type === "Subtitle") ||
[];
const chosenSubtitleTrack = allSubs.find(
(sub) => sub.Index === subtitleIndex
);
const allAudio =
stream.mediaSource.MediaStreams?.filter(
(audio) => audio.Type === "Audio"
) || [];
const chosenAudioTrack = allAudio.find((audio) => audio.Index === audioIndex);
// Direct playback CASE // Direct playback CASE
if (!bitrateValue) { if (!bitrateValue) {
// If Subtitle is embedded we can use the position to select it straight away. // If Subtitle is embedded we can use the position to select it straight away.
@@ -322,15 +334,16 @@ export default function page() {
// If Subtitle is external we need to pass the URL to the player. // If Subtitle is external we need to pass the URL to the player.
externalTrack = { externalTrack = {
name: chosenSubtitleTrack.DisplayTitle || "", name: chosenSubtitleTrack.DisplayTitle || "",
DeliveryUrl: `${api?.basePath || ""}${chosenSubtitleTrack.DeliveryUrl}` DeliveryUrl: `${api?.basePath || ""}${chosenSubtitleTrack.DeliveryUrl}`,
}; };
} }
initOptions.push(`--audio-track=${allAudio.indexOf(chosenAudioTrack)}`);
} else { } else {
// Transcoded playback CASE // Transcoded playback CASE
if (chosenSubtitleTrack?.DeliveryMethod === "Hls") { if (chosenSubtitleTrack?.DeliveryMethod === "Hls") {
externalTrack = { externalTrack = {
name: `subs ${chosenSubtitleTrack.DisplayTitle}` , name: `subs ${chosenSubtitleTrack.DisplayTitle}`,
DeliveryUrl: "" DeliveryUrl: "",
}; };
} }
} }