JSMpeg 项目地址:https://github.com/phoboslab/jsmpeg
JSMpeg 是一种采用 JavaScript 解码音视频的技术,可用于视频直播或点播。
要实现直播,还需要 websocket 实现一个实时传输流的服务。FFmpeg 支持很多直播流格式,但是不支持 websocket。解决方案是用 FFmpeg 开一个HTTP 直播流,再开一个 Node 服务转一下。
具体流程是:用 NodeJs 监听 FFmpeg 的 HTTP 直播地址,将收到的数据通过 Websocket 广播给所有的客户端。
它的核心代码如下:
//HTTP Server to accept incomming MPEG Stream var streamServer = require(‘http‘).createServer( function(request, response) { request.on(‘data‘, function(data){ socketServer.broadcast(data, {binary:true}); }); }).listen(STREAM_PORT);
Websocket 代码在这里:https://github.com/phoboslab/jsmpeg/blob/master/websocket-relay.js
NodeJS执行命令:
node websocket-relay.js supersecret 8081 8082
上面命令中的三个参数分别是服务标识、HTTP端口、WS端口。
使用FFmpeg 推送 HTTP 视频流执行命令:
ffmpeg -rtsp_transport tcp -thread_queue_size 32768 -i rtsp://{账号}:{密码}@{IP}:554/h264/ch1/main/av_stream -q 0 -f mpegts -codec:v mpeg1video -s 1366x768 http://{IP}:8081/supersecret