Live streaming: Push vs. Pull
When encoding video or audio, you have two options. You can either ‘push’ the stream or ‘pull’ the stream. Each method has advantages and disadvantages which we will discuss here and help you to choose the method best for your circumstances.
Pushing a stream:
With a push stream, the local machine running the encoder is initiating the connection. This connection has to be made with a streaming server.
The main advantage of pushing a stream is that router port forwarding and firewall exceptions do not have to be made. A static IP address is not required to push a stream which would be necessary with the pull method. Static IP addresses are less common than they used to be and with some ISPs they have to be paid for. On an internet connection with no static IP address available, pushing the stream will be your only option. A push stream is generally less stable than a pull stream and would consume more local bandwidth because it is constantly connected to the streaming server that it is pushing to.
A push stream would normally be used for short one off webcasts rather than 24/7 webcasting because of its inherent bandwidth overheads.
Pulling a stream:
With a pull stream, a streaming server (or a viewer) initiates the connection with the encoding machine. It is possible to webcast without the use of a streaming server using the pull method; however, if more than 2 or 3 people connect to the stream simultaneously it will suffer and not be delivered properly to any of the viewers. When a streaming server is ‘pulling’ from the local encoder it would be possible to have hundreds of thousands of viewers without the stream suffering at all.
One of the big advantages of pulling a stream is that the server will only connect to the encoder when the stream is requested by a viewer. This means that you will be limiting your local bandwidth usage by using this method because you will not have to be constantly connected to the server. This obviously makes it much more suitable for constant 24 hour streaming. It is possible to restrict access to the encoder by IP address – which means you can only allow the streaming server to connect and restrict any unauthorised access. Windows media encoder also records and IP address of connections so you can see who is connected at any time.
One disadvantage of using this method is that in order for the streaming server to connect to the encoder, port forwarding and firewall exceptions will have to be set up. Using the pull method is ideal for streaming from a static location where the configuration of the network stays constant.
When choosing the method you are going to use, the best thing to do is ask yourself a few questions before you start.
1. Do I have a static IP address?
2. Am I going to be broadcasting for longer than a few hours at a time?
3. Do I have access to the router to set up port forwarding or firewall exceptions?
4. Will I be broadcasting from more than one network?
If you answered no to the first question then pulling a stream will not be an option for you. If you are going to be broadcasting for more than a few hours pulling the stream would be the obvious choice because you will save on bandwidth use. Without access to the router (or someone who does have access) you will not be able to set up the port forwarding properly and the streaming server will not be able to connect to your encoder with the pull method which mean, you will have to push. When you are broadcasting from more than one network, the settings are likely to be different on each network. Pushing the stream would most definitely be a better option here because it will work regardless of the network security in most instances.
Read Full Post »