Когда я использую Fluent-Ffmpeg для доступа к Ffmpeg, есть два разных потока, но я этого не хочу - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь транслировать в прямом эфире с помощью IP-камеры rtsp в веб-приложении, которое улучшено с помощью node.js-jsmpeg ([ссылка] https://www.npmjs.com/package/fluent-ffmpeg!), веб-сокет, html5 (canvas).работает, но отсутствует кадр и высокая загрузка ЦП, используемая в потоковом режиме в веб-приложении, и я пытаюсь уменьшить его, чтобы я мог вмешаться в ffmpeg с помощью fluent-ffmpeg, но когда я отслеживаю использование ЦП , я вижу там 2 различных потока, следующих как, и смотрю на скриншотCPU; enter image description here

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. У кого-нибудь есть идея? Спасибо за совет.

...