我正在尝试使用FFmpeg和hapi.js创建某种代理服务器以获取IP摄像机源并通过http传输它 最重要的是,无论是否被监视,都必须存在于http-server路由之外。所以我创建这样的提要
let ffmpeg = require('fluent-ffmpeg')
let ffproc = ffmpeg()
.input('some_link')
.format('flv')
.videoCodec('copy')
.noAudio()
let feed = ffproc.pipe({end: true})
和http-server
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或ffplay获取了我的Feed,但在我断开ffproc
结束之后,我也无法在以后重新连接。
我已尝试克隆或管道流,但它没有帮助,进程仍然存在,但ffplay显示错误'处理输入时找到的无效数据'而不是Feed。 koa
服务器显示相同的行为,express
和fastify
我无法正常工作。
我做错了什么?
答案 0 :(得分:0)
澄清一下:您的问题是,在断开通过vlc或ffplay检查您的Feed后,您之后无法重新连接?
如果您需要在服务器路径之外连续运行流,那么您应该将Feed创建移动到完全独立的流程,并根据需要将服务器绑定到该流程输出。可能发生的情况是,当您断开Feed变量的范围正在发生变化,并且它曾经不再是全局可访问的,因此当您尝试重新连接时,服务器无法调用它。