Stream realtime h264 video directly to the browser. Comes with a browser player, and streaming server. Based of h264-live-player that uses Broadway decoder. Ideal for for Raspberry pi cam streaming.
const AvcServer = require('ws-avc-player/lib/server')
const WebSocketServer = require('uws').Server
const wss = new WebSocketServer({ port: 3333 })
const avcServer = new AvcServer(wss, 640, 480)
avcServer.setVideoStream(h264Stream)
More detailed in example/index.js
<html>
<body>
<!-- define the canvas -->
<canvas id='cam' style="width:100%; height:75vw;">
<!-- provide WSAvcPlayer -->
<script type="text/javascript" src="lib/WSAvcPlayer.js" />
<script type="text/javascript">
var canvas = document.getElementById('cam')
// Create h264 player
var wsavc = new WSAvcPlayer(canvas, "webgl", 1, 35);
wsavc.connect("ws://" + document.location.host+":3333");
</script>
</body>
</html>
More detailed in example/html/index.html
git clone https://github.com/matijagaspar/ws-avc-player
cd ws-avc-player
npm install
npm run example
# browse to http://127.0.0.1:8080/ for a demo player
then run
ffmpeg -framerate 30 -video_size 640x480 -f [driver] -i [device] -vcodec libx264 -vprofile baseline -b:v 500k -bufsize 600k -tune zerolatency -pix_fmt yuv420p -r 15 -g 30 -f rawvideo tcp://localhost:5000
or
raspivid -t 0 -w 640 -h 480 -hf -fps 15 -o - | nc localhost 5000
alternatively run:
npm run example raspivid
It will automatically run raspivid too
- Decoder as worker
- More docs
- More cleanup
- Audio
Ability to change video resolution or better parse sps/pps