Node.js ffmpeg:实例中未启动视频流

Node.js ffmpeg:实例中未启动视频流,node.js,ffmpeg,video-streaming,Node.js,Ffmpeg,Video Streaming,我已经设置了使用ffmpeg的流式编码。它在我的本地系统中运行得非常好 本地版本 ffmpeg version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2000-2019 the FFmpeg developers built with gcc 7 (Ubuntu 7.3.0-16ubuntu3) gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0 var args = [ '-y',

我已经设置了使用
ffmpeg
的流式编码。它在我的本地系统中运行得非常好

本地版本

ffmpeg version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
var args = [
            '-y',
            '-re',
            '-i', `${filePath}`,
            '-listen', '1',
            '-s', '640x480',
            '-codec:a', 'aac -strict experimental',
            '-b:a', '44.1k',
            '-preset', 'superfast',
            '-r', '15',
            '-b:v', '1000k',
            '-tune', 'zerolatency',
            '-c:a', 'aac',
            '-ar', '44100',
            '-c:v', 'libx264',
            '-f', 'flv', streamURL
  ];                     
  let ffmpeg = spawn(`ffmpeg`, args);
  ffmpeg.on('exit', (statusCode) => {
       console.log("statusCode ::::::::::::::::::::::::::::::::: ", statusCode);
       if (statusCode === 0) {
             console.log('conversion successful')
       }
   })

   ffmpeg.stderr.on('data', (err) => {
      console.log('err:', new String(err))
   })

   ffmpeg.on('close', function () {
      console.log('finished');
   });
实时版本

ffmpeg version 3.4.6 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 7 (GCC)
gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
GCC版本

本地

ffmpeg version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
var args = [
            '-y',
            '-re',
            '-i', `${filePath}`,
            '-listen', '1',
            '-s', '640x480',
            '-codec:a', 'aac -strict experimental',
            '-b:a', '44.1k',
            '-preset', 'superfast',
            '-r', '15',
            '-b:v', '1000k',
            '-tune', 'zerolatency',
            '-c:a', 'aac',
            '-ar', '44100',
            '-c:v', 'libx264',
            '-f', 'flv', streamURL
  ];                     
  let ffmpeg = spawn(`ffmpeg`, args);
  ffmpeg.on('exit', (statusCode) => {
       console.log("statusCode ::::::::::::::::::::::::::::::::: ", statusCode);
       if (statusCode === 0) {
             console.log('conversion successful')
       }
   })

   ffmpeg.stderr.on('data', (err) => {
      console.log('err:', new String(err))
   })

   ffmpeg.on('close', function () {
      console.log('finished');
   });
现场直播

ffmpeg version 3.4.6 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 7 (GCC)
gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
在我的本地计算机中运行良好的代码

ffmpeg version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
var args = [
            '-y',
            '-re',
            '-i', `${filePath}`,
            '-listen', '1',
            '-s', '640x480',
            '-codec:a', 'aac -strict experimental',
            '-b:a', '44.1k',
            '-preset', 'superfast',
            '-r', '15',
            '-b:v', '1000k',
            '-tune', 'zerolatency',
            '-c:a', 'aac',
            '-ar', '44100',
            '-c:v', 'libx264',
            '-f', 'flv', streamURL
  ];                     
  let ffmpeg = spawn(`ffmpeg`, args);
  ffmpeg.on('exit', (statusCode) => {
       console.log("statusCode ::::::::::::::::::::::::::::::::: ", statusCode);
       if (statusCode === 0) {
             console.log('conversion successful')
       }
   })

   ffmpeg.stderr.on('data', (err) => {
      console.log('err:', new String(err))
   })

   ffmpeg.on('close', function () {
      console.log('finished');
   });
错误:

ffmpeg -re -i '{MyS3URL}' -c:v libx264 -preset superfast -tune zerolatency -c:a aac -ar 44100 -f flv rtmp://{{instanceIp}}/live/myStream

err: [String: 'ffmpeg version 3.4.6']
err: [String: ' Copyright (c) 2000-2019 the FFmpeg developers']
err: [String: '\n']
err: [String: '  built with gcc 7 (GCC)\n']
err: [String: '  configuration: \n']
err: [String: '  libavutil      55. 78.100 / 55. 78.100\n']
err: [String: '  libavcodec     57.107.100 / 57.107.100\n']
err: [String: '  libavformat    57. 83.100 / 57. 83.100\n  libavdevice    
57. 10.100 / 57. 10.100\n  libavfilter     6.107.100 /  6.107.100\n  
libswscale      4.  8.100 /  4.  8.100\n  libswresample   2.  9.100 /  
2.  9.100\nUnrecognized option \'tune\'.\nError splitting the argument 
list: Option not found\n']
statusCode :::::::::::::::::::::::::::::::::  1
finished
注意: 正如你所看到的,我已经创建了一个动态URL

另外,我直接得到了statusCode=1。当我在本地术语中粘贴相同的URL并点击回车键时,我的流媒体就开始了


所以问题是为什么它不能在live中工作?

看起来您的live版本没有链接libx264。ffmpeg配置应显示--enable-libx264那么我是否需要将其添加到args的数组中?您需要一个带有libx264的二进制文件。对于linux,从中获取一个对我来说有点困惑。有很多包链接在那里。你能帮我一下吗?找一个名为ffmpeg-git-amd64-static.tar.xzLooks的,就像你的live版本没有链接libx264一样。ffmpeg配置应显示--enable-libx264那么我是否需要将其添加到args的数组中?您需要一个带有libx264的二进制文件。对于linux,从中获取一个对我来说有点困惑。有很多包链接在那里。你能帮我吗?找一个叫ffmpeg-git-amd64-static.tar.xz的