This is something that has been increasingly prevalent with my server, for the longest time I could torrent, have two people watching and everything’s fine, but lately, especially with specific shows, it will take upwards of a minute for a show to start.

I’ve looked into it and the culprit is ffmpeg most of the time, I assume this has something to do with the specific files not having transcoding “baked in” but I don’t know enough to know if that’s the case. Can anyone help me optimize my pipeline at all?

  • empireOfLove2@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    18
    ·
    edit-2
    10 hours ago

    A. Run a batch transcode with Handbrake and make all your stored files compatible with your end players.
    It sounds like the more recent things you are downloading are in a codec that is not compatible with your playback devices. E.g, older torrents are frequently an H.264 stream in an MP4 container, which practically every device can play now. Many modern releases are being distributed in H.265 or AV1, as they have significant size and quality benefits, but many older devices don’t support them natively. so it is forcing Jellyfin to live transcode to h.264. Find out what older titles play without any buffer or playback lag/high CPU usage and check what codec those files are in. That is what you’ll need to batch encode everything over to.

    B. Sounds like you are still relying on CPU transcoding which is absolute dog. What mini pc specs do you have? If it’s an AMD or Intel CPU/APU then it should have hardware encode/decode included in it’s integrated GPU. When using hardware transcoding the CPU load is generally minimal for 1 to 2 streams. See the Jellyfin docs on hardware acceleration here.

    • StarvingMartist@sh.itjust.worksOP
      link
      fedilink
      English
      arrow-up
      9
      arrow-down
      1
      ·
      9 hours ago

      I’ve tried handbrake before, unfortunately the system DOES NOT have the horsepower to handle it, as in a batch of 30 episodes if I recall would have taken about 3 days

      As for the system itself here’s the spec sheet

      • DaGeek247@fedia.io
        link
        fedilink
        arrow-up
        19
        ·
        9 hours ago

        You should not be having transcode issues with anything less than four concurrent streams on that server. https://www.reddit.com/r/PleX/comments/1ae6683/intel_n100_vs_ryzen_7_1700_1st_gen_an_interesting/

        It’s likely that you have hardware transcoding disabled. Enable it, and these issues should go away. This forum post has good settings in jellyfin for an n100, https://forum.jellyfin.org/t-solved-correct-transcoding-settings-for-the-n100-processor

        You should be able to find instructions for enabling hardware encoding in your bios by searching for it with your specific device model.

        *edit

        Handbrake does a bad job of explaining the difference between software encoding and hardware encoding. Or at least, it felt that way to me when I last used it. You likely were trying to software encode your videos, which, while theoretically makes the end result better quality, definitely won’t be quick on an n100. You’ll want to pick the option that has intel quicksync/qsv in it in order to get the most speed out of your handbrake encodes. https://www.reddit.com/r/handbrake/comments/z2m814/comment/kxu2a8x/

      • surph_ninja@lemmy.world
        link
        fedilink
        English
        arrow-up
        2
        arrow-down
        1
        ·
        9 hours ago

        Do you have another system you can use? Maybe with a video card on it that can help with pre-transcoding files?

        This is what I ended up doing on mine. Was a big hit to my electric bill to pre-transcode the entire library (only for files that needed it), but now everything serves up in a flash. And the script runs as a nightly cron to catch any new stuff.

        If you have to, maybe just dedicate the system you have here to transcode certain problematic content. Other than finding another download in a different format, I’m not sure there’s anything else you can practically do.

  • rumba@lemmy.zip
    link
    fedilink
    English
    arrow-up
    8
    ·
    10 hours ago

    If everything is working correctly, whether or not you transcode is basically whether or not the end device can play the file without changes.

    For example, my old Roku can play a raw 4K File under H264 with no problem. But if I throw an H265 at it, it requires the server to transcode. It also has problems with AAC audio. And my server is so old that just trying to rip the 4k apart entrance to the audio is often too much for it.

    So to start, make sure your client device can play the files directly. If it can’t, you’re going to need to handbrake it before you put it on your server.

  • ragebutt@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    4
    ·
    edit-2
    10 hours ago

    What is the client situation?

    The easiest fix is to find a client that can direct play all of your files and take transcoding out of the equation. Ugoos am6b+ as an example but if you don’t need Dolby vision there are cheaper options that are easier to configure with native jellyfin clients (instead of coreelec/kodi). Or if you need av1. But this needs to be done per user and costs money

    Alternatively what is your hardware? Do you have intel quick sync video? If so do you have hardware transcoding setup? Like if you have Jellyfin setup in a docker are you passing through the igpu to the container? And if you’ve done that have you set up the hardware transcoding in Jellyfin? What gen cpu and what kind of files?

    If you have the transcoding happening on the CPU and not the iGPU (assuming you don’t have a discrete gpu in a mini pc and frankly with quick sync you don’t need one unless your cpu is ancient, save the power usage) transcoding will crawl. But if you have quick sync video it should be fine with <4-5 users

    • StarvingMartist@sh.itjust.worksOP
      link
      fedilink
      English
      arrow-up
      5
      ·
      9 hours ago

      So I did actually find and turn on quick sync, there’s still a bit of a delay on the problem show, but it’s like 30 seconds rather than a minute, weirdly though where it was saying “playing directly” earlier, it’s now giving a subtitle error, it’s fine since I’m not using subtitles but still was something I noticed

      • ragebutt@lemmy.dbzer0.com
        link
        fedilink
        English
        arrow-up
        1
        ·
        5 hours ago

        Subtitles force transcoding a lot of the time depending on playback situation and media. A lot of compatibility issues there - downloaded movies often will have the PGS subs from a bluray, anime can often have ass/ssa, ibx subs, etc plus they all tend to be embedded in the media (and in anime’s case often with extra fonts and attachments).

        all of these (basically anything but external srt) can interrupt direct playback depending on users Jellyfin client. Some have better sub support than others, android vs apple vs some esoteric client like webos all have their own niche weirdness. You need to search what the best option is for each users scenario. Like for my users that have apple devices checking this box in settings>playback allows direct streaming of a lot of content:

        But for “the problem show” what do logs say? How is it encoded? Quick sync can’t transcode everything. The older your processor the less it can do and niche formats it definitely can’t do at all. Like unless you have a real new cpu (13th or 14th gen) it’s not doing av1 or vp9 content and that’s still getting offloaded to cpu for transcoding. And if it’s some ogg vorbis thing or whatever it won’t work. And do logs verify igpu is being utilized for transcoding/mapped correctly? It can be a bit of a pain in the ass (unless they improved the process, it’s been a while since I’ve had to do it)

  • Dr. Wesker@lemmy.sdf.org
    link
    fedilink
    English
    arrow-up
    5
    ·
    10 hours ago

    Jellyfin Dashboard will tell you what’s causing a streaming session to have to be transcoded. I believe it’s the little info “I” circle on the session thumnail. Logs should also tell you. I’d suggest starting there and identifying the cause, in order to then find the proper prescription.

    • StarvingMartist@sh.itjust.worksOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      9 hours ago

      It says direct playing the source file is entirely compatible with this client and is receiving the file without modifications, this is as I look over to the hanging episode

      • DaGeek247@fedia.io
        link
        fedilink
        arrow-up
        3
        ·
        9 hours ago

        If you aren’t transcoding, and the player is taking too long to cache the video before starting, you might be having some sort of storage issue. You would need to try a couple of different things to figure out what, specifically, is taking so long to send the video out.

        The first thing that comes to mind is that your storage is on an SSD, and it is nearly full. An SSD that is nearly full will usually perform much much worse than it would if it had more space to work with. https://pureinfotech.com/why-solid-state-drive-ssd-performance-slows-down/

        The next thing that comes to mind is that your files are stored on the same drive that jellyfin transcodes onto, and it is not using an SSD. If you have jellyfin reading from a single drive, jellyfin encoding to that same drive, and also everything else also running, you might be causing your hard drive to seek a lot in order to get everything up and running. You could test this by changing the jellyfin transcode location to a different storage device.

        I’ve also found that page and video loading times tend to be directly affected by the storage medium’s seek times. If you had jellyfin installed on the same hard drive as your videos, it will be slower than if you had installed jellyfin on a ssd separate from the drive you store your videos on. This one wouldn’t likely result in minute loading times though.

      • frongt@lemmy.zip
        link
        fedilink
        English
        arrow-up
        1
        ·
        9 hours ago

        Check the log then, it’ll tell you the speed. 1x speed is exactly realtime. 0.5x is unable to keep up, and playing at half speed. 2.0x is streaming at double playback speed.

        Do any videos play well? What’s the difference between those and others?

      • bdonvr@thelemmy.club
        link
        fedilink
        English
        arrow-up
        1
        ·
        9 hours ago

        Check your disk access usage maybe? Like if you store things on an external drive with USB2 or something you’re gonna have a bad time with multiple videos/high bitrate stuff because you’re saturating the bandwidth of the connection