Help Center Help Center for Tue, 18 Feb 2020 19:18:02 +0000 en-US hourly 1 Step by Step Wed, 01 May 2019 16:42:39 +0000 It’s basic “how-to” when hosts in same local network.

So I would like build this workflow:

I used name “Server” PC and “Encoder” PC for my hosts.

“Server” PC

STEP 1: Download (link) and install the RTMPMiniServer. RUN IT.

STEP 2: press START

Note: if you got error message “Port 1935 not available” then change port in Settings

“yellow” icon means “wait” state (nobody connects to our server yet)

STEP 3: open Preview window

“Encoder” PC

STEP 4: Open any RTMP-encoder. I use OBS on macOS: go to Settings —> Stream: select Custom service and type server and stream key.

STEP 5: press Start Streaming and your encoder starts send RTMP feed to RTMPMiniServer. So let’s go to “Server” PC for check result.

“Server” PC (check result)

On “Server” PC I got this result:

Connect to NDI Workflow

RTMPMiniServer converts incoming RTMP feed to NDI.
So just open any NDI software (vMix, OBS, Wirecast etc) and select NDI source called “MiniServer A- Line 1”.
For example I use “NDI Studio Monitor” from NewTek tools:

select “MiniServer A- Line 1”
]]> 0
User Interface Guide Wed, 01 May 2019 18:52:58 +0000

Main Buttons

Line Params

Every Line has params:

Stream Key – type any value (latin chars and digitals). Use it for encoders vMix, OBS etc. 

Input FPS – this field is tip for server. You can use “auto” value. Also you can explicit setup this field if you known this info.

Ignore Audio – use it if you don’t need audio from this source. It allows remove video-audio synchronisation process and save CPU and time. 

Start Delay (ms) – use it for setup start delay. Recommended for use for unstable network – you can add start buffer for more smoothly output. For example if you setup 5 seconds then server starts NDI output only when will has video frames for 5 seconds.
This value should be less or equals to Max.Delay value.

Max.Delay (ms) – use it for limit delay. All input frames go to special buffer and if buffer is full then frame will be dropped. For good network you can setup to 200ms for get real-time output. 
Be aware: delay feature uses buffer in RAM. For example FullHD/25fps will takes ~100Mb in memory for each 1second of delay. So delay for 10 sec requires 1Gb RAM.

Record – use it for dump input feed. By default record saved to user-video folder. For change destination folder see settings.

Notes: you can change this fields on fly (without Stop server). The server will applies new values for next connection to this line.

Processing Control

When encoder (vMix, OBS etc) connects to the server then Line shows “green”-icon and info about processing (this values updates every 3 seconds) :

decoded fps – shows info about decoded fps. For good network it should be same as input fps. For unstable network this value will be jumped. 

in buffer – shows how many frames wait output in buffer. It depends on “Max.Delay” value.

bitrate – shows info about input bitrate.

Disconnect – use it for stop stream. After disconnect the server will ready accept new connection for this line.

Reset buffer – use if for drop all frames from buffer. It allows got real-time.

NDI OFF – use if for pause NDI processing.

Additional params

Decoder : this field allows change h264-decoder for handle input video stream.

Software decoder
– good choice for bitrate under 10Mbs. It allows correct decode all h264 profiles.

Hardware decoder allows decrease CPU usage but more sensitive to h264 profiles. Use HW decoder for hight speed bitrate for get real profit. Be aware: some HW decoders allow only 1 or 2 decode process in same time (it depends on hardware).

HW: video tools – good choice for macOS user.

HW: dxva2 – Windows way for use HW (uses D3D9 video functionality)

HW: d3d11va – other Windows way for use HW (uses D3D11 video functionality) 

Max.threads: how many threads can be allocated for decoding one feed. For example 2 means only two threads will be allocated for decoding input feed. Zero means automatically detected.

Force BirdDog Compatible: check this if you plan use hardware BirdDog NDI decoder.
Explanation: NDI allows use different color space (RGB, I420, NV12, UYVU) . But BirdDog NDI decoder accept only one – UYVU. So this option force on converting to UYVU color space.

Notes: you can change this fields on fly (without Stop server). The server will applies new values for new connections.


