繁体   English   中英

FFmpeg Node.js实时Web流

[英]FFmpeg Node.js live web streaming

我正在尝试创建某种代理服务器,以获取IP摄像机供稿,并使用FFmpeg和hapi.js通过HTTP将其流式传输。主要是必须在HTTP服务器路由之外存在,而不管其是否受到监视。 所以我像这样创建提要

let ffmpeg = require('fluent-ffmpeg')

let ffproc = ffmpeg()
    .input('some_link')
    .format('flv')
    .videoCodec('copy')
    .noAudio()


  let feed = ffproc.pipe({end: true})

和http服务器

const Hapi = require('hapi')

const server = new Hapi.Server({
  host: 'localhost',
  port: 3000
})

server.route({
  method: 'GET',
  path: '/live',
  handler: function (request, h) {
      return feed
  }
})

server.start((err) => {   
  console.log(`Server running at: ${server.info.uri}`)
})

我已经使用vlc或ffproc了供稿,但是在断开ffproc连接ffproc结束了,因此以后无法重新连接。 我尝试克隆或通过管道传输流,但是它无济于事,进程仍然存在,但ffplay显示错误“处理输入时发现无效数据”而不是供稿。 koa服务器显示出相同的行为, expressfastify我没有设法工作。

我究竟做错了什么?

需要说明的是:您的问题是,在通过vlc或ffplay断开检查Feed的连接后,之后是否无法重新连接?

如果您需要流在服务器路由之外连续运行,则应将提要创建移至一个完全独立的进程,并根据需要将服务器绑定到该进程输出中。 可能发生的情况是,当您断开feed变量的范围时,它的范围正在更改,并且不再可以从全局访问它,因此服务器在尝试重新连接时无法调用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM