桌面直播
只能算是一个基于ffmpeg和jsmpeg的应用。
首先需要安装的内容有:ffmpeg、jsmpeg、ws模块
安装过程reference:https://my.oschina.net/chengpengvb/blog/1832469 (ffmpeg建议在官网装最新的可执行版本)
直接把下载下来的jsmpeg的代码引入网站后端
var STREAM_SECRET = 'supersecret',
STREAM_PORT = 8081,
WEBSOCKET_PORT = 8082,
RECORD_STREAM = false;
// Websocket Server
var socketServer = new WebSocket.Server({
port: WEBSOCKET_PORT, perMessageDeflate: false});
socketServer.connectionCount = 0;
socketServer.on('connection', function(socket, upgradeReq) {
socketServer.connectionCount++;
console.log(
'New WebSocket Connection: ',
(upgradeReq || socket.upgradeReq).socket.remoteAddress,
(upgradeReq || socket.upgradeReq).headers['user-agent'],
'('+socketServer.connectionCount+' total)'
);
socket.on('close', function(code, message){
socketServer.connectionCount--;
console.log(
'Disconnected WebSocket ('+socketServer.connectionCount+' total)'
);
});
});
socketServer.broadcast = function(data) {
socketServer.clients.forEach(function each(client) {
if (client.readyState === WebSocket.OPEN) {
client.send(data);
}
});
};
// HTTP Server to accept incomming MPEG-TS Stream from ffmpeg
var streamServer = http.createServer( function(request, response) {
var params = request.url.substr(1).split('/');
if (params[0] !== STREAM_SECRET) {
console.log(
'Failed Stream Connection: '+ request.socket.remoteAddress + ':' +
request.socket.remotePort + ' - wrong secret.'
);
response.end();
}
response.connection.set