Streaming is a way of viewing video or listening to audio content without downloading large media files. Streaming performance can be improved and buffering time reduced if the owner of the files uses a CDN.
What is streaming?
The first websites were simple pages of text with maybe an image or two. Today, however, anyone with a fast enough Internet connection can watch high-definition movies or make a video call. This is possible because of a technology called streaming.
Streaming continuously transmits audio or video files from a server to a client. In simpler terms, streaming happens when consumers watch TV or listen to podcasts on Internet-connected devices. With streaming, the media file being played on the client device is stored remotely and is transmitted a few seconds at a time over the Internet.
What is the difference between streaming and downloading?
Streaming is real-time, and it’s more efficient than downloading media files. If a video file is downloaded, a copy of the entire file is saved onto a device’s hard drive, and the video cannot play until the entire file finishes downloading. If it’s streamed instead, the browser plays the video without copying and saving it. The video loads a little bit at a time instead of the entire file loading at once, and the information that the browser loads is not saved locally.
Think of the difference between a lake and a stream: Both contain water, and a stream may contain just as much water as a lake; the difference is that with a stream, the water is not all in the same place at the same time. A downloaded video file is more like a lake because it takes up a lot of hard drive space (and it takes a long time to move a lake). Streaming video is more like a stream or a river in that the video’s data is continuously, rapidly flowing to the user’s browser.
How does streaming work?
Like other data sent over the Internet, audio and video data are separated into data packets. Each packet contains a small piece of the file, and an audio or video player in the browser on the client device takes the flow of data packets and interprets them as video or audio.
Does streaming use the User Datagram Protocol (UDP) or the Transmission Control Protocol (TCP)?
Some streaming methods use UDP, and some use TCP. UDP and TCP are transport protocols, meaning they are used for moving data packets across networks. Both are used with the Internet Protocol (IP). TCP opens a dedicated connection before transmitting data, ensuring all data packets arrive in order. Unlike TCP, UDP does neither of these things. As a result, TCP is more reliable, but transmitting data via UDP does not take as long as it does via TCP, although some packets are lost along the way.
If TCP is like a package delivery service that requires the recipient to sign for the package, then UDP is like a delivery service that leaves packages on the front porch without knocking on the door to get a signature. The TCP delivery service loses fewer packages, but the UDP delivery service is faster because packages can get dropped off even if no one is home to sign for them.
For streaming, in some cases, speed is far more important than reliability. For instance, if someone is in a video conference, they would prefer to interact with the other conference attendees in real-time than to sit and wait for every bit of data to be delivered. Therefore, a few lost data packets are not a huge concern, and UDP should be used.
In other cases, reliability is more critical for streaming. For instance, both HTTP live streaming (HLS) and MPEG-DASH are streaming protocols that use TCP for transport. Many video-on-demand services use TCP.
What is buffering?
Streaming media players load a few seconds of the stream ahead of time so that the video or audio can continue playing if the connection is briefly interrupted. This is known as buffering. Buffering ensures that videos can play smoothly and continuously. However, over slow connections, or if a network has much latency, a video can take a long time to buffer.
What factors slow down streaming?
On the network side:
- Network latency: Various factors impact latency, including where the content users try to access is stored.
- Network congestion: Too much data is sent through the network, which can degrade streaming performance.
On the user side:
- WiFi problems: Restarting the LAN router or switching to Ethernet instead of WiFi can help improve streaming performance.
- Slowly performing client devices: To play videos takes a good amount of processing power. If the device streaming the video has a lot of other processes running or is just slow in general, streaming performance can be impacted.
- Not enough bandwidth: For streaming video, home networks need about 4 Mbps of bandwidth; for high-definition video, they will likely need more.
How can streaming be made faster?
Streaming is subject to the same delays and performance degradations as other web content. Because the streamed content is stored elsewhere, hosting location makes a big difference, as with any content accessed over the Internet. If a user in New York is trying to stream from a Netflix server in Los Gatos, the video content will have to cross 3,000 miles to reach the user, and the video will have to spend a long time buffering or may not even play at all. For this reason, Netflix and other streaming providers extensively use distributed content delivery networks (CDN), which store content in locations much closer to users worldwide. CDNs have a substantial positive impact on streaming performance.