fix: chromecast not working

This commit is contained in:
Fredrik Burmester
2025-02-18 17:56:10 +01:00
parent c9f6e8676b
commit 1ac6b7e3df
3 changed files with 94 additions and 125 deletions

View File

@@ -115,10 +115,11 @@ export const PlayButton: React.FC<Props> = ({
case 0:
if (!Platform.isTV) {
await CastContext.getPlayServicesState().then(async (state) => {
if (state && state !== PlayServicesState.SUCCESS)
if (state && state !== PlayServicesState.SUCCESS) {
CastContext.showPlayServicesErrorDialog(state);
else {
} else {
// Get a new URL with the Chromecast device profile:
try {
const data = await getStreamUrl({
api,
item,
@@ -205,6 +206,9 @@ export const PlayButton: React.FC<Props> = ({
}
CastContext.showExpandedControls();
});
} catch (e) {
console.log(e);
}
}
});
}

View File

@@ -36,6 +36,7 @@ export const getStreamUrl = async ({
mediaSource: MediaSourceInfo | undefined;
} | null> => {
if (!api || !userId || !item?.Id) {
console.warn("Missing required parameters for getStreamUrl");
return null;
}
@@ -120,9 +121,7 @@ export const getStreamUrl = async ({
sessionId: sessionId,
mediaSource,
};
}
if (mediaSource?.SupportsDirectPlay) {
} else {
const searchParams = new URLSearchParams({
playSessionId: sessionData?.PlaySessionId || "",
mediaSourceId: mediaSource?.Id || "",
@@ -149,39 +148,4 @@ export const getStreamUrl = async ({
};
}
}
if (item.MediaType === "Audio") {
if (mediaSource?.TranscodingUrl) {
return {
url: `${api.basePath}${mediaSource.TranscodingUrl}`,
sessionId,
mediaSource,
};
}
const searchParams = new URLSearchParams({
UserId: userId,
DeviceId: api.deviceInfo.id,
MaxStreamingBitrate: "140000000",
Container:
"opus,webm|opus,mp3,aac,m4a|aac,m4b|aac,flac,webma,webm|webma,wav,ogg",
TranscodingContainer: "mp4",
TranscodingProtocol: "hls",
AudioCodec: "aac",
api_key: api.accessToken,
PlaySessionId: sessionData?.PlaySessionId || "",
StartTimeTicks: "0",
EnableRedirection: "true",
EnableRemoteMedia: "false",
});
return {
url: `${
api.basePath
}/Audio/${itemId}/universal?${searchParams.toString()}`,
sessionId,
mediaSource,
};
}
throw new Error("Unsupported media type");
};

View File

@@ -15,6 +15,7 @@ export const chromecastProfile: DeviceProfile = {
Codec: "aac,mp3,flac,opus,vorbis",
},
],
ContainerProfiles: [],
DirectPlayProfiles: [
{
Container: "mp4",