DEV Community

Cover image for Understanding the Challenges of Video Streaming and Ways to Improve It
Kaleem
Kaleem

Posted on

Understanding the Challenges of Video Streaming and Ways to Improve It

Video streaming, video calling, and live streaming all follow a simple paradigm. Typically, a streaming session uses a single network connection to send data packets.

If your upload speed fluctuates, your stream becomes unstable. For example, you may have a 4G cellular connection that varies from 60 Mbps to 3 Mbps. As your available upload bandwidth changes, so does the quality of your stream. The same is true with Wi-Fi, where fluctuating signal strength can cause variable upload speeds.

One obvious solution is to use a wired Ethernet (LAN) connection. This generally provides a much more reliable connection than Wi-Fi, but you still need sufficient upload speed to stream.

Single Point of Failure

One frustrating problem with streaming is reliability. You are just one network drop away from having an amazing stream or call turn into a poor experience, with your audience having no idea what happened.

Diagram video streaming with traditional internet. Image credit chatgpt

The solution to this problem is called bonding.

Bonding

The idea behind bonding is to combine multiple internet connections to improve reliability. Imagine you have a 4G hotspot and an Ethernet connection. The problem is that a typical video streaming connection only uses one network path at a time, so the second connection usually sits idle. To switch to the second network, the first one has to fail, and by then you have already experienced an interruption.

When you switch networks, your IP address usually changes. This can introduce latency, packet loss, or even disconnect your stream depending on the application.

Bonding solves this by using an external server that acts as a tunnel. Your stream maintains a consistent public IP while traffic can be distributed across multiple internet connections. If one connection begins dropping packets or becomes unstable, the other connection helps keep the stream running smoothly.

Software like Speedify improves streaming by combining multiple internet connections. Depending on the bonding mode, it can either distribute traffic across all available connections or use redundancy, where the same packets are sent over multiple networks and the best copy is used. This greatly improves reliability on unstable networks.

Diagram video streaming with bonding tech technique. Image credit chatgpt

My Experience with Speedify

Using Speedify gives me confidence that I always have a reliable backup connection and removes a major single point of failure.

One struggle I have experienced is that the Speedify servers can sometimes become a bottleneck. Even after selecting the closest server region, it sometimes reduces the performance of an otherwise stable internet connection and can noticeably lower my upload speed or perhaps the issue is that my ISP (internet service provider) is affecting the connection to the Speedify servers.

In streaming, you do not necessarily need a faster internet connection; you need a more reliable one.

I would rather have a stable 30 Mbps connection created by bonding two or three internet connections than a volatile 100 Mbps connection that constantly fluctuates.

Looking Beyond Speedify

As an alternative to Speedify, I have been exploring building my own bonding solution using my own server.

The advantage of a custom solution is that I have complete control over how it works and can optimize it specifically for my own streaming setup. It is a fascinating networking problem, and I think there is a lot of misunderstanding around it. In areas with unstable internet, reliable streaming becomes a much harder problem than simply having higher bandwidth.

Thank you for reading. I wanted to share this so you understand why your stream may struggle and some of the ways you can improve its reliability.

Top comments (0)