DEV Community πŸ‘©β€πŸ’»πŸ‘¨β€πŸ’»

Cover image for Tools For Building Video Streaming Apps
Amara Graham
Amara Graham

Posted on

Tools For Building Video Streaming Apps

Starting a new project or using a new technology often requires setting up your development workspace to be compatible with what you are trying to accomplish.

Building a web application? You'll need one of the many JS frameworks out there, Node, npm, and probably a couple other helper libraries and utilities. And you can't forget an IDE like VS Code!

But what happens when you want to do something with video streaming? Whether it's a desktop app, mobile app, web app, something embedded, or even something in between, you'll need to get your development workspace setup to test flows as you go. Video streaming workflows have so many pieces, you'll want to make sure you have the right tools to help you navigate your solution.

Ready for the most exciting part? Many tools are both free and open source.

ffmpeg

It's a beast of a tool and to be honest, I've really only used it for making screen captured videos into gifs (I can't believe I just typed that lol).

When I was working with audio and speech-to-text, I found myself occasionally needing to convert the audio container to a compatible file format. But like I mentioned above, most of the time I wanted to make an mov into a gif.

VLC

Not all video players are created equal, so be careful where you decide to test your stream.

For desktop, I recommend VLC. Audio, video, streaming locally for testing, anything.

If you are doing something in the browser, keep in mind that some players may work in some browsers and not others. Some streams may work in some browsers or players and not others, or strange and unexpected behavior may occur.

Mobile is another issue. Some streams may behave differently in native and non-native players on mobile.

This is where I say VLC is great for testing, but be sure to test where and how you want your end users to consume your stream. Choose a player and platform that work for your workflow.

OBS

OBS is an incredible tool for streaming, and the route I recommend for folks getting started and wanting to stream their webcam or desktop.

Using a custom service, you can supply your server URL and stream key with your authentication and connect to Wowza Streaming Engine without leaving your network.

Or if that's not your jam, choose from a number of different services in the dropdown like Twitch or YouTube, supply what they ask for, and you are one putting click from starting your stream.

Wireshark or tcpdump (Linux)

Like I previously mentioned, and keep harping on, there are a lot of pieces when building a streaming video application and some of that gets more complicated when you want to do it live.

You may need to inspect packets or make sure things are moving across the network. Don't let this be intimidating or lead you into thinking you need to be a network engineer to get a working streaming video solution. You probably don't need to be a Wireshark or tcpdump master, but having the ability to take a peek might save you some time while you troubleshoot.

So I guess you could say this one is optional, but when you need it, its awesome.


Did I miss your favorite one? Do you have an alternative to any I've suggested? Let me know below!

And as always, if you are building something that incorporates streaming video, live or on demand, I'd love to hear about it whether you use Wowza or not.

Top comments (14)

Collapse
razgandeanu profile image
Klaus

Great article.
I've used FFmpeg and I noticed that the license situation can be a bit complicated if you are converting to MP4.
You can find more details here.
Do you have any opinions on that?

Collapse
eaich profile image
Eddie • Edited on

Are you attempting to include ffmpeg as part of an overall application or embedded system and need to use LGPL? If so, then you unfortunately will likely have to pay for an h264 license. The video codec space is full of litigation so be careful.

If you are ok with the GPL instead of LGPL, you can install libx264 to convert to MP4 format.

Collapse
razgandeanu profile image
Klaus

No, this does not apply to me, but I've heard of companies where they wanted to use ffmpeg and gave up because of the complex nature of the license.

It's an interesting topic, I don't think installing libx264 to convert to MP4 will help.

The issue is with the actual MP4 format, since it's owned by MPEG LA.

I think you would just have to stick to WEBM format in order to avoid any issues.

Thread Thread
missamarakay profile image
Amara Graham Author

So many things are compatible with webm at this point, I would agree.

Sounds like there are actually 2 things going on here, OSS licensing of ffmpeg and MP4 royalties.

What a licensing mess.

Collapse
missamarakay profile image
Amara Graham Author

Thanks for reading Klaus!

I have no opinions on that currently, but with a quick search it sounds like something I would discuss with a lawyer - video.stackexchange.com/questions/...

Collapse
crimsonmed profile image
MΓ©dΓ©ric Burlet

I would add Xsplit and Elgato as possible alternatives for streaming software.

For the dev part I would also add WebRTC which can help create live streams and is very friendly for JS for instance. We have used it to build a video conference app with screen share, voice detection and more.

Collapse
missamarakay profile image
Amara Graham Author

Great adds! Thank you Burlet.

WebRTC is on my list of things to spend some time hands on with.

Collapse
scarlettjohnson6321 profile image
scarlettjohnson6321

I think these tools will be very useful. As the demand for video streaming platforms are increasing these tools will helps the online video platforms where it will be convenient for the users to access the apps with an ease.

Collapse
jasonstaurt4321 profile image
jasonstaurt4321

The article on tools for building video streaming app is very well explained and it is not easy to build app as you need to spend fair amount of time on research as the app will be used for wide range of audiences and the app should reliable enough to the use whom ever access the video streaming apps.

Collapse
andrewbrown profile image
Andrew Brown πŸ‡¨πŸ‡¦

I stopped using a video editor and now exclusively stitch hundreds of videos together with transitions using ffmpeg for ExamPro.

Collapse
opensauceng profile image
opensauceng

Good read. Keep it up

Collapse
praveene27295 profile image
Praveen

Highly descriptive blog about the topic Best tools for video streaming app, I liked that a lot. thanks for sharing

Collapse
dwarak17 profile image
Comment marked as low quality/non-constructive by the community. View Code of Conduct
Dwarak Babu

Necessary list for business owners to build world-class streaming tools. Its depends upon the Solution provider to make a better platform with these tools. Everyone has some unique structure to develop a streaming app/platform. Find here the guide to select the better ott solution provider.
Ref: techmenews.com/choose-best-white-l...

Collapse
hamitdemir profile image
Comment marked as low quality/non-constructive by the community. View Code of Conduct
Hamit Demir

You might love Ant Media Server. Ant Media Server is streaming engine software that provides adaptive, ultra-low latency streaming by using WebRTC technology with ~0.5 seconds latency. Ant Media Server supports
WebRTC, CMAF, HLS, RTMP, RTSP and much more. Also Ant Media offers Free Trial and Free Android, iOS and JavaScript SDKs.

🌚 Life is too short to browse without dark mode