What Is Streaming? (Streaming and Video Streaming Explained)

A stream is a flow of data that is transferred progressively (not all at once) from one place to another. This process is called streaming. The most widespread application of streaming is in the video streaming industry. Below, we'll explore this topic in more detail.

The Literal Meaning of Stream

Stream, by dictionary definition, is water flowing along a watercourse. Large, long-running streams are called rivers.

Dictionary definition of stream

The Meaning of Stream in Computing

We don't know — and frankly it doesn't matter — where a river's water comes from or where it goes. Yet we use its current freely. In the world of computing (especially in programming), a stream refers to a flow of data transferred from one place to another (for example, from one file to another, from a file to memory, from memory to a file). This process is called streaming.

Notice the following code snippet in Java:

Example of stream usage in Java

Here a streaming operation has taken place. The data from the file My data.dat flows into the variable fileStream, which is then streamed into zipStream and from there into descryptedStream. At none of these stages does the consumer know where the stream came from or what it will be used for — it simply uses it. For example, the ZipDecompressorStream method doesn't ask for a file address; it only wants a File Stream. Another key point about streaming is that data is received progressively and on demand. For example, the first portion of data is placed in a buffer and, after consumption, the next portion of data is received. This continues as long as there is a request (for example, until you press the Pause button on the player).

What Is Video Streaming?

Before video streaming techniques came along, there was no good experience for online video playback. Users had to download the entire film before watching it. This problem was the motivation for introducing video streaming techniques. In this approach, the video is broken into small chunks of a few seconds each (called segments), and when a user requests playback, the segments are sent and played in sequence. Because of the small size of these pieces, the user experiences minimal delay. This is what we call video streaming.

Video streaming is implemented in various ways, but nearly all of them (including Kavimo's player) use Adaptive Streaming as part of their implementation. In this technique, multiple versions of the video are stored and then the appropriate version is played based on various parameters such as the user's internet speed, device processing power, and so on.

This happens automatically and is entirely tied to the viewer's conditions. For example, if a user watches a video while in a moving car, they may experience slower internet as they move farther from cell towers — and consequently slower playback. To solve this, adaptive streaming kicks in, reducing video quality to prevent buffering. As internet conditions improve, quality returns to its previous level. With even faster internet, a higher-quality version of the video will play. Of course, users typically have the option to set the video quality themselves. In that case, adaptive streaming is disabled and the video plays at the selected quality — which is not recommended under unstable internet conditions (such as mobile internet).

Quality selection menu in Kavimo's player

Related reading: Adaptive Bitrate vs. Multi-Bitrate Streaming — What's the Difference?