I am preparing to soon upload all new video's I produce on to my own website instead of a platform.
I am asking if there is any one else who has done such a thing, so that I can look into subscribing to their RSS feeds and having things to watch that are not hosted on YouTube.
The only reason it would need to get more complicated than that, in my mind, is if you're serving largish amounts of traffic.
The most basic pipeline for doing it is going to look something like this:
1) Upload the original video to a storage bucket.
2) Have some compute service transcode the video file to create other renditions.
3) Store those renditions in a different storage bucket.
4) Put a CDN service in front of the transcoded renditions.
Get ready for a nice bandwidth bill if anyone actually watches your videos!
Hosting my own is/was not too bad. The students had to wait a little longer. I did not hear too many complaints (really thought I would have heard a lot more "why can I not watch this on my youtube app on my phone").
Did not put too much effort into this post-semester, but I still do wonder what the heck other people do. I consider myself a serious veteran IT person, it is my (accidental) profession for decades. I have no idea how people upload 50+ min videos to youtube. I think I left one transcoding for 48 hours. It was not 50% done. I ensured I was using a codec youtube wanted, and even tried more. Ah well.
On the flip side, hosting on your own, you miss out on CDN reach and breadth and POPs that will cache for you. You will also dramatically miss out on speed. Then, if you have more than a few, what about indexing and search-ability? I do not like "big-corp" internet any more than the rest of us, I guess, but they have the infrastructure that we just do not have. A few videos for a class during a pandemic is one thing... but I would ask what your long term goal is in terms of the number of videos. This might change your mind as to how you want to distribute them.
I'd just go with a video tag, containing the webm/av1/mp4 URLs, a poster image, and optionally subtitle tracks.
The first and most important thing is that you need to make sure your web server can serve ranged requests. Most web servers that serve static content should do fine, such as Apache and Nginx. If you have your own web server, make sure they respect Range headers and respond with the requested chunks. Most CDNs do, but servers provided by runtimes don't, such as the PHP built-in server. This is important for the browser to properly preload and seek videos embed.
I find third party video players unnecessary and added bloat. Several years ago, sure, that was when we had to fiddle with Flash players and all browser compatibility shenanigans. A standard HTML5 video player works great, it even hooks into Android media controls, bluetooth play/pause buttons, and picture-in-picture. Though I have not tried, none of the custom players can properly add subtitles/closed-captions to videos and make them work in Picture-in-Picture, apart from the standardized CC tracks. IIRC, Firefox had to bend over backwards and add custom workarounds to get Netflix CC to work in PiP. If it comes to that you need to use a custom player for consistency, I can highly vouch for Media Element JS.
I guess you could just upload all your videos to S3 and serve them over cloudfront. But Video seems to be tricky because there's the whole idea of encoding, adapting quality (detecting a poor connection and serving a low quality video, etc).
What I chose some time ago was Mux, they had a very good and developer friendly service.
It works amazing. No ads. No third-party tracking. BUT it is not the cheapest solution. I have one site where there is an auto-play 5 minute HD video on the homepage and it costs $70 a month for just that video. But that's an extreme case, other lower traffic videos are very low cost (< $0.10 / month).
Obviously my workflow is very AWS centric. You could also successfully replace Elastic Transcoder with something like FFMPEG if you are open to doing more work to automate.
Still, you may want to consider one of the services optimized for video as they tend to offer lower cost and have transcoding built in.
To all the people saying to use Nginx or similar: you can do that. I strongly recommend putting a CDN in front of it, though. Because with video buffering a small change in latency can have a big effect and the CDN will make sure the video is served from geographically close edges.
This is a nice example imho.
I’ve used the same technique to host various videos over the years with zero issues, but the s3 charges can add up if you’re not careful since you’re storing multiple copies of the same video to enable adaptive streams.
- if the target is making money than you are tied to very popular platforms, because it's only there the largest public (unfortunately);
- if the target is a selected audience you already know and they equally know you a feed publishing just new video URLs and files just dropped in a webserver suffice, you users only need to click the link to see, no web-crapplications nor WebVM (improperly named and known as browsers for legacy reasons) needed;
- if the target is personal nothing beat a storage media in your pocket...
Pretty cheap/easy.
I am in no way affiliated with its this creator.