I have a decent amount of video footage that I’d like to share with friends and family. My first thought was Youtube, but this is all home videos that I really don’t want to share publicly.

A large portion of my video footage is 4k/60, so I’m ideally looking for a solution where I can send somebody a link, and it gives a “similar to Youtube” experience when they click on the link. And by “similar to Youtube,” I mean that the player automatically adjusts the video bitrate and resolution based on their internet speed. Trying to explain to extended family how to lower the bitrate if the video starts buffering isn’t really an option. It needs to “just work” as soon as the link is clicked; some of the individuals I’d like to share video with are very much not technically inclined.

I’d like to host it on my homelab, but my internet connection only has a 4Mbit upload, which is orders of magnitude lower than my video bitrate, so I’m assuming I would need to either use a 3rd-party video hosting service or set up a VPS with my hosting software of choice.

Any suggestions? I prefer open-source self-hosted software, but I’m willing to pay for convenience.

  • vividspecter@lemm.ee
    link
    fedilink
    English
    arrow-up
    14
    arrow-down
    1
    ·
    edit-2
    9 months ago

    Maybe Jellyfin, where I believe you can force a low bitrate for every remote client. It wouldn’t be “adjust to internet speed” but you could minimise buffering that way.

    • ferret@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      4
      ·
      9 months ago

      Note that for jellyfin (or any software) to reduce the bitrate it will have to transcode the video

      • vividspecter@lemm.ee
        link
        fedilink
        English
        arrow-up
        2
        ·
        9 months ago

        Of course. Youtube and the like “pre-transcode” it so that would be one way for Jellyfin to better solve it, at the cost of a significant amount of disk space.

        • ferret@sh.itjust.works
          link
          fedilink
          English
          arrow-up
          3
          ·
          9 months ago

          You can get an intel arc a310 for ~$90 and it has absolutely insane transcode performance, so depending on how large your library is it might even end up cheaper than buying more storage to just live-transcode everything.

          • MangoPenguin@lemmy.blahaj.zone
            link
            fedilink
            English
            arrow-up
            2
            ·
            9 months ago

            Or if you have a 7th gen or newer Intel CPU with integrated graphics, those work great too. Support for 10 bit does require a later model CPU though.

          • vividspecter@lemm.ee
            link
            fedilink
            English
            arrow-up
            1
            ·
            edit-2
            9 months ago

            I suspect the delay would still be longer than a Youtube like implementation which may need to switch transcodes multiple times, but that’s probably unrealistic at this point anyway.

            Transcoding everything to AV1 could be a solution too, since high resolutions can look quite good at low bitrates, so you could limit it to 5mbps or 10mbps for any resolution and be done with it. But I’m not sure Jellyfin supports that, and at least from the UI it doesn’t give you particularly fine grained control over resolution/bitrates. Perhaps having a secondary library of just AV1 transcodes that you handle manually (perhaps even using a software encoder) could be an option for some.

            The client side is also an issue, with not that many devices supporting hardware decoding (although I’ve found it’s fast enough in software with most modern smartphones at least).

            • KillingTimeItself@lemmy.dbzer0.com
              link
              fedilink
              English
              arrow-up
              1
              ·
              9 months ago

              if you’re switching between formats yeah it’s going to need to start over on the transcoding. If you don’t it’s actually better because it just caches it on disk. From that point it’s basically native.

              Jellyfin does support limiting external network speeds, and individual client speeds, so if you setup your transcoding correctly, and the clients support those codecs, it’ll work.

    • corroded@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      9 months ago

      I’m a big fan of Jellyfin. I run it at home with a dedicated Nvidia A2000 for hardware transcoding. It’s able to transcode multiple 4k streams with tonemapping faster than they can play.

      As much as I’d love to use Jellyfin, there are two major issues: My internet connection is so slow, that I’d be lucky to stream 720p at a low bitrate. I’d spend the money on a faster connection, but I live in an area that doesn’t even get cell phone service. My options are DSL and Starlink, and I have both; the DSL is just slow, and Starlink uplink speed isn’t much better, plus I have plenty of obstructions that make it somewhat unreliable. The second problem is that Jellyfin has too steep of a learning curve. Telling my relatives “oh, if it starts buffering, just lower the bitrate” isn’t an option. Not to mention, I’d have to run it on a VPS, and hosting a VPS with the resources required for this is way too expensive for me.

      • redcalcium@lemmy.institute
        link
        fedilink
        English
        arrow-up
        1
        ·
        edit-2
        9 months ago

        and hosting a VPS with the resources required for this is way too expensive for me.

        If you’re ok with using VPS from bottom-tier providers, you can get them for 10x cheaper than the usual cloud providers (or more during holiday sales) on lowendtalk.com.