Listen Port – TCP port. Default is 1935. Need restart server after change.
Lines – how many lines will the app shows.

]]> 0
Video & Audio Issues Mon, 04 Nov 2019 08:38:58 +0000 Sometimes new clients wrote
1) I seem to be having some troubles with audio-video sync
2) Audio is bad
3) Video is not smoothly

Let me explain reasons and solutions.

Reason 1: wrong FPS detection

By default the app uses “auto” for “Input FPS”. This means the app tries auto detect fps for incoming streaming. If the app do this incorrect then result will be wrong.

setup “auto” FPS detection

Please check “input fps” info during process. It should be same as original FPS.

detected “input fps”

SOLUTION: if you see incorrect detection (for example 30 instead 25 ) then please setup “Input FPS” manually to correct value.

manually setup

Reason 2: heavy stream for your connection

For example: encoder sent 20Mbs stream but Studio has 10Mbs connection only.

You can see real incoming bandwidth in “bitrate” value during processing.

input bitrate value

If “bitrate” value less than it should be (for example 316 Kbs for 5Mbs of original stream) then it means your connection not enough for incoming stream.
SOLUTION: change bitrate setup on encoder-side or call to ISP

Reason 3: unstable connection

Sometimes connection speed can be jumped. Please check “decoded fps”. For good streaming “decoded fps” should be about “input fps”.
For example: if “input fps” is 30fps then “decoded fps” can be jump between 28-32.

If you see “decoded fps” jumps very hard then it means connection is unstable.

SOLUTION: increase Start Delay.

“Start Delay” fills out special buffer before star NDI output. This buffer allows smooth out jumping incoming feed.

Note about “Max Delay”: you can setup it as “Start delay” + 1000.

]]> 0
Proxy Addon Mon, 26 Aug 2019 12:52:46 +0000 ProxyAddon is easy way for accept signal in Studio from Location.
It does not require dedicated IP and port-forwarding manipulation.
Just click and use.

  1. run RTMPMiniServer and press START
  2. Click ProxyAddon icon. It opens “Proxy Addon” window.
  3. press “Connect” for get public address. Use this as RTMP URL.

So for this image full stream address for Line #1 is:


NOTES: ProxyAddon is easy way, but usage of dedicated IP is still preferred way for big studio and heavy traffic.


What is cons and pros of usage proxy addon?
Cons – you don’t need dedicated IP and port-forwarding setup. It’s perfect for using for mobile studios.
Pros – this workflow has 3 participants: Publisher–> Proxy-server –> Studio

instead 2 participants for direct connection (Publisher–>Studio)

Cons and Pros

Where are located proxy servers ?
Now we are providing few public proxy nodes in Europe.

Can I deploy my proxy server?
Yes, you can deploy proxy node on your server and it’s very easy.
For example you can rent VPS from DigitalOcean or Scaleway or AWS and deploy proxy node. Many cloud providers allow hour-rate so you can turn on server only for event. See this guide.

Our Studio in USA has dedicated IP and we happy with RTMPMiniServer. What is advantage of proxy addon we can get?
You can get advantage if your publisher in other country. Proxy node allows solve the “first mile” issue. More detailed explanation see here.

]]> 0
Direct connection from Internet Wed, 01 May 2019 20:01:06 +0000

If you have not public IP or have not ability for port-forwarding then please use other way – ProxyAddon

for accept direct connections from INTERNET (for example from stadium or other country) please check this points:

  1. Your “Studio” has public IP.
    we provide dynamic DNS name like “” . It will be auto linked to this IP.
  2. Router has configuration: all incoming connections from Internet to port 1935 of router transfer to PC with RTMPMiniServer 
    without this rule your router doesn’t known how handle traffic to 1935 port. This called “”Port Forwarding” or “”Virtual Servers”.
    It’s easy and we provide simple instructions for few routers 
router should known how to handle incoming connections

How to check

please read this post about checking.

Router example

Example A: you install RTMPMiniServer on PC with local ip and setup Listen port as 1935. 
So you need setup port forwarding for router: inbound connection to 1935 port send to

