RTMP protocol - Storm Streaming Server

Storm streaming server is equipped with a fully working server & client RTMP protocol implementation. It can both host a stream by receiving a signal from an external source or grab an external stream from any other RTMP compatible server (the latter is used with "rtmp" source protocol, that you can check in this section). Before publishing any stream to the server, a proper configuration must be applied.

RTMP configuration

In order to properly configure RTMP protocol on Storm server, please edit config/preferences.xml file and look for Hosts tag.

                            
<RTMP host="*" authentication="none">
	<NonSSLServer enabled="true" port="1935" />
	<SSLServer enabled="false" port="1936" />
</RTMP>
                    

All tags are explained below:

Tag nameDefault valueDescription
RTMP:host* (all internal interfaces)A default host (ip address) for RTMP protocol.
RTMP:authenticationnoneDecides whenever rtmp clients must use authentication or not. Possible values: none (no authorization is needed), credentials (authorisation via config/auth_publish.xml file)
NonSSLServer:enabledtrueDecides whenever standard/non-ssl version of the protocol is enabled.
NonSSLServer:porttrueA port for non-ssl rtmp port (by default: 1935).
SSLServer:enabledtrueDecides whenever ssl version of the protocol (rtmps) is enabled.
SSLServer:porttrueA port for ssl rtmp (rtmps) port (by default: 1936).
Table 1. RTMP Tag explanation

Stream authorization

In order to activate password-protected publishing please switch RTMP authentication from none to credentials (above example) and edit config/auth_publish.xml file. A single entry looks like follow. You can modify the following file to add more elements.

                            
<AuthPublish>
	<user username="testuser" password="qwerty">
</AuthPublish>
                    

Codecs requirements:

For the stream to work properly please make sure that your stream meets the following specification:

Video codecsH.265, H.264, (legacy codecs like VP8, VP6, Sorenson Spark®, Screen Video v1 & v2 are not supported)
Audio codecsAAC, AAC-LC, HE-AAC+ v1 & v2, (legacy codecs like MP3, Speex are not supported)
Table 2. Audio & Video codecs requirements
Please keep in mind that not all end-devices support H.265 codec. For the best compatibility we advise using H.264 instead.

Compatible software:

Storm streaming server RTMP protocol implementation is compatible with a vast variety of third-party streaming applications and libraries (including both desktop and mobile). Below you'll find some examples:

PlatformOperating systemSoftware
DesktopWindows, MacOS, LinuxOpenBroadcaster (OBS)
WindowsXSplit Broadcaster
Windows, MacOS, LinuxFFMPEG
MobileAndroid, iOSLarix Broadcaster
Android, iOSStreamaxia
Table 3. Compatible streaming libraries & applications

Setting up a live stream:

Below you'll find a series of short tutorials on how to setup a stream using the most popular streaming applications.

OpenBroadcaster (OBS)

  1. To start, please download OBS Studio, an open source broadcasting solution, which is available for Linux, Mac OS and Windows.
  2. In the Controls section of the Interface, click on Settings to enter the OBS configuration interface:
  3. Enter the Stream tab and enter the Information about your Storm streaming instance:
    ServiceCustom
    Serverrtmp://yourdomain.com/live - please add your own domain here
    Stream Keyyour stream name (e.g. "test")
  4. Confirm changes.
  5. On the main window click "Start streaming".

XSplit Broadcaster

  1. Go to Broadcast > Set up a new output, then click Custom RTMP. The Custom RTMP broadcast properties will appear.
  2. Enter your stream data:
    RTMP URLrtmp://yourdomain.com/live - please add your own domain here
    Stream Keyyour stream name (e.g. "test")
  3. Click OK to save the settings

FFMPEG

FFMPEG application can be also used to push static content (like mp4 files) into a live stream. It's also possible to use it as a real-time video transcoder. Window's version of FFMPEG can be obtained here. For Linux and Mac OS we suggest using inbuilt package managers

Linux (Debian-based distributions)

                        
sudo apt-get install ffmpeg
                    

MacOS(requires HomeBrew which can be downloaded from here)

                        
brew install ffmpeg
                    

Staring a new stream from a local file

                        
ffmpeg -re -nostdin -i /home/john/samples/test01.mp4 -vcodec libx264 -preset:v ultrafast -acodec aac -vf scale=640:266 -f flv rtmp://yourdomain.com/live/test_640_266 &
                    

The above example will rescale the original video to 640:266 resoltuion. For more information on how to use FFMPEG please check this page https://www.ffmpeg.org