Back to tester
RTMP

RTMP Browser Playback Limits and Conversion Options

Understand why modern browsers cannot directly play RTMP and how RTMP ingest can be converted to HLS, FLV or WebRTC.

Browser direct play
Needs conversion
Pipeline role
Ingest/origin protocol
Browser result
Not directly playable in modern browsers

Short answer

RTMP is now mainly an ingest or origin protocol, not a modern browser playback URL. The correct web approach is server ingest first, then output HLS, FLV or WebRTC.

Where it sits in a video pipeline

RTMP used to rely on Flash for web playback. After Flash disappeared, browsers no longer provide RTMP playback.

In live systems, it is commonly used for OBS ingest, platform ingest or legacy contribution devices.

How to use it in a browser project

When the frontend sees rtmp://, classify it as a source URL and ask the user to test the converted playback URL.

Do not present an RTMP page as direct playback; that misleads users.

What the server has to do

The server needs an RTMP server or media server to receive the stream, then remux it to HLS/HTTP-FLV or feed a WebRTC gateway.

If the source codecs are not browser-friendly, transcode to safer combinations such as H.264/AAC.

Common development scenarios

  • OBS streaming, live platform ingest and legacy encoder compatibility.
  • Good as an input side, not as the browser playback side.

Debugging order

  • Separate ingest URLs from playback URLs. A working ingest URL does not mean browsers can play it.
  • After conversion to HLS or FLV, check CORS, MIME type, HTTPS mixed content and codecs.

Recommended conversion paths

  • Compatibility first: RTMP -> HLS.
  • Low-latency preview: RTMP -> HTTP-FLV/WS-FLV.
  • Lower latency: RTMP -> WebRTC.

Minimum usable implementation

  • Frontend: explain RTMP is not directly playable and provide a test input for the converted URL.
  • Backend: receive RTMP ingest and generate HLS/FLV/WebRTC playback URLs.

Developer decision rule

RTMP should be judged by its role in the delivery chain, not by the protocol name alone. Browser result: Not directly playable in modern browsers. Before promising playback, confirm the source type, whether a server conversion is required, CORS and HTTPS policy, codec support and the latency target.

Related protocols