Я пытаюсь транслировать в прямом эфире с помощью IP-камеры rtsp в веб-приложении, которое улучшено с помощью node.js-jsmpeg ([ссылка] https://www.npmjs.com/package/fluent-ffmpeg!), веб-сокет, html5 (canvas).работает, но отсутствует кадр и высокая загрузка ЦП, используемая в потоковом режиме в веб-приложении, и я пытаюсь уменьшить его, чтобы я мог вмешаться в ffmpeg с помощью fluent-ffmpeg, но когда я отслеживаю использование ЦП , я вижу там 2 различных потока, следующих как, и смотрю на скриншотCPU;
ffmpeg -rtsp_trasport tcp -i rtsp: //10.6.0.225 -f mpeg1video - обрабатывается jsmpeg и canvas /html5 index.html
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<div><canvas id="videoCanvas" width="640" height="360"></canvas></div>
<!-->div><canvas id="videoCanvas2" width="640" height="360"></canvas></div-->
<script type="text/javascript" src="jsLib/jsmpeg.js"></script>
<script type="text/javascript" src="jsLib/ffmpegUtil.js"></script>
<script type="text/javascript">
var canvas = document.getElementById('videoCanvas');
var ws = new WebSocket("ws://10.6.0.206:9999")
var player = new jsmpeg(ws, {canvas:canvas, autoplay:true,audio:false,loop: true});
</script>
<body>
</body>
</html>
другой / usr / bin / ffmpeg -i rtsp: //10.6.0.225 -y out.ts работаетследующий фрагмент кода в app.js
Stream = require('node-rtsp-stream');
stream = new Stream({
name: 'name',
streamUrl: 'rtsp://10.6.0.225',
wsPort: 9999
});
var ffmpeg = require('fluent-ffmpeg');
var proc = new ffmpeg();
proc
.addInput('rtsp://10.6.0.225')
.on('start', function(ffmpegCommand) {
/// log something maybe
console.log('start-->'+ffmpegCommand)
})
.on('progress', function(data) {
/// do stuff with progress data if you want
console.log('progress-->'+data)
})
.on('end', function() {
/// encoding is complete, so callback or move on at this point
console.log('end-->')
})
.on('error', function(error) {
/// error handling
console.log('error-->'+error)
})
.output('out.ts')
.run();
, и тогда я не хочу, чтобы там были два разных потока команд ffmpeg. У кого-нибудь есть идея? Спасибо за совет.