Example B: you install RTMPMiniServer on PC with local ip and setup Listen port as 7777.
So you need setup port forwarding for router: inbound connection to 1935 port send to

Many routers called this feature as “Port Forwarding” or “Virtual Servers”.


for ARRIS router
for D-Link router
]]> 0
Direct connection: easy way for check Mon, 03 Jun 2019 07:33:05 +0000 So you did this instruction and now you would like check this.

Step 1
Run RTMPMiniServer and press Start

Step 2
Go to this site
and type your address and port.
In my case it’s and 1935
And press Check.

successful check.

If you have closed port or RTMPMiniServer stopped then you got fail:

check failed (because I stopped RTMPMiniServer)

]]> 0
Custom Proxy Server Mon, 09 Sep 2019 17:53:25 +0000 We provide special docker-image. So you can do this steps:

  1. Rent any Linux server (vps or dedicated). Bandwidth and location make sense. We recommended use Ubuntu or Centos.
  2. Install Docker to host.
  3. Run docker command:
docker pull garaninapps/rms_proxy 

docker run -p=8080:8080 -p=8082:8082 -p=10000-10100:10000-10100 --env ALLOW_PORT_STICK=ON  --restart=always -d garaninapps/rms_proxy


  • This command use pool of 10000 – 10100 ports and allow “sticked” port (see below)
  • We recommended use your owned proxy servers because our servers is public and may be under hight load.
  • Many hosting platforms allow pay on hour of usage, so you can hibernate your server and use only for events.

About “sticked” port
Since version 1.7.2 you can fix used port. For example you can use 10055 always. Just type your custom server as IP:10055

]]> 0
About Start and Max delay Fri, 15 Nov 2019 13:09:38 +0000 In theory frames should be going to RTMPMiniServer with constantly FPS as encoder sent, for example 25 fps. But in real life it’s not true (see image).

We add “Buffer” to smooth out the situation. Buffer is place where frames will be ordering before go to NDI output.

Start delay – how many frames should be waited before start NDI output.
If you setup it to 1000ms then it means 25 frames for 25fps or 30 frames for 30fps.

Max. delay – how many frames allows be in buffer. You can setup to 2000ms. So it means buffer can accommodate 50 frames for 25 fps stream.
If 51 frames will be arrive at moment (because network may be “jump”) then frame number 51 will be dropped.

Common recommendation: for unstable network use Start Buffer at least 1000ms and use Max.Buffer as “Start + 2000ms” (at least).

]]> 0
Remote Control Wed, 14 Aug 2019 07:06:37 +0000 // this feature available in version 1.6 BETA

Go to top menu –> Tools –> Remote Control. It opens “Remote Control” window.

Remote Control starts lite web-server and you can use browser for monitoring RTMPMiniServer.

Listen IP: tells the server to listen for incoming connections on this IP address.  If value is, the server will listen on all network interfaces.
For example: If value is then the server allows connection from localhost only.

Web Port: port for listening.

Secret Key: it’s like password. Use any alpha-numeric value.

Advanced usage: API

Remote Control server provides simple web API. So you can read info.

NOTES: example of usage see at INSTALLED_FOLDER/WEB/code.js

Common params:

any requests should includes params “tick” and “sign”.

tick: any integer value. Should be growth: next request value greater previous value. You can use timestamp for this.

sign: md5 hash from string “tick:secret_key

NOTES: if secret key is empty then you can omit tick and sign params, but be aware – it’s not good practice.

GET /api/v1/read
returns info about lines as JSON:
[ line_info, line_info….]
where line_info is
line – int , line number
decode_fps – int,
in_buffer – int,
bitrate – int,
decoder_type – string, HW|SW,
source_fps – int,
start_buffer – int,
max_buffer – int,
frame_width – int,
frame_height – int,
ignore_audio – bool,
record – bool

POST /api/v1/_LINE_NUM_/disconnect
example: /api/v1/1/disconnect
call disconnect for line with _LINE_NUM_.

]]> 0
Trial Info Thu, 02 May 2019 08:00:34 +0000 TRY BEFORE BUY

Trial version has few limitations:

  • expired after 21 days
  • after few minutes trial image will be shown

]]> 0