2015-05-31 1 views
0

Я использую модуль node-rtsp-stream для потоковой передачи RTSP в web с nodejs. Я потоковый источник RTSP с FFmpeg, например RTSP SOURCE - EXAMPLEFFmpeg Stream RTSP вводит и сохраняет файл в одно и то же время с помощью nodejs

Я знаю, что я могу сохранить один или несколько входы для многих выходов, но я не знаю, есть ли возможность транслировать ввод и сохранить его в файл в то же время без выполнения двух процессов ffmpeg.
на следующем примере я нахожусь в состоянии потока источника RTSP

ffmpeg -i rtsp-url -rtsp_transport tcp -f mpeg1video -b:v 800k -r 30 

На модуле выглядеть:

this.stream = child_process.spawn("ffmpeg", [ "-i", this.url, "-rtsp_transport", "tcp",'-f', 'mpeg1video', '-b:v', '800k', '-r', '30', '-'], { 
     detached: false 
    }); 
    ff =child_process.spawn("ffmpeg", [ "-i", this.url, '-b:v', '800k', '-r', '30', '1.mp4'], { 
     detached: false 
    }); 
    this.inputStreamStarted = true; 
    this.stream.stdout.on('data', function(data) { 
     return self.emit('mpeg1data', data); 
    }); 
    this.stream.stderr.on('data', function(data) { 
     return self.emit('ffmpegError', data); 
    }); 

Как вы можете видеть, я использую два процесс ffmpeg делать то, что я хочу, но Если кто-то столкнулся с этой проблемой и решит ее с помощью одной команды (процесса), я хотел бы получить некоторые предложения. Как передавать RTSP-источник и сохранять его в файл одновременно.

для получения дополнительной информации о модуле я использую: node-rtsp-stream

ответ

0

попробовать код (он будет читать RTSP и сохранить в JPG файл (перезаписать его каждые 3 секунды))

var fs = require('fs'); 
var spawn = require('child_process').spawn; 

var rtspURI = 'rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov'; 
var fps = 1/3; 
//avconv -i rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov \ 
// -r 1/3 -an -y -update 1 test.jpg 
var ffmpeg = spawn('avconv', ['-i',rtspURI,'-r',fps,'-an','-y','-update','1','test.jpg']); 
// var ffmpeg = spawn('avconv', 
// ['-i','rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov', 
// '-r','1/3','-an','-y','-update','1','test.jpg']); 

ffmpeg.stdout.on('data', function (data) { 
    console.log('stdout: ' + data); 
}); 

ffmpeg.stderr.on('data', function (data) { 
    console.log('stderr: ' + data); 
}); 

ffmpeg.on('close', function (code) { 
    console.log('child process exited with code ' + code); 
}); 
+0

вас нужно использовать avconv вместо ffmepg для вышеуказанного кода, но вы также можете использовать ffmpeg, нужно изменить параметры. – Xianlin

 Смежные вопросы

  • Нет связанных вопросов^_^