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.
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.
Note that for jellyfin (or any software) to reduce the bitrate it will have to transcode the video
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.
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.
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.
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).
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.
deleted by creator
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.
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.
The problem about the “automatically adjust resolution and bitrate” can be done in two ways:
-
Using a GPU to transcode the 4k video in real time (generally unavailable on VPS)
-
Encoding the video in multiple resolutions and bitrates, using much more disk space
Both solutions are expensive on a VPS.
In this case when I need to share stuff in 4k 60 (basically never) I just host on YouTube unlisted and having Google foot the bill. Maybe think like this: the content really deserves to be 4k 60 fps? Home videos that I share with my family are downgraded to 720p as anyway they will watch it horizontal on a vertical screen
I honestly didn’t know that Youtube “unlisted” was even a thing; I’ve never posted a video to Youtube before, but this might be a promising idea. I’m assuming they still inject ads into unlisted videos, which is a major barrier for me… I hate ads.
I’ll admit that I’m a snob when it comes to video and audio quality; 4k/60 might be overkill, but I think at least 4k/30 has some merit in this case. Most modern phones and tablets (and TVs) are at least greater than 1080p, so assuming they’re watching the video horizontally, 1080p video would still result in a loss of quality. Would they care? Almost certainly not, but the idea of watching a UHD video source in a lower resolution bothers me far more than it should.
It definitely seems like VPS hosting is out of my budget. I think that hosting multiple version of the same video (and paying for more HDD space) would probably be cheaper than a VPS with a GPU resources, but the recurring fees are probably more than I’m willing to spend.
-
Have you considered keeping them on YouTube but unlisted, so that they don’t show up on your profile nor in youtube searches?
Otherwise, you could create a Google Photos album, but either quality suffers, or the videos will take a lot of space.
All the other options I could suggest either call for a recurrent payment, but trust me, it gets tedious after a while (ie. VPS with Peertube or similar), or call for losing quality by a lot (ie. Whatsapp or Telegram channels/groups), or quickly become unpractical (ie. Mega, Dropbox…)
There are plenty of choices, and if you’re 100% sure you’re fine with recurring payments and having to constantly mantain a system/keep it updated and secure, then go ahead and make a VPS, but if you’d rather have it be convenient, look into additional YouTube settings or common alternatives like Vimeo.
Another option is to make the youtube video private. Then you have the option to only share it with specific people. If it’s unlisted, then anyone with the link can view it.
Hosting on a VPS will get expensive. 4K video takes up a lot of space. If you want adjustable quality, then you will need to store multiple copies of the video at various resolutions and bitrates. A cheap VPS won’t have a GPU to do real time transcoding.
I had heard some users complain that youtube waa delisting private videos since they can’t share publically for ad revenue. Something to check into.
That wouldn’t surprise me. I’m sure they don’t want people using youtube their own private video archive. Storage isn’t free after all. If they didn’t want people to set videos to private, they would have removed the option though. Just don’t expect the videos to stay there forever.
I think it was over large private videos ( aka storage space unpaid )
I’d say private, not unlisted.
My reasoning for suggesting unlisted instead of private is because the recipients might not have a YouTube account, so making it unlisted means they’re certainly able to view the video.
Yup, this is the answer - if they need to be able to open the video with just the link, there’s functionally no difference if it’s self-host or YouTube unlisted. Just a lot less effort.
If it is encoded properly, NextCloud links will just play. I’ve sent video to my “Which one is the right click?” Mother.
Mkv won’t play out of the box, but most mp4’s do. I self host, but I have a higher upstream than you do. (I get about 12. Slow, but it does generally work.)
have a look into jellyfin. There’s a lot of precursors involved, im assuming you’re familiar, or will at least look into them if you decide on it though. As for your bitrate problem, there are two solutions, have the end user download it and replay it locally (jellyfin integrates this natively) or use hardware transcoding, (software on cpu, but you should use quick sync or nvenc, or something like that instead) IME modern intel cpus support what you’re looking for on QSV i’m running 12th gen. you can set external connections to a limited speed that JF clients will automatically configure.
For me personally i’ve been running jellyfin for a few years, it’s great. Couple of minor problems, but it’s fine.
How big? Might be easier to dump it on an external HDD and just share it around.
Unfortunately, the only people who would actually want to see my home videos (family) live several thousand miles away. I’m also not sure they would even know what to do with an external HDD. Not a bad idea, though.
What you could do is send it and then remote into there machine to decrypt it for them. Rustdesk is really nice for this kind of thing.
Crazy idea, but if you can’t get the bandwidth to support a media server like Jellyfin or Emby where you live, what about placing a server at a trusted relatives or friends house that does have access to high bandwidth? You might need/want to help offset a better internet plan for them though. You could then setup a VPN connection to be able to manage the server remotely and sync files and media to it. You could even use it for off site backup.
Emby, Jellyfin, and Plex will all detect connection speed, adjust quality settings, and transcode the media to playback without buffering.
I wouldn’t recommend Plex. They’ve been steadily moving away from self-hosted private media servers and towards just serving comercial content to you.
I myself run Emby as I’m rather fond of their development team and their attitude towards privacy. It does require payment for ‘emby premier’, ie the installable client apps and transcoding features, but it has single payment lifetime licenses as well as monthly.
Jellyfin is a popular open source option that is built on a fork of Embys older open source code before they went closed source.
Either would work for you.
4 Mbit upload seems really slow by today’s standards.
Anyway you might want to have a look at peertube. Its designed to be public and federated but you may be able to disable federation.
Another option is Jellyfin but its geared toward movies and TV shows.
Depends on where you are in the world.
4 Mbit is exceptionally slow by today’s standards; when I signed up for internet access (there’s only one provider available where I live), I told them “I will pay for whatever the fastest connection is that you can offer.” Turns out that’s just single-channel DSL. They won’t even install bonded DSL where I live, and believe me, I’ve tried. I do have Starlink as well, but because of the land around me, it’s always going to be obstructed by the land topology; when I calculated how high I would need to raise my antenna to avoid obstructions, it was several hundred feet. My pfSense box does a good job of routing traffic between my DSL connection and my Starlink connetion (and falling back when Starlink is obstructed), but for hosting anything, I need a stable connection. That leaves me with just my DSL connection.
Doing it on a VPS you’re not going to be able to do real-time transcoding, so you’ll have to pre-transcode a bunch of different bitrates.
Peertube will do that for you, and also handle giving a nice interface for people to watch the videos on with multiple quality levels to pick from.
I don’t know of any services that automatically pick the quality based on your connection quality though, even youtube doesn’t do that.
Are you sure Youtube doesn’t pick video quality based on connection speed? It will frequently drop down to 360p when my connection speed is particularly shitty that day, and I’ll have to manually increase it (I’d rather have occasional buffering than a blurry mess).
you only really need to pre-code one file. Especially with a network that limited lol.
I think bunny.net has something like that. Not self hosted but still much less distasteful than the big companies imho.
Acronyms, initialisms, abbreviations, contractions, and other phrases which expand to something larger, that I’ve seen in this thread:
Fewer Letters More Letters Plex Brand of media server package VPN Virtual Private Network VPS Virtual Private Server (opposed to shared hosting)
3 acronyms in this thread; the most compressed thread commented on today has 6 acronyms.
[Thread #454 for this sub, first seen 27th Jan 2024, 06:55] [FAQ] [Full list] [Contact] [Source code]
Peertube will work for this, Jeena made a video about his setup a while back
deleted by creator