I need help streaming with Nodejs and Socket.io. I am using the rtsp-ffmpeg library to perform the stream. I was able to execute it by transmitting in img format according to the specific documentation itself, but I can not send an mp4 even after setting the correct parameter in the library ( link )
const app = require('express')()
, server = require('http').Server(app)
, io = require('socket.io').listen(server)
, rtsp = require('./lib/rtsp-ffmpeg');
// usar rtsp = require('rtsp-ffmpeg') se caso tiver instalado o pacote
server.listen(6147, function(){
console.log('Servidor executando em localhost:6147');
});
var uri = 'rtsp://mpv.cdn3.bigCDN.com:554/bigCDN/definst/mp4:bigbuckbunnyiphone_400.mp4'
, stream = new rtsp.FFMpeg({input: uri, resolution: '320x240', quality: 3});
io.on('connection', function(socket) {
var pipeStream = function(data) {
console.log('Client has connected to the server!')
socket.emit('data', data.toString('base64'));
};
stream.on('data', pipeStream);
socket.on('disconnect', function() {
stream.removeListener('data', pipeStream);
});
});
app.get('/', function (req, res) {
res.sendFile(__dirname + '/index.html');
});
This is HTML
<html>
<head>
<title></title>
</head>
<body>
<video id="video" controls autoplay autobuffer>
<source id="conteudo">
</video>
<script src="/socket.io/socket.io.js"></script>
<script>
var video = document.getElementById('conteudo'),
socket = io('');
socket.on('data', function(data) {
video.src = 'data:video/mp4;base64,' + data;
});
</script>
</body>
Package.json
{
"name": "VideoStream",
"version": "0.1.0",
"description": "A real-time media player",
"repository": "",
"dependencies": {
"express": "4",
"socket.io": "^1.4",
"jade" : "0.28.x"
},
"author": "Marco Gorak"
}