Real-Time Messaging Protocol (RTMP) is a popular streaming protocol that is used with other technologies like WebRTC and HTTP-based streaming protocols. It operates over a range of different transport protocols, including TCP and HTTP. Due to it's popularity in on-demand streaming and live streaming scenarios, it is often used for broadcasting live events, webinars, and video-on-demand services.
In a RTMP stream, to minimize the latency during the live broadcast, it is recommended to have certain settings enable to avoid issues such as freezing/stuttering in the playback stream. If the settings are not proper, parameters such as the video resolution, FPS, audio/video jitter may get affected leading to A/V sync issues, delayed and freezing stream.
Let's take an example of OBS and try to publish a RTMP stream:
1. Select the Millicast RTMP stream and add the Server and key (please refer to this documentation for details)
2. In the output settings, the main parameters to set are as follows:
Encoder - The recommended settings is NVIDIA NVENC H.264 encoder. If you do not have the NVIDIA NVENC H.264 encoder available, we recommend setting the Rate Control to
CBR and the profile to
x264 options - This setting is very important. Here you should add bframes = 0. B-frames contribute to the compression efficiency of the video stream. B-frames are a type of video frame that can be predicted from both previous frames (P-frames) and future frames (I-frames or P-frames). When configuring B-frame settings for an RTMP stream, you need to balance these factors based on your specific use case. Since low latency is crucial in a live stream, you need to reduce the number of B-frames or disable them entirely.
Please check out our recommended RTMP encoder settings for OBS and VMIX here.
- Streaming API
Third Party Reference