Hi there! 👋 I'm the Director of Developer Relations at Wowza Media Systems, a live video streaming solutions company. Everything seems to be centered around live video streaming these days and I'm here to help!
Hit me with your questions on live video streaming, DevRel, baking and cooking analogies, and anything else that comes to mind.
Top comments (24)
I'm not the most technical of folks here on DEV, but I do love a good analogy. Can you explain the basics of video streaming to me via a cooking analogy? 👩🍳
You know most people use the shipping analogy or our technical content writer likes to use a recycling/garbage truck analogy. So let me see what I can do here...
Live video streaming end-to-end is like baking a cake for someone. 🍰
I could give you all the raw ingredients, but transporting exactly the right number of eggs without smashing them and melting the butter is hard and you still have to do all the work yourself when it gets to you. This would be like me trying to send you a huge raw video file, you get to download all the bits slowly and hope it doesn't get corrupted on the way there. This isn't really streaming, but in the end you hopefully get the video. That would be great if you were into a Blue Apron experience but for like Game of Thrones. 👎
Instead, I'm going to collect the raw ingredients (video capture), use what the recipe calls for, your favorite flavor may or may not influence my cake making decisions, but my available raw ingredients sure will. Maybe I'll even use my stand mixer or hand mixer to make the process easier for me as the baker (encoding). You as the cake consumer don't care and can't tell if its hand mixed, stand mixed, or non-mechanically hand mixed, but I can, and after an upper body workout I can get you a cake faster if I use my stand mixer. From there I get to determine cake shape (package), round or square based on which one of my pans I can cover for transport later. But first, I need to bake my raw ingredients (convert/transcode). Baking complete, we wait for it to cool (or maybe its a new fade where we eat molten hot cake, WebRTC & data channels), ice it, then put the foil or lid on the pan (distribute). Then I delivery it, contactless of course. And you eat it immediately because you can't resist (playback).
And then maybe you eat it the next few days whenever you want (Video on Demand, VOD).
There are so many choices and decisions you have to make in the process, some of that is influenced by your end user and the experience you want to achieve at playback and some of that is based on how you captured the video in the first place. Like no matter how hard I try right now, I can't make you a chocolate cake. I have no chocolate powder in the house... but I do have chocolate chips. No matter how much you want 8K delivery, you can't scale up a 4K video camera and it not look like you shoehorned a 4K video into an 8K experience.
Love this!! This is a super cool analogy. 😀
Also, your humor here is so on point — "deliver it, contactless of course..." — haha, oh the times we live in!
And now, I really want cake, haha. 🍰
My bad 🤣
Hey Amara! As more and more companies and individuals pivot to streaming, what are some of the mistakes you're seeing folks make in streaming? Or, if "mistake" is too strong of a word, what are some best practices new streamers should be aware of? :)
I always recommend people understand their goal or use case. This make it easier when looking at your workflow and the tools that may help make it easier.
For example, if your goal is just to stream a short video of yourself, YouTube Live or Facebook Live probably have all the built in tools that you would otherwise need. If your goal is to take that video global, restream, multicast, or more, you need to start looking at other tools that would assist with getting your stream to multiple platforms.
Video is a difficult concept to grasp, so we have a lot of folks right now asking to "just stream in the browser". You need to remember you are capturing a video signal and converting it into something that can be packaged and sent across the internet. Raw video is huge, so that's where we look at encoders to help us. Encoders can be hardware, software, or totally obfuscated from the user with platforms like YouTube Live or Facebook Live.
Do your research for your use case. You know best about what you are trying to accomplish.
What do you see as the most appropriate tech stack (as of 2020) to build complex video streaming services, focusing on performance?
What kind of performance are you talking about? Highest quality video and audio for the end user (playback)? Near realtime delivery?
For an end user the best of both worlds would be expected :) I could imagine it would be a broad topic to explain, tho out of curiosity would be nice to see an insight at least :)
Madza, you are not wrong!
It is quite broad, which makes the space both exciting and frustrating. Unfortunately, with current implementations there is a bit of an issue right now with getting high quality video with a delay, or less decent quality video without a delay. So let's talk about performance as in latency (delay).
Going to rip an image from my employers blog on latency.
Ideally, in a modern world you want a stack that implements a protocol that's going to get you to the right of that HD cable tv line. These protocols are all newer, which means implementation is less mature, if it exists today end-to-end at all. WebRTC is going to depend on browser support, bandwidth at that given moment in time for both uses, and other things, for example.
Reading through that blog, you'll see us reference adaptive bitrate streaming, which again is great for the user but less great if our focus is performance and performance to us means latency. I don't know if you've ever watched an Apple event, but I've seen fantastic video at almost a 30 second delay... so I see spoiler alerts for the live tweeters, but high quality video.
I'm giving you a long non-answer at this point. There are a ton of considerations and really it comes back to your use case. If you can afford some delay, you can probably better your chances are delivering a high quality video.
Wow, I would never imagine that still in 2020 there might be broadcasts with such a massive delays! Tho, I get you, everything comes at it's price :)
By what I understand, in your niche it's always a challenge to catch up and implement the ways to reduce the latency for more and more quality video/audio formats being achieved due to rapid evolving of capturing devices.
Thanks for including the schema of an overall picture, getting the grasp of the range with it's extremes on both ends, as of current state.
Really loving the Q&A that is happening here!
I have a question regarding security and hardware. I'm not very familiar with IaaS and that sort of stuff, but we're wanting to make conference 1-1 with doctors and patients, and one thing that comes up on everyone's minds are confidentiality and security.
With WebRTC will I need some sort of IaaS that holds up to this? It's a regional solution (it will scale only to the country itself)
Thanks in advance!!
Thanks for your question Facundo! There are a number of use cases popping up that are exploring exactly what you are looking to do.
I think this is a [great resource] for you (webrtc-security.github.io/), particularly section 4, on WebRTC security. Encryption is mandatory with WebRTC, but that are other security concerns you should keep in mind too, just like with other web based applications transferring data.
With the obvious surge in streaming usage this past month, what are some of the things you team did well and not-so-well in scaling to this increased demand?
Hi Colton, thanks for your question!
My entire company was in the middle of quarterly planning when COVID-19 lockdowns started happening, which meant we were planning for a non-COVID-19 future as changes were happening daily and that was a bit of a mistake. We did some post planning planning and decided on a coherent focus to address immediate needs to facilitate live streamed religious services, press conferences, and other broadcast use cases for non-video engineers. But I should mention we already have the scale piece in place from the technical implementation standpoint, so guiding our customers with best practices, we are seeing things hum along nicely.
For DevRel and DevX specifically, instead of focusing on in-person events and future workshops, we immediately placed those items on an indefinite hold. We worked really hard to have curriculum ready for an April pilot event, so it was a big pivot to just drop that work. We are more focused on DevX than DevRel, which in the long run is a solid plan anyway.
We cranked out how-to blogs to show how to use Zoom RTMP with Wowza and stream out to address scale and security, which we continue to update. We are working on new and updated examples for technology like WebRTC, some documented, some not. Ask me in a month or so if pushing out example code that's half documented was a good idea 😅
Everything coming into tech support, DevRel, sales, and other external channels is URGENT which is making priorities hard. We are a small company, so addressing everyone's urgent support tickets, sales questions, billing questions, and more has been a real challenge but we've shifted things around to help our front facing employees. Its hard, we've been busy, but I'm so thankful to help keep so many people connected and broadcasting.
hello amara i want to create a live streaming app with nodejs , want share my life on Facebook , Instagram .. and other platforms do you have any suggestions or can you help me please
Instagram's API doesn't fully support streaming anywhere other than directly on Instagram, there are some hacks that exist out there but I wouldn't recommend them.
How are you capturing and encoding video? Through your phone?
I want to create a website similar to obs studio, streamyard and i need some instructions!
So if you are doing everything through the browser, you need to use WebRTC or have something encoding or packaging the video at the client to the stream it out. I'm not familiar with Streamyard, so I'm not sure what they are using.
what i want do is to create a website where i can go live in multi-social media at the same time, so what i want to know is the best technologies, tools or frameworks i can use to achieve the best result
You mentioned DevRel. What does that look like in the context of a live streaming solutions company? Are there a lot of APIs/tools for developers so they can build things with your product?
First DevRel question of the day!
Right now its APIs and a few SDKs. Our APIs range from REST APIs to Java APIs to GraphQL. We have customers looking to develop their own end-to-end solution that's highly customized, they want to do everything programmatically without our UIs (or with their own!).
End-to-end in the context of live video streaming means glass-to-glass - camera capture to video playback. For Wowza, as a media server, we sit in the middle doing the encoding, muxing, packaging, distribution, etc. But our customers need to get their video signal into a digital format, sometimes that's going to be a physical HDMI or SDI cable into our hardware encoder, sometimes its a wifi enabled camera with a built in encoder that's already capable of streaming to the cloud. With multiple points in this process potentially having 3rd party components, we need to be as flexible as we can be and allow our customers to use a variety of hardware and software components around our products.
The really tricky part is our developer audience ranges from video engineers who are technical in the video space but maybe not a Java software engineer. Or a backend engineer who knows some networking but less about the video specifics. And of course there are others in between! In DevRel we have to make sure we have a range of content to meet all these needs, something we are working on today when designing our soon to be released Developer Portal!
Hi Amara, I have a question, Can I open streaming from the browser using web sockets or something similar that the browser does not broadcast? Thanks