Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Jellyfin for Android TV uses H264/AVC decoder max resolution for every codec #4466

Open
3 tasks done
ferrarimarco opened this issue Feb 18, 2025 · 8 comments · May be fixed by #4470
Open
3 tasks done

Jellyfin for Android TV uses H264/AVC decoder max resolution for every codec #4466

ferrarimarco opened this issue Feb 18, 2025 · 8 comments · May be fixed by #4470
Labels
bug Something isn't working playback Issue related to media playback

Comments

@ferrarimarco
Copy link

ferrarimarco commented Feb 18, 2025

This issue respects the following points:

  • This issue is not already reported on GitHub (I've searched it).
  • I agree to follow Jellyfin's Code of Conduct.
  • This report addresses only a single issue; If you encounter multiple issues, kindly create separate reports for each one.

Describe the bug

Hi, I'm experiencing a media playback issue with Jellyfin.

I'm using the latest Android TV client (0.18.4) and Jellyfin server (10.10.6).

On an Android TV, Jellyfin always transcodes media, reporting the following transcoding reason: the video resolution is not supported.

On other Android TVs and Android clients, the very same server and media files play without any transcoding.

What could be the reason for this? Thanks.

Media info of the file

Video
Title: 4K - HEVC - HDR
Codec: HEVC
AVC: No
Profile: Main 10
Level: 150
Resolution: 3840x1600
Aspect ratio: 2.40:1
Anamorphic: No
Interlaced: No
Framerate: 23.976025
Bitrate: 4217 kbps
Bit depth: 10 bit
Video range: HDR
Video range type: HDR10
Color space: bt2020nc
Color transfer: smpte2084
Color primaries: bt2020
Pixel format: yuv420p10le
Ref frames: 1

Client logs

N/A found no crash logs, but I dumped the supported codec information over ADB:

Media type 'video/hevc':
  Decoder "redacted.video.hevc.decoder" supports
    aliases: []
    attributes: 0xa: [
      encoder: 0,
      vendor: 1,
      software-only: 0,
      hw-accelerated: 1 ]
    owner: "codec2::default"
    rank: 128
    profile/levels: [
          1/131072 (Main/High 5.1),
          2/131072 (Main10/High 5.1),
       4096/131072 (Main10HDR10/High 5.1) ]
    colors: [
      0x7f000789 (Surface),
      0x7f420888 (YUV420Flexible),
      0x13 (YUV420Planar),
      0x15 (YUV420SemiPlanar),
      0x14 (YUV420PackedPlanar),
      0x27 (YUV420PackedSemiPlanar) ]
    details: AMessage(what = 0x00000000) = {
        string bitrate-range = "1-80000000"
        int32_t feature-adaptive-playback = 0
        int32_t feature-tunneled-playback = 0
        string max-concurrent-instances = "6"
        string measured-frame-rate-1280x720-range = "380-560"
        string measured-frame-rate-1920x1080-range = "240-320"
        string measured-frame-rate-352x288-range = "440-620"
        string measured-frame-rate-3840x2160-range = "60-60"
        string measured-frame-rate-640x360-range = "420-600"
        string measured-frame-rate-720x480-range = "400-560"
        string performance-point-1920x1080-range = "120-120"
        string performance-point-3840x2160-range = "60-60"
        string size-range = "2x2-4096x2176"
      }

FFmpeg logs

{
  "Protocol": 0,
  "Id": "6dbadd4711e929124a5a4a4af85a6a2b",
  "Path": "/media/redacted.mkv",
  "EncoderPath": null,
  "EncoderProtocol": null,
  "Type": 0,
  "Container": "mkv",
  "Size": 4232998020,
  "Name": "redacted",
  "IsRemote": false,
  "ETag": "0dcc011bcd90a2be6d4dbbcf94c39c81",
  "RunTimeTicks": 80299860000,
  "ReadAtNativeFramerate": false,
  "IgnoreDts": false,
  "IgnoreIndex": false,
  "GenPtsInput": false,
  "SupportsTranscoding": true,
  "SupportsDirectStream": true,
  "SupportsDirectPlay": true,
  "IsInfiniteStream": false,
  "UseMostCompatibleTranscodingProfile": false,
  "RequiresOpening": false,
  "OpenToken": null,
  "RequiresClosing": false,
  "LiveStreamId": null,
  "BufferMs": null,
  "RequiresLooping": false,
  "SupportsProbing": true,
  "VideoType": 0,
  "IsoType": null,
  "Video3DFormat": null,
  "MediaStreams": [
    {
      "Codec": "hevc",
      "CodecTag": null,
      "Language": null,
      "ColorRange": null,
      "ColorSpace": "bt2020nc",
      "ColorTransfer": "smpte2084",
      "ColorPrimaries": "bt2020",
      "DvVersionMajor": null,
      "DvVersionMinor": null,
      "DvProfile": null,
      "DvLevel": null,
      "RpuPresentFlag": null,
      "ElPresentFlag": null,
      "BlPresentFlag": null,
      "DvBlSignalCompatibilityId": null,
      "Rotation": null,
      "Comment": null,
      "TimeBase": "1/1000",
      "CodecTimeBase": null,
      "Title": "Sp33dy94",
      "VideoRange": 2,
      "VideoRangeType": 2,
      "VideoDoViTitle": null,
      "AudioSpatialFormat": 0,
      "LocalizedUndefined": null,
      "LocalizedDefault": null,
      "LocalizedForced": null,
      "LocalizedExternal": null,
      "LocalizedHearingImpaired": null,
      "DisplayTitle": "4K - HEVC - HDR",
      "NalLengthSize": null,
      "IsInterlaced": false,
      "IsAVC": false,
      "ChannelLayout": null,
      "BitRate": 4217190,
      "BitDepth": 10,
      "RefFrames": 1,
      "PacketLength": null,
      "Channels": null,
      "SampleRate": null,
      "IsDefault": true,
      "IsForced": false,
      "IsHearingImpaired": false,
      "Height": 1600,
      "Width": 3840,
      "AverageFrameRate": 23.976025,
      "RealFrameRate": 23.976025,
      "ReferenceFrameRate": 23.976025,
      "Profile": "Main 10",
      "Type": 1,
      "AspectRatio": "2.40:1",
      "Index": 0,
      "Score": null,
      "IsExternal": false,
      "DeliveryMethod": null,
      "DeliveryUrl": null,
      "IsExternalUrl": null,
      "IsTextSubtitleStream": false,
      "SupportsExternalStream": false,
      "Path": null,
      "PixelFormat": "yuv420p10le",
      "Level": 150,
      "IsAnamorphic": false
    },
    {
      "Codec": "ac3",
      "CodecTag": null,
      "Language": "eng",
      "ColorRange": null,
      "ColorSpace": null,
      "ColorTransfer": null,
      "ColorPrimaries": null,
      "DvVersionMajor": null,
      "DvVersionMinor": null,
      "DvProfile": null,
      "DvLevel": null,
      "RpuPresentFlag": null,
      "ElPresentFlag": null,
      "BlPresentFlag": null,
      "DvBlSignalCompatibilityId": null,
      "Rotation": null,
      "Comment": null,
      "TimeBase": "1/1000",
      "CodecTimeBase": null,
      "Title": "AC3 5.1 ENG",
      "VideoRange": 0,
      "VideoRangeType": 0,
      "VideoDoViTitle": null,
      "AudioSpatialFormat": 0,
      "LocalizedUndefined": null,
      "LocalizedDefault": "Default",
      "LocalizedForced": null,
      "LocalizedExternal": "External",
      "LocalizedHearingImpaired": null,
      "DisplayTitle": "AC3 5.1 ENG",
      "NalLengthSize": null,
      "IsInterlaced": false,
      "IsAVC": false,
      "ChannelLayout": "5.1",
      "BitRate": 448000,
      "BitDepth": null,
      "RefFrames": null,
      "PacketLength": null,
      "Channels": 6,
      "SampleRate": 48000,
      "IsDefault": false,
      "IsForced": false,
      "IsHearingImpaired": false,
      "Height": null,
      "Width": null,
      "AverageFrameRate": null,
      "RealFrameRate": null,
      "ReferenceFrameRate": null,
      "Profile": null,
      "Type": 0,
      "AspectRatio": null,
      "Index": 2,
      "Score": null,
      "IsExternal": false,
      "DeliveryMethod": null,
      "DeliveryUrl": null,
      "IsExternalUrl": null,
      "IsTextSubtitleStream": false,
      "SupportsExternalStream": false,
      "Path": null,
      "PixelFormat": null,
      "Level": 0,
      "IsAnamorphic": null
    },
  ],
  "MediaAttachments": [],
  "Formats": [],
  "Bitrate": 5113190,
  "FallbackMaxStreamingBitrate": null,
  "Timestamp": null,
  "RequiredHttpHeaders": {},
  "TranscodingUrl": null,
  "TranscodingSubProtocol": 0,
  "TranscodingContainer": null,
  "AnalyzeDurationMs": null,
  "DefaultAudioStreamIndex": null,
  "DefaultSubtitleStreamIndex": null,
  "HasSegments": false
}

/usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -probesize 1G -f matroska -init_hw_device vaapi=va:/dev/dri/renderD128,driver=iHD -init_hw_device qsv=qs@va -init_hw_device opencl=ocl@va -filter_hw_device qs -hwaccel vaapi -hwaccel_output_format vaapi -noautorotate -i file: "/media/redacted.mkv" -noautoscale -map_metadata -1 -map_chapters -1 -threads 0 -map 0: 0 -map 0: 1 -map -0:s -codec:v: 0 hevc_qsv -tag:v: 0 hvc1 -preset veryfast -b:v 4217190 -maxrate 4217190 -bufsize 8434380 -profile:v: 0 main -level 50 -g:v: 0 72 -keyint_min:v: 0 72 -vf "setparams=color_primaries=bt2020:color_trc=smpte2084:colorspace=bt2020nc,scale_vaapi=w=2048:h=852:extra_hw_frames=24,procamp_vaapi=b=16,tonemap_vaapi=format=nv12:p=bt709:t=bt709:m=bt709:extra_hw_frames=32,hwmap=derive_device=qsv,format=qsv" -codec:a: 0 copy -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts -start_number 0 -hls_segment_filename "/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d6%d.ts" -hls_playlist_type vod -hls_list_size 0 -y "/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d6.m3u8"


ffmpeg version 7.0.2-Jellyfin Copyright (c) 2000-2024 the FFmpeg developers
  built with gcc 12 (Debian 12.2.0-14)
  configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto=auto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-opencl --enable-libdrm --enable-libxml2 --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libharfbuzz --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libsvtav1 --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-vaapi --enable-amf --enable-libvpl --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
  libavutil      59.  8.100 / 59.  8.100
  libavcodec     61.  3.100 / 61.  3.100
  libavformat    61.  1.100 / 61.  1.100
  libavdevice    61.  1.100 / 61.  1.100
  libavfilter    10.  1.100 / 10.  1.100
  libswscale      8.  1.100 /  8.  1.100
  libswresample   5.  1.100 /  5.  1.100
  libpostproc    58.  1.100 / 58.  1.100
libva info: VA-API version 1.22.0
libva info: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
libva info: VA-API version 1.22.0
libva info: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
Input #0, matroska,webm, from 'file:/media/redacted.mkv':
  Metadata:
    title           : redacted
    creation_time   : 2023-09-13T08: 16: 04.000000Z
    ENCODER         : Lavf59.27.100
  Duration: 02: 13: 49.99, start: 0.000000, bitrate: 4217 kb/s
  Chapters:
    Chapter #0: 0: start 0.000000, end 435.310000
      Metadata:
        title           : Chapter 01
    Chapter #0: 1: start 435.310000, end 1299.507000
      Metadata:
        title           : Chapter 02
    Chapter #0: 2: start 1299.507000, end 1976.850000
      Metadata:
        title           : Chapter 03
    Chapter #0: 3: start 1976.850000, end 2501.124000
      Metadata:
        title           : Chapter 04
    Chapter #0: 4: start 2501.124000, end 3026.190000
      Metadata:
        title           : Chapter 05
    Chapter #0: 5: start 3026.190000, end 3501.456000
      Metadata:
        title           : Chapter 06
    Chapter #0: 6: start 3501.456000, end 4322.985000
      Metadata:
        title           : Chapter 07
  Stream #0: 0: Video: hevc (Main 10), yuv420p10le(tv, bt2020nc/bt2020/smpte2084),
3840x1600 [SAR 1: 1 DAR 12: 5
],
23.98 fps,
23.98 tbr,
1k tbn (default)
      Metadata:
        title           : Sp33dy94
        BPS             : 3264714
        DURATION        : 02: 13: 49.981000000
        NUMBER_OF_FRAMES: 192527
        NUMBER_OF_BYTES : 3276949734
        _STATISTICS_WRITING_APP: mkvmerge v78.0 ('Running') 64-bit
        _STATISTICS_WRITING_DATE_UTC: 2023-09-13 08: 16: 04
        _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      Side data:
        Content Light Level Metadata, MaxCLL=3241, MaxFALL=902
        Mastering Display Metadata, has_primaries: 1 has_luminance: 1 r(0.6800,
0.3200) g(0.2650,
0.6900) b(0.1500 0.0600) wp(0.3127,
0.3290) min_luminance=0.005000, max_luminance=4000.000000
  Stream #0: 1(ita): Audio: ac3,
48000 Hz,
5.1(side), fltp,
448 kb/s (default)
      Metadata:
        title           : AC3 5.1 ENG
        BPS             : 448000
        DURATION        : 02: 13: 49.952000000
        NUMBER_OF_FRAMES: 250936
        NUMBER_OF_BYTES : 449677312
        _STATISTICS_WRITING_APP: mkvmerge v78.0 ('Running') 64-bit
        _STATISTICS_WRITING_DATE_UTC: 2023-09-13 08: 16: 04
        _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0: 2(eng): Audio: ac3,
Stream mapping:
  Stream #0: 0 -> #0: 0 (hevc (native) -> hevc (hevc_qsv))
  Stream #0: 1 -> #0: 1 (copy)
Press [q
] to stop,
[?
] for help
Output #0, hls, to '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d6.m3u8':
  Metadata:
    encoder         : Lavf61.1.100
  Stream #0: 0: Video: hevc (hvc1 / 0x31637668), qsv(tv, bt709, progressive),
2048x852 [SAR 639: 640 DAR 12: 5
], q=2-31,
4217 kb/s,
23.98 fps,
90k tbn (default)
      Metadata:
        encoder         : Lavc61.3.100 hevc_qsv
      Side data:
        cpb: bitrate max/min/avg: 4217190/0/4217190 buffer size: 8434380 vbv_delay: N/A
        Content Light Level Metadata, MaxCLL=3241, MaxFALL=902
        Mastering Display Metadata, has_primaries: 1 has_luminance: 1 r(0.6800,
0.3200) g(0.2650,
0.6900) b(0.1500 0.0600) wp(0.3127,
0.3290) min_luminance=0.005000, max_luminance=4000.000000
  Stream #0: 1: Audio: ac3,
48000 Hz,
5.1(side), fltp,
448 kb/s (default)
frame=   23 fps=0.0 q=-0.0 size=N/A time=00: 00: 00.00 bitrate=N/A speed=   0x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d60.ts' for writing
frame=   76 fps= 76 q=-0.0 size=N/A time=00: 00: 02.21 bitrate=N/A speed=2.21x    
frame=  117 fps= 78 q=-0.0 size=N/A time=00: 00: 03.92 bitrate=N/A speed=2.61x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d61.ts' for writing
frame=  155 fps= 77 q=-0.0 size=N/A time=00: 00: 05.50 bitrate=N/A speed=2.75x    
frame=  195 fps= 78 q=-0.0 size=N/A time=00: 00: 07.17 bitrate=N/A speed=2.87x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d62.ts' for writing
frame=  233 fps= 78 q=-0.0 size=N/A time=00: 00: 08.75 bitrate=N/A speed=2.92x    
frame=  271 fps= 77 q=-0.0 size=N/A time=00: 00: 10.34 bitrate=N/A speed=2.95x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d63.ts' for writing
frame=  310 fps= 77 q=-0.0 size=N/A time=00: 00: 11.97 bitrate=N/A speed=2.99x    
frame=  352 fps= 78 q=-0.0 size=N/A time=00: 00: 13.72 bitrate=N/A speed=3.05x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d64.ts' for writing
frame=  390 fps= 78 q=-0.0 size=N/A time=00: 00: 15.30 bitrate=N/A speed=3.06x    
frame=  425 fps= 77 q=-0.0 size=N/A time=00: 00: 16.76 bitrate=N/A speed=3.05x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d65.ts' for writing
frame=  460 fps= 77 q=-0.0 size=N/A time=00: 00: 18.22 bitrate=N/A speed=3.04x    
frame=  501 fps= 77 q=-0.0 size=N/A time=00: 00: 19.93 bitrate=N/A speed=3.07x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d66.ts' for writing
frame=  538 fps= 77 q=-0.0 size=N/A time=00: 00: 21.47 bitrate=N/A speed=3.07x    
frame=  574 fps= 77 q=-0.0 size=N/A time=00: 00: 22.98 bitrate=N/A speed=3.06x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d67.ts' for writing
frame=  611 fps= 76 q=-0.0 size=N/A time=00: 00: 24.52 bitrate=N/A speed=3.06x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d68.ts' for writing
frame=  649 fps= 76 q=-0.0 size=N/A time=00: 00: 26.10 bitrate=N/A speed=3.07x    
frame=  689 fps= 77 q=-0.0 size=N/A time=00: 00: 27.77 bitrate=N/A speed=3.09x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d69.ts' for writing
frame=  729 fps= 77 q=-0.0 size=N/A time=00: 00: 29.44 bitrate=N/A speed= 3.1x    
frame=  772 fps= 77 q=-0.0 size=N/A time=00: 00: 31.23 bitrate=N/A speed=3.12x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d610.ts' for writing
frame=  812 fps= 77 q=-0.0 size=N/A time=00: 00: 32.90 bitrate=N/A speed=3.13x    
frame=  852 fps= 77 q=-0.0 size=N/A time=00: 00: 34.57 bitrate=N/A speed=3.14x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d611.ts' for writing
frame=  915 fps= 80 q=-0.0 size=N/A time=00: 00: 37.20 bitrate=N/A speed=3.23x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d612.ts' for writing
frame=  962 fps= 80 q=-0.0 size=N/A time=00: 00: 39.16 bitrate=N/A speed=3.26x    
frame= 1002 fps= 80 q=-0.0 size=N/A time=00: 00: 40.83 bitrate=N/A speed=3.27x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d613.ts' for writing
frame= 1042 fps= 80 q=-0.0 size=N/A time=00: 00: 42.50 bitrate=N/A speed=3.27x    
frame= 1079 fps= 80 q=-0.0 size=N/A time=00: 00: 44.04 bitrate=N/A speed=3.26x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d614.ts' for writing
frame= 1115 fps= 80 q=-0.0 size=N/A time=00: 00: 45.54 bitrate=N/A speed=3.25x    
frame= 1151 fps= 79 q=-0.0 size=N/A time=00: 00: 47.04 bitrate=N/A speed=3.24x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d615.ts' for writing
frame= 1187 fps= 79 q=-0.0 size=N/A time=00: 00: 48.54 bitrate=N/A speed=3.24x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d616.ts' for writing
frame= 1233 fps= 80 q=-0.0 size=N/A time=00: 00: 50.46 bitrate=N/A speed=3.25x    
frame= 1273 fps= 80 q=-0.0 size=N/A time=00: 00: 52.13 bitrate=N/A speed=3.26x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d617.ts' for writing
frame= 1312 fps= 79 q=-0.0 size=N/A time=00: 00: 53.76 bitrate=N/A speed=3.26x    
frame= 1351 fps= 79 q=-0.0 size=N/A time=00: 00: 55.38 bitrate=N/A speed=3.26x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d618.ts' for writing
frame= 1391 fps= 79 q=-0.0 size=N/A time=00: 00: 57.05 bitrate=N/A speed=3.26x    
frame= 1424 fps= 79 q=-0.0 size=N/A time=00: 00: 58.43 bitrate=N/A speed=3.25x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d619.ts' for writing
frame= 1461 fps= 79 q=-0.0 size=N/A time=00: 00: 59.97 bitrate=N/A speed=3.24x    
frame= 1497 fps= 79 q=-0.0 size=N/A time=00: 01: 01.47 bitrate=N/A speed=3.23x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d620.ts' for writing
frame= 1531 fps= 78 q=-0.0 size=N/A time=00: 01: 02.89 bitrate=N/A speed=3.22x    
frame= 1565 fps= 78 q=-0.0 size=N/A time=00: 01: 04.31 bitrate=N/A speed=3.21x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d621.ts' for writing
frame= 1601 fps= 78 q=-0.0 size=N/A time=00: 01: 05.81 bitrate=N/A speed=3.21x    
frame= 1644 fps= 78 q=-0.0 size=N/A time=00: 01: 07.60 bitrate=N/A speed=3.22x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d622.ts' for writing
frame= 1682 fps= 78 q=-0.0 size=N/A time=00: 01: 09.19 bitrate=N/A speed=3.22x    
frame= 1718 fps= 78 q=-0.0 size=N/A time=00: 01: 10.69 bitrate=N/A speed=3.21x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d623.ts' for writing
frame= 1753 fps= 78 q=-0.0 size=N/A time=00: 01: 12.15 bitrate=N/A speed=3.21x    
frame= 1787 fps= 78 q=-0.0 size=N/A time=00: 01: 13.57 bitrate=N/A speed= 3.2x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d624.ts' for writing
frame= 1820 fps= 77 q=-0.0 size=N/A time=00: 01: 14.94 bitrate=N/A speed=3.19x    
frame= 1854 fps= 77 q=-0.0 size=N/A time=00: 01: 16.36 bitrate=N/A speed=3.18x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d625.ts' for writing
frame= 1895 fps= 77 q=-0.0 size=N/A time=00: 01: 18.07 bitrate=N/A speed=3.19x    
frame= 1931 fps= 77 q=-0.0 size=N/A time=00: 01: 19.57 bitrate=N/A speed=3.18x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d626.ts' for writing
frame= 1967 fps= 77 q=-0.0 size=N/A time=00: 01: 21.08 bitrate=N/A speed=3.18x    
frame= 2004 fps= 77 q=-0.0 size=N/A time=00: 01: 22.62 bitrate=N/A speed=3.18x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d627.ts' for writing
frame= 2041 fps= 77 q=-0.0 size=N/A time=00: 01: 24.16 bitrate=N/A speed=3.17x    
frame= 2076 fps= 77 q=-0.0 size=N/A time=00: 01: 25.62 bitrate=N/A speed=3.17x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d628.ts' for writing
frame= 2111 fps= 77 q=-0.0 size=N/A time=00: 01: 27.08 bitrate=N/A speed=3.17x    
frame= 2146 fps= 77 q=-0.0 size=N/A time=00: 01: 28.54 bitrate=N/A speed=3.16x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d629.ts' for writing
frame= 2185 fps= 77 q=-0.0 size=N/A time=00: 01: 30.17 bitrate=N/A speed=3.16x    
frame= 2223 fps= 77 q=-0.0 size=N/A time=00: 01: 31.75 bitrate=N/A speed=3.16x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d630.ts' for writing
frame= 2261 fps= 77 q=-0.0 size=N/A time=00: 01: 33.34 bitrate=N/A speed=3.16x    
frame= 2299 fps= 77 q=-0.0 size=N/A time=00: 01: 34.92 bitrate=N/A speed=3.16x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d631.ts' for writing
frame= 2334 fps= 76 q=-0.0 size=N/A time=00: 01: 36.38 bitrate=N/A speed=3.16x    
frame= 2370 fps= 76 q=-0.0 size=N/A time=00: 01: 37.88 bitrate=N/A speed=3.16x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d632.ts' for writing
frame= 2405 fps= 76 q=-0.0 size=N/A time=00: 01: 39.34 bitrate=N/A speed=3.15x    
frame= 2441 fps= 76 q=-0.0 size=N/A time=00: 01: 40.85 bitrate=N/A speed=3.15x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d633.ts' for writing
frame= 2476 fps= 76 q=-0.0 size=N/A time=00: 01: 42.31 bitrate=N/A speed=3.15x    
frame= 2511 fps= 76 q=-0.0 size=N/A time=00: 01: 43.77 bitrate=N/A speed=3.14x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d634.ts' for writing
frame= 2548 fps= 76 q=-0.0 size=N/A time=00: 01: 45.31 bitrate=N/A speed=3.14x    
frame= 2584 fps= 76 q=-0.0 size=N/A time=00: 01: 46.81 bitrate=N/A speed=3.14x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d635.ts' for writing
frame= 2621 fps= 76 q=-0.0 size=N/A time=00: 01: 48.35 bitrate=N/A speed=3.14x    
frame= 2660 fps= 76 q=-0.0 size=N/A time=00: 01: 49.98 bitrate=N/A speed=3.14x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d636.ts' for writing
frame= 2697 fps= 76 q=-0.0 size=N/A time=00: 01: 51.52 bitrate=N/A speed=3.14x    
frame= 2736 fps= 76 q=-0.0 size=N/A time=00: 01: 53.15 bitrate=N/A speed=3.14x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d637.ts' for writing
frame= 2773 fps= 76 q=-0.0 size=N/A time=00: 01: 54.69 bitrate=N/A speed=3.14x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d638.ts' for writing
frame= 2811 fps= 76 q=-0.0 size=N/A time=00: 01: 56.28 bitrate=N/A speed=3.14x    
frame= 2849 fps= 76 q=-0.0 size=N/A time=00: 01: 57.86 bitrate=N/A speed=3.14x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d639.ts' for writing
frame= 2887 fps= 76 q=-0.0 size=N/A time=00: 01: 59.45 bitrate=N/A speed=3.14x    
frame= 2925 fps= 76 q=-0.0 size=N/A time=00: 02: 01.03 bitrate=N/A speed=3.14x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d640.ts' for writing
frame= 2963 fps= 76 q=-0.0 size=N/A time=00: 02: 02.62 bitrate=N/A speed=3.14x    
frame= 2999 fps= 76 q=-0.0 size=N/A time=00: 02: 04.12 bitrate=N/A speed=3.14x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d641.ts' for writing
frame= 3037 fps= 76 q=-0.0 size=N/A time=00: 02: 05.70 bitrate=N/A speed=3.14x    
frame= 3075 fps= 76 q=-0.0 size=N/A time=00: 02: 07.29 bitrate=N/A speed=3.14x    
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d642.ts' for writing
frame= 3113 fps= 76 q=-0.0 size=N/A time=00: 02: 08.87 bitrate=N/A speed=3.14x    

[q
] command received. Exiting.

[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d643.ts' for writing
[hls @ 0x55b47a2cd780
] Opening '/config/transcodes/5fc70a09a45f2776c45c1e1eb7b3f9d644.ts' for writing
[out#0/hls @ 0x55b47a2a7440
] video: 68140KiB audio: 7257KiB subtitle: 0KiB other streams: 0KiB global headers: 0KiB muxing overhead: unknown
frame= 3180 fps= 76 q=-0.0 Lsize=N/A time=00: 02: 11.67 bitrate=N/A dup=3 drop=0 speed=3.15x

Application version

0.18.4

Where did you install the app from?

Google Play Store

Device information

Realtek-based TV

Android version

Android 14

Jellyfin server version

10.10.6

Other sources

No response

@ferrarimarco ferrarimarco added bug Something isn't working playback Issue related to media playback labels Feb 18, 2025
@nielsvanvelzen
Copy link
Member

Currently, the app limits video resolution to the maximum size supported by your device for the h264 codec. It's likely that your device is reporting a maximum resolution of for example 1920x1080, which is then also used for h265 and all other video codecs.

@ferrarimarco

This comment has been minimized.

@ferrarimarco
Copy link
Author

@nielsvanvelzen I have ADB access to the TV, in case it's useful to gather more info. Thanks

@ferrarimarco
Copy link
Author

IDK if this is useful, but I just tried with another media file (h264, 1920x1080 SDR), and there's no transcoding.

@ferrarimarco
Copy link
Author

ferrarimarco commented Feb 18, 2025

I was able to pull the media_codecs.xml using ADB, and this is the HEVC entry:

            <Type name="video/hevc">
                <Limit name="size" min="2x2" max="4096x2176" />
                <Limit name="bitrate" range="1-80000000" />
                <Limit name="concurrent-instances" max="2" />
                <Feature name="adaptive-playback" />
                <Feature name="tunneled-playback" />
                <Feature name="low-latency" />
            </Type>

So this seems to be ok?

@ferrarimarco
Copy link
Author

Currently, the app limits video resolution to the maximum size supported by your device for the h264 codec. It's likely that your device is reporting a maximum resolution of for example 1920x1080, which is then also used for h265 and all other video codecs.

I think you're right.

The AVC entry is like:

            <!-- AVC Video Decoder -->
            <Type name="video/avc">
                <Limit name="size" min="32x32" max="1920x1088" />
                <Limit name="concurrent-instances" max="2" />
                <Feature name="adaptive-playback" />
                <Feature name="tunneled-playback" />
                <Feature name="low-latency" />
            </Type>

What is the rationale behind using MediaFormat.MIMETYPE_VIDEO_AVC to get the max resolution for all cases?

val maxResolution = mediaTest.getMaxResolution(MediaFormat.MIMETYPE_VIDEO_AVC)

Thanks for your support @nielsvanvelzen

@ferrarimarco ferrarimarco changed the title Jellyfin always transcodes because the video resolution is not supported Jellyfin for Android TV uses H264/AVC decoder max resolution for every codec Feb 19, 2025
@ferrarimarco
Copy link
Author

Considering that when DeviceProfileKt.createDeviceProfile gets called there's a MediaSourceInfo object as well, would it possible to make createDeviceProfile codec-speficic?

MediaSourceInfo currentMediaSource = getCurrentMediaSource();
if (!isLiveTv && currentMediaSource != null) {
internalOptions.setMediaSourceId(currentMediaSource.getId());
}
DeviceProfile internalProfile = DeviceProfileKt.createDeviceProfile(
maxBitrate,
!internalOptions.getEnableDirectStream(),
userPreferences.getValue().get(UserPreferences.Companion.getAc3Enabled()),
userPreferences.getValue().get(UserPreferences.Companion.getAudioBehaviour()) == AudioBehavior.DOWNMIX_TO_STEREO
);

@ferrarimarco ferrarimarco linked a pull request Feb 19, 2025 that will close this issue
@ferrarimarco
Copy link
Author

#4470 should take care of this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working playback Issue related to media playback
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants