wip: external subs and cleanup

This commit is contained in:
Fredrik Burmester
2024-10-15 07:32:25 +02:00
parent 3807f847fd
commit 13d4117cc1
21 changed files with 75 additions and 152 deletions

View File

@@ -1,19 +0,0 @@
import { Api } from "@jellyfin/sdk";
import { getMediaInfoApi } from "@jellyfin/sdk/lib/utils/api";
export const getPlaybackInfo = async (
api?: Api | null | undefined,
itemId?: string | null | undefined,
userId?: string | null | undefined,
) => {
if (!api || !itemId || !userId) {
return null;
}
const a = await getMediaInfoApi(api).getPlaybackInfo({
itemId,
userId,
});
return a.data;
};

View File

@@ -37,6 +37,7 @@ export const getStreamUrl = async ({
}): Promise<{
url: string | null;
sessionId: string | null;
mediaSource: MediaSourceInfo | undefined;
} | null> => {
if (!api || !userId || !item?.Id) {
return null;
@@ -70,7 +71,11 @@ export const getStreamUrl = async ({
sessionId = res0.data.PlaySessionId || null;
if (transcodeUrl) {
return { url: `${api.basePath}${transcodeUrl}`, sessionId };
return {
url: `${api.basePath}${transcodeUrl}`,
sessionId,
mediaSource: res0.data.MediaSources?.[0],
};
}
}
@@ -108,13 +113,12 @@ export const getStreamUrl = async ({
(source: MediaSourceInfo) => source.Id === mediaSourceId
);
console.log("getStreamUrl ~ ", item.MediaType);
if (item.MediaType === "Video") {
if (mediaSource?.SupportsDirectPlay || forceDirectPlay === true) {
return {
url: `${api.basePath}/Videos/${itemId}/stream.mp4?playSessionId=${sessionData?.PlaySessionId}&mediaSourceId=${mediaSource?.Id}&static=true&subtitleStreamIndex=${subtitleStreamIndex}&audioStreamIndex=${audioStreamIndex}&deviceId=${api.deviceInfo.id}&api_key=${api.accessToken}`,
sessionId: sessionId,
mediaSource,
};
}
@@ -122,15 +126,18 @@ export const getStreamUrl = async ({
return {
url: `${api.basePath}${mediaSource.TranscodingUrl}`,
sessionId: sessionId,
mediaSource,
};
}
}
if (item.MediaType === "Audio") {
console.log("getStreamUrl ~ Audio");
if (mediaSource?.TranscodingUrl) {
return { url: `${api.basePath}${mediaSource.TranscodingUrl}`, sessionId };
return {
url: `${api.basePath}${mediaSource.TranscodingUrl}`,
sessionId,
mediaSource,
};
}
const searchParams = new URLSearchParams({
@@ -153,6 +160,7 @@ export const getStreamUrl = async ({
api.basePath
}/Audio/${itemId}/universal?${searchParams.toString()}`,
sessionId,
mediaSource,
};
}

View File

@@ -259,11 +259,11 @@ export default {
],
SubtitleProfiles: [
{
Format: "pgssub",
Method: "embed",
Format: "srt",
Method: "external",
},
{
Format: "subrip",
Format: "pgssub",
Method: "embed",
},
{