• Login
  • Register
  • Login Register
    Login
    Username/Email:
    Password:
    Or login with a social network below
  • Forum
  • Website
  • GitHub
  • Status
  • Translation
  • Features
  • Team
  • Rules
  • Help
  • Feeds
User Links
  • Login
  • Register
  • Login Register
    Login
    Username/Email:
    Password:
    Or login with a social network below

    Useful Links Forum Website GitHub Status Translation Features Team Rules Help Feeds
    Jellyfin Forum Support Troubleshooting SOLVED: Error Identifying and Playing Second Version of Movie

     
    • 0 Vote(s) - 0 Average

    SOLVED: Error Identifying and Playing Second Version of Movie

    Not Identifying and Playing Second Version of Movie
    commodore
    Offline

    Junior Member

    Posts: 4
    Threads: 1
    Joined: 2024 Nov
    Reputation: 0
    Country:United States
    #1
    2024-11-05, 10:00 PM
    I am running into issues with Jellyfin identifying the second version of a movie. And yes, I followed the steps here with what I believe to be the proper naming convention:

    Subfolder:
    Lord of the Rings The Return of the King (2003)

    Movie Versions:
    Lord of the Rings The Return of the King (2003) - Extended Edition.mkv
    Lord of the Rings The Return of the King (2003) - Theatrical Edition.mkv

    The versions both appear to be grouped together, however file data is only loading for the theatrical edition:
       

       

    And when I go to play the extended version, I am brought to the splash screen, but it fails to play.

    Things I have tried so far:
    • Renaming files
    • Reuploading mkv files
    • Scanning library
    • Refreshing metadata
    • Manually identifying the extended edition, but it does not appear to stick after selecting the correct reference
    • Checking various forum/reddit/stack exchange posts and did not see the same issue. The search engines generally pointed me to filenaming issues
    • A clean install of Jellyfin in a new container
    • Playing the file outside of Jellyfin, which worked as expected

    Other relevant info:
    Jellyfin version: 10.10.1
    How accessing: View Firefox on Ubuntu Machine
    Jellyfin config: Running in a ProxMox container with the library stored on a Samba fileshare
    Other movies and tv shows play as expected, just not the extended edition for LOTR

    Outside of ripping the files again in case there was an issue there or with concatenating the two parts of the movie, is there anything else I should be checking?

    Here are the logs of the latest attempt to identify the file:

    Code:
    [2024-11-05 21:25:10.746 +00:00] [INF] Starting "/usr/lib/jellyfin-ffmpeg/ffprobe" with args "-analyzeduration 200M -probesize 1G -i file:\"/mnt/media/movies/Lord of the Rings The Return of the King (2003)/Lord of the Rings The Return of the King (2003) - Extended Edition.mkv\" -threads 0 -v warning -print_format json -show_streams -show_chapters -show_format"
    [2024-11-05 21:25:12.169 +00:00] [ERR] Error in "Probe Provider"
    System.Text.Json.JsonException: The input does not contain any JSON tokens. Expected the input to start with a valid JSON token, when isFinalBlock is true. Path: $ | LineNumber: 0 | BytePositionInLine: 0.
    ---> System.Text.Json.JsonReaderException: The input does not contain any JSON tokens. Expected the input to start with a valid JSON token, when isFinalBlock is true. LineNumber: 0 | BytePositionInLine: 0.
      at System.Text.Json.ThrowHelper.ThrowJsonReaderException(Utf8JsonReader& json, ExceptionResource resource, Byte nextByte, ReadOnlySpan`1 bytes)
      at System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
      --- End of inner exception stack trace ---
      at System.Text.Json.ThrowHelper.ReThrowWithPath(ReadStack& state, JsonReaderException ex)
      at System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
      at System.Text.Json.Serialization.Metadata.JsonTypeInfo`1.ContinueDeserialize(ReadBufferState& bufferState, JsonReaderState& jsonReaderState, ReadStack& readStack)
      at System.Text.Json.Serialization.Metadata.JsonTypeInfo`1.DeserializeAsync(Stream utf8Json, CancellationToken cancellationToken)
      at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, CancellationToken cancellationToken)
      at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, CancellationToken cancellationToken)
      at MediaBrowser.Providers.MediaInfo.FFProbeVideoInfo.ProbeVideo[T](T item, MetadataRefreshOptions options, CancellationToken cancellationToken)
      at MediaBrowser.Providers.Manager.MetadataService`2.RunCustomProvider(ICustomMetadataProvider`1 provider, TItemType item, String logName, MetadataRefreshOptions options, RefreshResult refreshResult, CancellationToken cancellationToken)

    And here are the logs from the last attempt to play the file:

    Code:
    [2024-11-05 21:52:38.969 +00:00] [INF] Starting "/usr/lib/jellyfin-ffmpeg/ffprobe" with args "-analyzeduration 200M -probesize 1G -i file:\"/mnt/media/movies/Lord of the Rings The Return of the King (2003)/Lord of the Rings The Return of the King (2003) - Theatrical Edition.mkv\" -threads 0 -v warning -print_format json -show_streams -show_chapters -show_format"
    [2024-11-05 21:52:39.089 +00:00] [INF] Starting "/usr/lib/jellyfin-ffmpeg/ffprobe" with args "-analyzeduration 200M -probesize 1G -i file:\"/mnt/media/movies/Lord of the Rings The Return of the King (2003)/Lord of the Rings The Return of the King (2003) - Extended Edition.mkv\" -threads 0 -v warning -print_format json -show_streams -show_chapters -show_format"
    [2024-11-05 21:52:40.290 +00:00] [ERR] Error in "Probe Provider"
    System.Text.Json.JsonException: The input does not contain any JSON tokens. Expected the input to start with a valid JSON token, when isFinalBlock is true. Path: $ | LineNumber: 0 | BytePositionInLine: 0.
    ---> System.Text.Json.JsonReaderException: The input does not contain any JSON tokens. Expected the input to start with a valid JSON token, when isFinalBlock is true. LineNumber: 0 | BytePositionInLine: 0.
      at System.Text.Json.ThrowHelper.ThrowJsonReaderException(Utf8JsonReader& json, ExceptionResource resource, Byte nextByte, ReadOnlySpan`1 bytes)
      at System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
      --- End of inner exception stack trace ---
      at System.Text.Json.ThrowHelper.ReThrowWithPath(ReadStack& state, JsonReaderException ex)
      at System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
      at System.Text.Json.Serialization.Metadata.JsonTypeInfo`1.ContinueDeserialize(ReadBufferState& bufferState, JsonReaderState& jsonReaderState, ReadStack& readStack)
      at System.Text.Json.Serialization.Metadata.JsonTypeInfo`1.DeserializeAsync(Stream utf8Json, CancellationToken cancellationToken)
      at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, CancellationToken cancellationToken)
      at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, CancellationToken cancellationToken)
      at MediaBrowser.Providers.MediaInfo.FFProbeVideoInfo.ProbeVideo[T](T item, MetadataRefreshOptions options, CancellationToken cancellationToken)
      at MediaBrowser.Providers.Manager.MetadataService`2.RunCustomProvider(ICustomMetadataProvider`1 provider, TItemType item, String logName, MetadataRefreshOptions options, RefreshResult refreshResult, CancellationToken cancellationToken)
    [2024-11-05 21:52:41.084 +00:00] [INF] User policy for "jellyfin". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
    [2024-11-05 21:52:41.469 +00:00] [INF] Current HLS implementation doesn't support non-keyframe breaks but one is requested, ignoring that request
    [2024-11-05 21:52:41.477 +00:00] [INF] "/usr/lib/jellyfin-ffmpeg/ffmpeg" "-analyzeduration 200M -probesize 1G  -i file:\"/mnt/media/movies/Lord of the Rings The Return of the King (2003)/Lord of the Rings The Return of the King (2003) - Extended Edition.mkv\" -map_metadata -1 -map_chapters -1 -threads 0 -sn  -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type fmp4 -hls_fmp4_init_filename \"6284dca4ab8b04407cf1698fbe2cbbbe-1.mp4\" -start_number 0 -hls_base_url \"hls/6284dca4ab8b04407cf1698fbe2cbbbe/\" -hls_segment_filename \"/var/cache/jellyfin/transcodes/6284dca4ab8b04407cf1698fbe2cbbbe%d.mp4\" -hls_playlist_type event -hls_list_size 0 -y \"/var/cache/jellyfin/transcodes/6284dca4ab8b04407cf1698fbe2cbbbe.m3u8\""
    [2024-11-05 21:52:42.662 +00:00] [ERR] FFmpeg exited with code 137
    [2024-11-05 21:52:42.720 +00:00] [ERR] Error processing request. URL "GET" "/videos/d7e14e28-7fd7-5c7e-ec5e-4f4601c080da/live.m3u8".
    MediaBrowser.Common.FfmpegException: FFmpeg exited with code 137
      at MediaBrowser.MediaEncoding.Transcoding.TranscodeManager.StartFfMpeg(StreamState state, String outputPath, String commandLineArguments, Guid userId, TranscodingJobType transcodingJobType, CancellationTokenSource cancellationTokenSource, String workingDirectory)
      at Jellyfin.Api.Controllers.DynamicHlsController.GetLiveHlsStream(Guid itemId, String container, Nullable`1 static, String params, String tag, String deviceProfileId, String playSessionId, String segmentContainer, Nullable`1 segmentLength, Nullable`1 minSegments, String mediaSourceId, String deviceId, String audioCodec, Nullable`1 enableAutoStreamCopy, Nullable`1 allowVideoStreamCopy, Nullable`1 allowAudioStreamCopy, Nullable`1 breakOnNonKeyFrames, Nullable`1 audioSampleRate, Nullable`1 maxAudioBitDepth, Nullable`1 audioBitRate, Nullable`1 audioChannels, Nullable`1 maxAudioChannels, String profile, String level, Nullable`1 framerate, Nullable`1 maxFramerate, Nullable`1 copyTimestamps, Nullable`1 startTimeTicks, Nullable`1 width, Nullable`1 height, Nullable`1 videoBitRate, Nullable`1 subtitleStreamIndex, Nullable`1 subtitleMethod, Nullable`1 maxRefFrames, Nullable`1 maxVideoBitDepth, Nullable`1 requireAvc, Nullable`1 deInterlace, Nullable`1 requireNonAnamorphic, Nullable`1 transcodingMaxAudioChannels, Nullable`1 cpuCoreLimit, String liveStreamId, Nullable`1 enableMpegtsM2TsMode, String videoCodec, String subtitleCodec, String transcodeReasons, Nullable`1 audioStreamIndex, Nullable`1 videoStreamIndex, Nullable`1 context, Dictionary`2 streamOptions, Nullable`1 maxWidth, Nullable`1 maxHeight, Nullable`1 enableSubtitlesInManifest, Boolean enableAudioVbrEncoding, Boolean alwaysBurnInSubtitleWhenTranscoding)
      at lambda_method932(Closure, Object)
      at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
      at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
      at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
      at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
      at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
      at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
      at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
      at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
      at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
      at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
      at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
      at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
      at Jellyfin.Api.Middleware.ServerStartupMessageMiddleware.Invoke(HttpContext httpContext, IServerApplicationHost serverApplicationHost, ILocalizationManager localizationManager)
      at Jellyfin.Api.Middleware.WebSocketHandlerMiddleware.Invoke(HttpContext httpContext, IWebSocketManager webSocketManager)
      at Jellyfin.Api.Middleware.IPBasedAccessValidationMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager)
      at Jellyfin.Api.Middleware.LanFilteringMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager, IServerConfigurationManager serverConfigurationManager)
      at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
      at Jellyfin.Api.Middleware.QueryStringDecodingMiddleware.Invoke(HttpContext httpContext)
      at Swashbuckle.AspNetCore.ReDoc.ReDocMiddleware.Invoke(HttpContext httpContext)
      at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
      at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
      at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
      at Jellyfin.Api.Middleware.RobotsRedirectionMiddleware.Invoke(HttpContext httpContext)
      at Jellyfin.Api.Middleware.LegacyEmbyRouteRewriteMiddleware.Invoke(HttpContext httpContext)
      at Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.InvokeCore(HttpContext context)
      at Jellyfin.Api.Middleware.ResponseTimeMiddleware.Invoke(HttpContext context, IServerConfigurationManager serverConfigurationManager)
      at Jellyfin.Api.Middleware.ExceptionMiddleware.Invoke(HttpContext context)
    [2024-11-05 21:52:42.845 +00:00] [INF] Starting "/usr/lib/jellyfin-ffmpeg/ffprobe" with args "-analyzeduration 200M -probesize 1G -i file:\"/mnt/media/movies/Lord of the Rings The Return of the King (2003)/Lord of the Rings The Return of the King (2003) - Theatrical Edition.mkv\" -threads 0 -v warning -print_format json -show_streams -show_chapters -show_format"
    [2024-11-05 21:52:42.902 +00:00] [INF] Starting "/usr/lib/jellyfin-ffmpeg/ffprobe" with args "-analyzeduration 200M -probesize 1G -i file:\"/mnt/media/movies/Lord of the Rings The Return of the King (2003)/Lord of the Rings The Return of the King (2003) - Extended Edition.mkv\" -threads 0 -v warning -print_format json -show_streams -show_chapters -show_format"
    [2024-11-05 21:52:45.864 +00:00] [INF] Sending shutdown notifications
    [2024-11-05 21:52:45.875 +00:00] [INF] WS "192.168.1.17" closed
    [2024-11-05 21:52:45.875 +00:00] [INF] WS "192.168.1.17" closed
    [2024-11-05 21:52:45.908 +00:00] [ERR] Error in "Probe Provider"
    System.Text.Json.JsonException: The input does not contain any JSON tokens. Expected the input to start with a valid JSON token, when isFinalBlock is true. Path: $ | LineNumber: 0 | BytePositionInLine: 0.
    ---> System.Text.Json.JsonReaderException: The input does not contain any JSON tokens. Expected the input to start with a valid JSON token, when isFinalBlock is true. LineNumber: 0 | BytePositionInLine: 0.
      at System.Text.Json.ThrowHelper.ThrowJsonReaderException(Utf8JsonReader& json, ExceptionResource resource, Byte nextByte, ReadOnlySpan`1 bytes)
      at System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
      --- End of inner exception stack trace ---
      at System.Text.Json.ThrowHelper.ReThrowWithPath(ReadStack& state, JsonReaderException ex)
      at System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
      at System.Text.Json.Serialization.Metadata.JsonTypeInfo`1.ContinueDeserialize(ReadBufferState& bufferState, JsonReaderState& jsonReaderState, ReadStack& readStack)
      at System.Text.Json.Serialization.Metadata.JsonTypeInfo`1.DeserializeAsync(Stream utf8Json, CancellationToken cancellationToken)
      at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, CancellationToken cancellationToken)
      at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, CancellationToken cancellationToken)
      at MediaBrowser.Providers.MediaInfo.FFProbeVideoInfo.ProbeVideo[T](T item, MetadataRefreshOptions options, CancellationToken cancellationToken)
      at MediaBrowser.Providers.Manager.MetadataService`2.RunCustomProvider(ICustomMetadataProvider`1 provider, TItemType item, String logName, MetadataRefreshOptions options, RefreshResult refreshResult, CancellationToken cancellationToken)
    Go to solution
    TheDreadPirate
    Offline

    Community Moderator

    Posts: 15,374
    Threads: 10
    Joined: 2023 Jun
    Reputation: 460
    Country:United States
    #2
    2024-11-05, 10:52 PM
    Can you share your full jellyfin log via pastebin? If you see any ffmpeg logs, share one of those as well.
    Jellyfin 10.10.7 (Docker)
    Ubuntu 24.04.2 LTS w/HWE
    Intel i3 12100
    Intel Arc A380
    OS drive - SK Hynix P41 1TB
    Storage
        4x WD Red Pro 6TB CMR in RAIDZ1
    [Image: GitHub%20Sponsors-grey?logo=github]
    commodore
    Offline

    Junior Member

    Posts: 4
    Threads: 1
    Joined: 2024 Nov
    Reputation: 0
    Country:United States
    #3
    2024-11-05, 11:41 PM (This post was last modified: 2024-11-05, 11:44 PM by commodore. Edited 1 time in total.)
    (2024-11-05, 10:52 PM)TheDreadPirate Wrote: Can you share your full jellyfin log via pastebin?  If you see any ffmpeg logs, share one of those as well.

    Here is the full Jellyfin log: https://pastebin.com/F1jTptMC

    Here is the FFmpeg log for the most recent attempt to play the title: https://pastebin.com/wQPsJHts
    TheDreadPirate
    Offline

    Community Moderator

    Posts: 15,374
    Threads: 10
    Joined: 2023 Jun
    Reputation: 460
    Country:United States
    #4
    2024-11-05, 11:57 PM
    I am pretty certain the problem is with the file itself. How did you concatenate the files? I'm assuming these are the Director's Cut DVD box sets?
    Jellyfin 10.10.7 (Docker)
    Ubuntu 24.04.2 LTS w/HWE
    Intel i3 12100
    Intel Arc A380
    OS drive - SK Hynix P41 1TB
    Storage
        4x WD Red Pro 6TB CMR in RAIDZ1
    [Image: GitHub%20Sponsors-grey?logo=github]
    commodore
    Offline

    Junior Member

    Posts: 4
    Threads: 1
    Joined: 2024 Nov
    Reputation: 0
    Country:United States
    #5
    2024-11-06, 12:07 AM
    (2024-11-05, 11:57 PM)TheDreadPirate Wrote: I am pretty certain the problem is with the file itself.  How did you concatenate the files?  I'm assuming these are the Director's Cut DVD box sets?

    I concatenated using mkvmerge/mkvtoolnix and correct, they are from a director's cut box set.
    TheDreadPirate
    Offline

    Community Moderator

    Posts: 15,374
    Threads: 10
    Joined: 2023 Jun
    Reputation: 460
    Country:United States
    #6
    2024-11-06, 12:14 AM
    I'm trying to remember if I used mkvtoolnix or ffmpeg when I merged my LotR director's cut. I'm pretty sure I used ffmpeg because this link is very familiar.

    https://stackoverflow.com/questions/7333...s%20method

    Re-rip and and re-merge. Maybe try the ffmpeg method.
    Jellyfin 10.10.7 (Docker)
    Ubuntu 24.04.2 LTS w/HWE
    Intel i3 12100
    Intel Arc A380
    OS drive - SK Hynix P41 1TB
    Storage
        4x WD Red Pro 6TB CMR in RAIDZ1
    [Image: GitHub%20Sponsors-grey?logo=github]
    commodore
    Offline

    Junior Member

    Posts: 4
    Threads: 1
    Joined: 2024 Nov
    Reputation: 0
    Country:United States
    #7
    2024-11-07, 01:19 AM (This post was last modified: 2024-11-07, 01:24 AM by commodore. Edited 1 time in total.)
    It appears to be identifying the FFmpeg concatenation, which is good. It's odd since it recognizes other concatenations with mkvmerge (including another Lord of the Rings film). That is not important though since I have a solution. Thanks for your help!
    « Next Oldest | Next Newest »

    Users browsing this thread: 1 Guest(s)


    • View a Printable Version
    • Subscribe to this thread
    Forum Jump:

    Home · Team · Help · Contact
    © Designed by D&D - Powered by MyBB
    L


    Jellyfin

    The Free Software Media System

    Linear Mode
    Threaded Mode