fix: chromecast

This commit is contained in:
Fredrik Burmester
2025-02-23 14:35:00 +01:00
parent daf7f35196
commit 8e0e35afe3
8 changed files with 185 additions and 63 deletions

View File

@@ -145,6 +145,7 @@ export type Settings = {
safeAreaInControlsEnabled: boolean;
jellyseerrServerUrl?: string;
hiddenLibraries?: string[];
enableH265ForChromecast: boolean;
};
export interface Lockable<T> {
@@ -198,6 +199,7 @@ const defaultValues: Settings = {
safeAreaInControlsEnabled: true,
jellyseerrServerUrl: undefined,
hiddenLibraries: [],
enableH265ForChromecast: false,
};
const loadSettings = (): Partial<Settings> => {

View File

@@ -6,6 +6,7 @@ import {
PlaybackInfoResponse,
} from "@jellyfin/sdk/lib/generated-client/models";
import { getMediaInfoApi } from "@jellyfin/sdk/lib/utils/api";
import { Alert } from "react-native";
export const getStreamUrl = async ({
api,
@@ -80,7 +81,6 @@ export const getStreamUrl = async ({
const res2 = await getMediaInfoApi(api).getPlaybackInfo(
{
userId,
itemId: item.Id!,
},
{
@@ -148,4 +148,8 @@ export const getStreamUrl = async ({
};
}
}
Alert.alert("Error", "Could not play this item");
return null;
};

View File

@@ -1,27 +1,16 @@
import { DeviceProfile } from "@jellyfin/sdk/lib/generated-client/models";
export const chromecastProfile: DeviceProfile = {
export const chromecast: DeviceProfile = {
Name: "Chromecast Video Profile",
MaxStreamingBitrate: 8000000, // 8 Mbps
MaxStaticBitrate: 8000000, // 8 Mbps
MusicStreamingTranscodingBitrate: 384000, // 384 kbps
CodecProfiles: [
{
Type: "Video",
Codec: "h264",
},
{
Type: "Audio",
Codec: "aac,mp3,flac,opus,vorbis",
},
],
ContainerProfiles: [],
DirectPlayProfiles: [
{
Container: "mp4",
Type: "Video",
VideoCodec: "h264",
AudioCodec: "aac,mp3,opus,vorbis",
AudioCodec: "aac,mp3",
},
{
Container: "mp3",
@@ -31,23 +20,15 @@ export const chromecastProfile: DeviceProfile = {
Container: "aac",
Type: "Audio",
},
{
Container: "flac",
Type: "Audio",
},
{
Container: "wav",
Type: "Audio",
},
],
TranscodingProfiles: [
{
Container: "ts",
Type: "Video",
VideoCodec: "h264",
AudioCodec: "aac,mp3",
Protocol: "hls",
VideoCodec: "h264",
Context: "Streaming",
Protocol: "hls",
MaxAudioChannels: "2",
MinSegments: 2,
BreakOnNonKeyFrames: true,
@@ -56,10 +37,12 @@ export const chromecastProfile: DeviceProfile = {
Container: "mp4",
Type: "Video",
VideoCodec: "h264",
AudioCodec: "aac",
AudioCodec: "aac,mp3",
Protocol: "http",
Context: "Streaming",
MaxAudioChannels: "2",
MinSegments: 2,
BreakOnNonKeyFrames: true,
},
{
Container: "mp3",
@@ -78,6 +61,17 @@ export const chromecastProfile: DeviceProfile = {
MaxAudioChannels: "2",
},
],
ContainerProfiles: [],
CodecProfiles: [
{
Type: "Video",
Codec: "h264",
},
{
Type: "Audio",
Codec: "aac,mp3",
},
],
SubtitleProfiles: [
{
Format: "vtt",

View File

@@ -0,0 +1,91 @@
import { DeviceProfile } from "@jellyfin/sdk/lib/generated-client/models";
export const chromecasth265: DeviceProfile = {
Name: "Chromecast Video Profile",
MaxStreamingBitrate: 8000000, // 8 Mbps
MaxStaticBitrate: 8000000, // 8 Mbps
MusicStreamingTranscodingBitrate: 384000, // 384 kbps
CodecProfiles: [
{
Type: "Video",
Codec: "hevc,h264",
},
{
Type: "Audio",
Codec: "aac,mp3,flac,opus,vorbis",
},
],
ContainerProfiles: [],
DirectPlayProfiles: [
{
Container: "mp4",
Type: "Video",
VideoCodec: "hevc,h264",
AudioCodec: "aac,mp3,opus,vorbis",
},
{
Container: "mp3",
Type: "Audio",
},
{
Container: "aac",
Type: "Audio",
},
{
Container: "flac",
Type: "Audio",
},
{
Container: "wav",
Type: "Audio",
},
],
TranscodingProfiles: [
{
Container: "ts",
Type: "Video",
VideoCodec: "hevc,h264",
AudioCodec: "aac,mp3",
Protocol: "hls",
Context: "Streaming",
MaxAudioChannels: "2",
MinSegments: 2,
BreakOnNonKeyFrames: true,
},
{
Container: "mp4",
Type: "Video",
VideoCodec: "h264",
AudioCodec: "aac",
Protocol: "http",
Context: "Streaming",
MaxAudioChannels: "2",
},
{
Container: "mp3",
Type: "Audio",
AudioCodec: "mp3",
Protocol: "http",
Context: "Streaming",
MaxAudioChannels: "2",
},
{
Container: "aac",
Type: "Audio",
AudioCodec: "aac",
Protocol: "http",
Context: "Streaming",
MaxAudioChannels: "2",
},
],
SubtitleProfiles: [
{
Format: "vtt",
Method: "Encode",
},
{
Format: "vtt",
Method: "Encode",
},
],
};