@successdav As someone who’s built, launched, and operated a video on demand platform for a few years now, this is a big topic.
Getting videos into S3 is the easy part. You then need to transcode it in formats that can be understood by as many browsers and devices as possible. Whilst MP4 is pretty well supported, it’s a single bitrate encoding. If you want videos to play back even on a patchy network connection, then you’ll need to look at adaptive bitrate encoding, so that the quality adjusts based on the user’s bandwidth, like YouTube or Vimeo or even Netflix does. Unfortunately, there’s not one ABR encoding that’s supported cross-platform, there are various standards such as DASH and HLS.
Then, as you’ve pointed out, you have security to contend with. It’s fine embedding an MP4 or HLS video/stream in a video tag in your HTML page, but not if a nefarious user can then grab that URL, send it to their pals, and then they can just watch that stream directly, too.
As you can see, video on demand isn’t “simple”. AWS do provide a “cookbook” of a pre-built solution, but you’ll need to have a working knowledge of each of the individual components it uses in the solution, and also be aware of the costs involved in spinning up all of those services without your AWS account. So I’d say choose a balance: if time and money is no object, build your own. If you just want to record videos and have them locked behind a subscription, do what Laracasts itself does and host them on Vimeo with playback restricted to your application’s domain. Vimeo have already taken care of the storage, transcoding, delivery, and security aspects. All you need to do is upload your videos to Vimeo and then embed them into your web page using a HTML embed code.