Skip to content

A javascript RTMP client for browsers

License

Notifications You must be signed in to change notification settings

aeinstein/webrtmp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WebRTMP

A HTML5 Flash Video (RTMP) Player written in pure JavaScript without Flash. LONG LIVE RTMP ;-)

For those who really miss RTMP in Browser, cause HLS sucks. This will be a part of avideo.

heavily inspired bei bilibi`s FlvPlayer

Introduction

This project consists of 2 parts.

  • Websockify for wrapping TCP in WSS
  • WebRTMP Client library

Demo

https://bunkertv.org/webrtmp/index.html

Features

  • RTMP container with H.264 + AAC / MP3 codec playback
  • RTMP over Websocket low latency live stream playback <= 3 sec.
  • Compatible with Chrome, FireFox, Safari 10, IE11 and Edge
  • Extremely low overhead and hardware accelerated by your browser!
  • Use of promises

Getting Started

ClientSide:

<script src="dist/webrtmp.js"></script>
<video id="videoElement"></video>
<script>
    const videoElement = document.getElementById('videoElement');
    
    const rtmp_player = webrtmpjs.createWebRTMP();
    
    rtmp_player.attachMediaElement(videoElement);

    rtmp_player.open(document.location.host, 9001).then(()=>{   // Host, Port of WebRTMP Proxy
        rtmp_player.connect("demo").then(()=>{                  // Application name  
            rtmp_player.play("your streanname").then(()=>{      // Stream name
                console.log("playing");
            })
        })
    })
</script>

ServerSide:

Prerequisites:

apt install websockify

Launch WSS RTMP-Wrapper (Don't forget to get certificates)

websockify -D --cert fullchain.pem --key privkey.pem --ssl-only 9001 127.0.0.1:1935

TODO

a lot of error and exception handling

Design

serverSide

arch