Setting up an encoding and broadcast system
I've never had to deal with encoding and broadcasting video on a server before so I'm a complete newbie to it. My only real experience is streaming to Twitch.tv with OBS Studio.
I'm getting sent a video stream with audio from one of my providers, and I'd like to take that stream and re-encode it and then broadcast it to my website visitors live, and I have no idea how to do it or which software I need to use.
The video stream in HLS so presumably MP4 and AAC. I can find out the codecs if required, though.
I also want to record the live footage, so I can show an archive of what has been broadcast in the past.
Can anyone offer me a straightforward introduction with a list of software I should be looking at please? I can read the documentation and figure out how to get it to work, but I've got no idea where to start Googling so I need a bit of a leg up to get me going :).
https://en.wikipedia.org/wiki/Comparison_of_streaming_media_systems has a list to consider, broken down by protocol and codec support.
Although not on that list, offhand, I think of MediaGoblin: https://mediagoblin.org/
You're on the right track!
OBS can do all of this. Take in a stream, and broadcast it to whatever service you have it set to send to.
Video on how to set that up: https://www.youtube.com/watch?v=_C8ySlScsdY
OBS also has a VLC playlist feature. I point it at a directory of MP4s, and have a dedicated "videos" scene I created.
Take a look at this video for more details on that: https://www.youtube.com/watch?v=Qw3aIUW8WRg
I asked your question on Twitter to crowdsource some answers for you and someone offered to do a zoom with you to show how they do this: https://twitter.com/JasonvanBrackel/status/1222943618484330496?s=20.
Hope this helps!
I've set up something similar on a dedicated CPU Linode running Apache. Using ffmpeg my command line options are something like this:
ffmpeg -i [input options] -g 60 -hls_flags +append_list -hls_list_size 0 -hls_playlist_type event -hls_time 6 -keyint_min 60 -method PUT -http_persistent 1 -ignore_io_errors 1 -sc_threshold 0 https://[your server]
You'll need to configure the web server to accept the PUT requests and save the segments. Alternatively, you can use POST which may be simpler for you.
On the front end I've found Video.js does a good job playing the HLS stream:
Hope that helps!