This commit is contained in:
Fredrik Burmester
2024-08-06 08:18:17 +02:00
parent 2aa30ab4ca
commit 382e70cf8e
55 changed files with 4135 additions and 397 deletions

View File

@@ -1,4 +1,7 @@
import { DeviceProfile } from "@jellyfin/sdk/lib/generated-client/models";
import {
DeviceProfile,
DlnaProfileType,
} from "@jellyfin/sdk/lib/generated-client/models";
const MediaTypes = {
Audio: "Audio",
@@ -7,85 +10,6 @@ const MediaTypes = {
Book: "Book",
};
export const iPhone15Profile: DeviceProfile = {
Name: "iPhone 15",
Id: "iphone15-001",
MaxStreamingBitrate: 5000000, // 5 Mbps
MaxStaticBitrate: 10000000, // 10 Mbps
MusicStreamingTranscodingBitrate: 320000, // 320 kbps
MaxStaticMusicBitrate: 1411200, // CD Quality at 1,411.2 kbps
DirectPlayProfiles: [
{
Container: "mp4",
VideoCodec: "h264",
AudioCodec: "aac",
},
],
TranscodingProfiles: [
{
Container: "hls",
Type: "Video",
VideoCodec: "h265",
Context: "Streaming",
},
],
ContainerProfiles: [
{
Type: "Video",
Container: "mp4",
},
{
Type: "Video",
Container: "mov",
},
],
CodecProfiles: [
{
Type: "Video",
Codec: "h264",
Conditions: [
{
Condition: "LessThanEqual",
Property: "VideoBitDepth",
Value: "10",
},
],
},
{
Type: "Video",
Codec: "h265",
Conditions: [
{
Condition: "LessThanEqual",
Property: "VideoBitDepth",
Value: "10",
},
],
},
{
Type: "Audio",
Codec: "aac",
Conditions: [
{
Condition: "GreaterThanEqual",
Property: "AudioChannels",
Value: "2",
},
],
},
],
SubtitleProfiles: [
{
Format: "srt",
Method: "External",
},
{
Format: "vtt",
Method: "External",
},
],
};
const BaseProfile = {
Name: "Expo Base Video Profile",
MaxStaticBitrate: 100000000,
@@ -308,3 +232,122 @@ export const iosProfile = {
},
],
};
export const chromecastProfile: DeviceProfile = {
Name: "Chromecast",
Id: "chromecast-001",
MaxStreamingBitrate: 4000000, // 4 Mbps
MaxStaticBitrate: 4000000, // 4 Mbps
MusicStreamingTranscodingBitrate: 384000, // 384 kbps
DirectPlayProfiles: [
{
Container: "mp4,webm",
Type: "Video",
VideoCodec: "h264,vp8,vp9",
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: "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",
},
],
ContainerProfiles: [
{
Type: "Video",
Container: "mp4",
},
{
Type: "Video",
Container: "webm",
},
],
CodecProfiles: [
{
Type: "Video",
Codec: "h264",
Conditions: [
{
Condition: "LessThanEqual",
Property: "VideoBitDepth",
Value: "8",
},
{
Condition: "LessThanEqual",
Property: "VideoLevel",
Value: "41",
},
],
},
{
Type: "Video",
Codec: "vp9",
Conditions: [
{
Condition: "LessThanEqual",
Property: "VideoBitDepth",
Value: "10",
},
],
},
],
SubtitleProfiles: [
{
Format: "vtt",
Method: "Hls",
},
{
Format: "vtt",
Method: "External",
},
],
};