【发布时间】:2017-08-24 03:20:13
【问题描述】:
我有一个来自远程网络摄像头的 h.264 数据流。如果我将它保存到一个文件中,我可以在 VLC 中播放它(这意味着数据完好无损)。
最终目标是将此流转换为虚拟网络摄像头。环顾四周后,我发现 manyCam 作为一种可能的解决方案 - 因此我想以 MP4 格式在本地 IP 上提供 h.264 数据。
两个问题:
首先,我正在尝试使用 ffmpeg 将 h.264 与 mp4 容器包装起来(使用 fluent-ffmpeg npm 库,将 ffmpeg API 暴露给 Nodejs)。
当我处理静态文件(不是流)时,一切正常。例如`
var ffmpeg = rquire('fluent-ffmpeg')
var readH264 = fs.createReadStream('./vid.h264')
var proc = ffmpeg(readH264).clone().toFormat('mp4').output('./vid.mp4').run()
`
但是当我尝试提供流时 - 它会引发错误“ffmpeg exited with code 1: could not write header for output file..” `
var wrtieMp4 = fs.createWriteStream('./vid.mp4')
var proc = ffmpeg(readH264).clone().toFormat('mp4').output(wrtieMp4).run()`
我怎样才能将它添加到标题..?
第二,我对传输层(rtp,rtsp等)有点困惑。创建 mp4 流之后 - 使用 MIME 类型的视频/mp4 提供流还不够吗?它似乎适用于静态文件。 `
let read = fs.createReadStream('./vid.mp4')
let server = http.createServer(function (req, res) {
res.writeHead(200, {'Content-type': "video/mp4"})
read.pipe(res)
}).listen(9000)
`
【问题讨论】:
标签: node.js video ffmpeg stream rtp