One thing i'd love to see added here is a blurb about the importance of the location of the video metadata in the file. Specifically that you need to have the metadata at the start of the file rather than the end of the file (which is the default) for low-latency playback on web.<p>Explained: Freshly recorded MPEG (and almost all other container types) typically saves the header at the end of the file. This is the logical place to store header information after recording as you just append to the end of the file you've just written. It's the default.<p>Unfortunately having the header at the end of the file is terrible for web playback. A user must download the entire video before playback starts. You absolutely need to re-encode the video with FAST-Start set.<p>The header location is the number one mistake that i've seen a lot of website and developers make. If you find your website videos have a spinner that's seconds long before the video playback starts check the encoding. Specifically check that you've set fast start.<p>I've seen companies who have a perfectly reasonable static site behind a CDN spend a fortune hosting their videos with a third party to fix the latency issues they were seeing. The expensive third party was ultimately fixing the issue because they re-encoded the videos with fast start set. The reality is their existing solution backed by a CDN would also have worked if they encoded the videos correctly.
I really love all the work the Mux team is doing! They don't just throw APIs over the wall. They are putting in lots of effort to educate/empower developers. This is good stuff, and not just propietary knowledge to sell something.<p>Also check out the video-dev Slack[0] and demuxed. Pion WebRTC and WebRTC for the Curious was motivated by conversations I had with other developers in their Slack.<p>[0] <a href="https://video-dev.herokuapp.com" rel="nofollow">https://video-dev.herokuapp.com</a><p>[1] <a href="https://demuxed.com" rel="nofollow">https://demuxed.com</a>
Oh, I thought it was about VHS video for some reason. I guess I'm old enough to rant that this should be named 'how video streaming works', not 'how video works' :/
Thank you to the Mux team for putting this together! I've been using Mux as the basis of milk.video's transcoding and video serving from the start, and it's been an absolute pleasure to work with.<p>This site is an incredible, concise, and comprehensive resource for people trying to better understand how video works.<p>I attended the demuxed conference this year, and was exposed for the first time into the nitty gritty of how video works behind the scenes.<p>Huge props for the content not being a sales pitch, and truly being educational and informative.
For those who handles video streaming, which software do you use in production to segmented the video?<p>I've already tinkered around with ffmpeg including throwing around any movflags I could find and it will never be able to stream it properly in chunks.<p>My current working solution is using MP4Box with this command<p><pre><code> MP4Box -dash 1000 -rap -frag-rap test.mp4</code></pre>
Perhaps someone here can answer a question I've had for a while: if you stream a video which is actually a static image (think a song on YouTube, the 'video' is just the album cover) is there any way to optimise that? Or must the server stream that same image constantly as though it was a regular video?