Category Archives: Hosting Marketers News

how to reduce HTTP Live Streaming (HLS) latency with Wowza Streaming Engine?

HTTP Live Streaming (HLS) is here to stay, it works everywhere, high quality and stability, but latency or delays between the stream and the end user can be 60-90 seconds, if you streaming live events that can be a very big issue, imagine Sports betting?
But with Wowza Streaming Engine it is possible to reduce the latency to 3 to 5 seconds.
It is not good enough but for now there is no other solution.

Below we have some adjustments that using the Wowza Streaming Engine Manage, we can easily improve, although of course there are some negative components.

This risks inherent of the configuration adjustements are due to smaller chunk sizes may result in playback errors if you fail to increase the number of seconds built into the playlist. If a stream is interrupted, and the player requests the next playlist, the stream may be interrupted when the playlist doesn’t arrive.

Additionally, by increasing the number of segments that are needed to create and deliver low-latency streams, you also increase the server cache requirements. To alleviate this concern, ensure that your server has a large enough cache, or built-in elasticity. You will also need to account for greater CPU and GPU utilization resulting from the increased number of keyframes. This requires careful planning for load balancing, with the understanding that increased computing and caching overhead incurs a higher cost of operation.

Lastly, as chunk sizes are smaller, the overall quality of the video playback can be impacted. This may result into either not being able to deliver full 4K video to the player, or small playback glitches with an increased risk of packet loss. Essentially, as you increase the number of bits (markers on the chunks), you require more processing power to provide smooth playback; without it, you get packet loss and interruptions.

A- In Wowza Streaming Engine Manager, click the Applications tab and then click live in the contents panel.

On the details page Properties tab, click Cupertino Streaming Packetizer in the Quick Links bar.

In the Cupertino Streaming Packetizer area, click Edit, and change the values for the following properties:

1- cupertinoChunkDurationTarget- Set the duration of each chunk in milliseconds. The default value is 10000, but the chunkDurationTarget must be smaller to reduce the latency of Apple HLS streams. For a one-second chunk size, set the value to 1000.

2- cupertinoMaxChunkCount- Sets the maximum number of chunks Wowza Streaming Engine stores in the available chunk list. The default value is 10, but for reduced latency streaming we recommend storing 50 seconds worth of chunks. For one-second chunks, set the cupertinoMaxChunkCount to 50; if you’re using half-second chunks, the value should be doubled (100).

3- cupertinoPlaylistChunkCount- Sets the number of items returned to the player in the playlist. The default value is 3, but for reduced latency streaming we recommend returning 12 seconds of data to the player. This prevents the loss of chunks between chunklist requests. For one-second chunks, set the cupertinoPlaylistChunkCount to 12; if you’re using half-second chunks, the value should be doubled (24).

ClickSave.

B- On the Properties tab, click Customin the Quick Links bar.

In the Custom area, click Edit.

Click Add Custom Property, specify the following custom property settings in the Add Custom Property dialog box, and then click Add:

1- In Path, select /Root/Application/LiveStreamPacketizer.

2- In Name, enter cupertinoMinPlaylistChunkCount.

3- In Type, select Integer.

4- In Value, specify the minimum number of chunks required before Wowza Streaming Engine provides a playlist to the player. The default value is 1, but for reduced latency streaming we recommend requiring a minimum of 6 seconds worth of chunks. For one-second chunks, set the cupertinoMinPlaylistChunkCount to 6; if you’re using half-second chunks, the value should be doubled (12).

Click Save and restart the application to apply the changes.

Done, try now. Or just contact Hosting Marketers and order our RTMP Wowza with our shared hosting Wowza Engine.

RTMP Servers

Real-Time Messaging Protocol or RTMP was developed originally by Macromedia, which then became Adobe. It was a system to implement streaming of video, text and audio over the internet between a flash player and a server with the RTMP setup.

Using fragments between the server and the user, it maintains a stable connection and because of that it has low latency, meaning that there is a very short delay, between the server and the user. The delay is perhaps 1 or 2 seconds.

The RTMP servers available are Adobe Media Server, Red5, Wowza Streaming Engine, Nginx RTMP server and a few more, but this 4 are the most common, although Adobe is very expensive and Red5 is difficult, personally I prefer Wowza RTMP, which has a number of advantages, we will talk about this on another post.

Going back to RTMP, it is a TCP-based protocol which maintains persistent stable connections and allows low-latency communication. To deliver streams smoothly and transmit as much information as possible, it splits streams into fragments, and their size is negotiated dynamically between the client and server.

RTMP servers are ideal for live streaming but also for Ondemand video streaming, it is also a necessary component for live video chats.

RTMP Server, how it works

The server must be setup with a media server, like Adobe or Red5, then the video stream connects to the RTMP installed on the server, the video stream could be a laptop with a software installed, this software is an encoder, there are a number of them, OBS Studio, but the most common is the Adobe, FMLE, which you can download free at http://hosting-marketers.com/flashmedialiveencoder_3.2_wwe_signed.msi (for windows computers, Mac computers you can download directly at Adobe site.)

On the encoder you enter the server RTMP, which would be something like this:

