Преобразование видео в реальном времени с использованием nodejs и ffmpeg
Я пытаюсь создать очень простое преобразование видео на стороне сервера, используя ffmpeg и nodejs. Пока у меня есть 2 UDP-сервера, один для преобразования видеовхода, второй для прослушивания преобразованного видео и передачи его в веб-сокет.
Я создал один UDP-сервер, на который приходит поток и преобразует видеовход, вызывая ffmpeg. Затем второй UDP-сервер получает преобразованное видео и передает его на сервер веб-сокетов для потоковой передачи видео в браузер.
Проблема, вероятно, со входом в ffmpeg. Я получаю ошибку
_stream_readable.js:476
dest.on('unpipe', onunpipe);
^
TypeError: Object
Код выглядит так:
// Websocket Server
var socketServer = new (require('ws').Server)({port: 8081});
socketServer.on('connection', function(socket) {
socket.on('close', function(code, message){
console.log( 'Disconnected WebSocket ('+socketServer.clients.length+' total)' );
});
});
socketServer.broadcast = function(data, opts) {
for( var i in this.clients ) {
this.clients[i].send(data, opts);
}
};
// UDP Server
var udpServer = require("dgram").createSocket("udp4");
udpServer.on("message", function(msg, rinfo) {
socketServer.broadcast(msg, {binary:true});
console.log("server got: " + msg + " from " + rinfo.address + ":" + rinfo.port);
});
udpServer.on("listening", function() {
var address = udpServer.address();
console.log("server listening " + address.address + ":" + address.port);
});
udpServer.bind(8082);
// UDP Server for stream conversion
var udpServer2 = require("dgram").createSocket("udp4");
udpServer2.on("message", function(msg, rinfo) {
// ********** THIS IS WHERE ERROR OCCURS **************
var ffmpeg = require('child_process')
.spawn('ffmpeg',['-f','video4linux2','-i','-','-f','mpeg1video','udp://127.0.0.1:8082']);
ffmpeg.stdin.pipe(msg);
});
udpServer2.on("listening", function() {
var address = udpServer2.address();
console.log("server listening " + address.address + ":" + address.port);
});
udpServer2.bind(8083);