fmle encoder
click on the image to see larger size

rtmp://server_IP/live/stream_name

Then you connect and start the broadcast. this stream will go directly the RTMP server and you can now setup a player for your users, if you using a RTMP player you will need to use a flash player, but using Wowza Streaming Engine on the RTMP server it converts the stream to a HLS protocol which can be used on many other platforms as well, like smartphones and HTML5 Players. Although the HLS has the latency issue because of the flash players end of live it is nearly impossible not to use it. Nowadays, with a good configuration you can reduce the latency to 3 or 4 seconds.

So we have, YOU on your laptop with a camera and an encoder >>> your internet connection and the RTMP Server connection >>> and finally the player on your site broadcasting your live event. Or your video files.

Wowza Live Streaming

Our wowza live streaming supports live events, sports, church and anything related with a high quality, While ordering you can order which service you need, from

1- Live streaming

2- Ondemand video streaming

3- TV Station withe option to schedule playlists and go live broadcast when ever you need

4- IP Camera re-stream, this great to keep a security camera 24 X 7

Our RTMP works on any encoder from FMLE to wirecast.

And our player is ads-free and Embeddable  on any site.

Wowza Live Streaming works on any platform, from desktops, VLC, Tablets, IPhone, IPad and Android, you can also stream to Facebook or other video platforms, like youtube. If you need any help on this don’t hesitate to contact our engineers.

IP Camera

Addons, as of Wowza Transcoder, Wowza nDVR and extra web space for videos are available at any time.

Before you test order our free demo at https://hosting-marketers.com/customers/cart.php?gid=5

Please see our options at https://hosting-marketers.com/wowza-hosting/

or contact us for a customized sales.

How to run Python scripts

How to run Python scripts

If you wish to run Python scripts in your hosting account, you can create and edit them in two ways: either in cPanel or via SSH.

To create and edit Python script in cPanel use the following steps: 

1. Log in to your cPanel:
2. Go to section Files > File Manager:

3. You can choose whether you want to run the script in the cgi-bin folder or outside of it.

The cgi-bin folder contains executable CGI scripts. If the file should be placed out of the cgi-bin folder, .htaccess should be created additionally.

4. In order to run the Python script in the cgi-bin folder follow the steps:

  • Go to the cgi-bin folder
  • Create a file with a .py extension, for example nctest.py in the /home/cPuser/public_html/cgi-bin directory (where cPuser is your actual cPanel username).

5. In order to create the file, click New File > specify the name of the file with the required extension and click Create New File:

6. Change the permission of the file to 0755

NOTE: Files are created with default permissions 0644. The .py file will become executable when the permissions are changed to 0755.

7. In order to change the permissions of the file you need to select the file > click Change Permissions > Mark Execute for User, Group, World columns and click Change Permissions:

8. Open the file, click Edit and add the code.

We will add the following script for testing purposes:

#!/usr/bin/python

print “Content-type: text/html\n\n”
print “How to run Python scripts in cPanel”

NOTE: The file should start with the path to the Python scripts that is /usr/bin/python on our servers, but you can run the whereis pythoncommand via SSH to check the directory.

Now the script should work using http://domain.com/cgi-bin/nctest.py

If you would like to run the Python file not in the cgi-bin folder (in public_html or any other directory), it is necessary to add the following code to the .htaccess file in the same directory where the Python script is placed:

Options +ExecCGI
AddHandler cgi-script .py 

testing a red5 live streaming rtmp, plus creating a player for the rtmp

We created an app for live streaming here.

Now we going to test it and create a player code so we can start streaming to our site.

Do you have fmle installed on your computer? You need to download it from adobe.

Lets test it first, go to

http://209.95.39.220/test/

enter the rtmp of your app. the rtmp is

rtmp://server IP/app

so:

rtmp://RED5_SERVER_IP/live221

Enter this URL on the long string and click connect, now click “Publish” your camera will start,  and now click “Play” if the 2 players show the same thing you are on. Everything is good.

OK, now we have to work on “stream name”. We talked about rtmp, and we tested it, the testing site if you go back to it

http://209.95.39.220/test/

it has a stream name, “testing” this must be on both the publishing and on the player.

so it must be on the FMLE and on the player code.

fmle

(click on the image to have a better view)

the FMLE on the left you have your settings, frame per second, bitrate, your camera, format.

on the red5 server your bitrate should be about 320kbps higher then that you need a lot of RAM and server resources.

lets configure the fmle as the image shows.

on the right on the FMS URL enter the rtmp and on the stream enter your chosen stream name, in this case I entered “live” see image.

click connect, and then below click “Start”

you now streaming to your server.

 

Now creating a player for this stream. Go to

http://www.hosting-marketers.com/generator/

at the bottom on the “Streamer” enter the rtmp:

rtmp://RED5_SERVER_IP/live221

and on “Stream / File Name” enter the stream name, which we used on the FMLE, “live”

Click  “Generate Code!”

Take the “Preview & Embed” code, paste on your site and that’s it.

You can also use an image on the player, it will show before the user click to play,  enter the image URL on “Overlay Poster”