NodeJS/ExpressJS:代理HTTP视频流(来自VLC)



使用 VLC 2.2.1,我创建了一个由名为服务器的计算机托管的网络摄像头的 HTTP 流。

在另一台计算机,客户端上,如果我打开vlc并打开网络流http://server:8080我可以完美地看到网络摄像头视频。

HTTP流的Wireshark捕获如下所示:

GET / HTTP/1.1
Host: server:8080
User-Agent: VLC/2.2.0-rc2 LibVLC/2.2.0-rc2
Range: bytes=0-
Connection: close
Icy-MetaData: 1
HTTP/1.0 200 OK
Content-type: application/octet-stream
Cache-Control: no-cache
FLV.......................
onMetaData.......duration...........width.@.........height.@~.......
videodatarate.@.@.......videocodecid.@.........encoder..
Lavf56.1.0..filesize....
etc...

客户端计算机上,我有一个在 NodeJS v5 和 Express v3 下运行的 API,我希望有一个类似 : http://client/video 的 url 作为 http://server:8080 的代理,因此用户只能看到一个端点。

我看到很少有 npm 模块声称充当"代理",但由于内容(实时视频流)的特殊性质,我不确定我应该做什么。

var express = require('express')
var fetch = require('node-fetch')
var app = express()
app.get('/video', (req, res) => {
  fetch('http://server:8080')
    .then(r => r.body)
    .then(s => {
      s.pipe(res)
    })
    .catch(e => {
      res.status(500).send('Error.')
    })
})
app.listen(80)

要打开端口 80,您需要是 root,因此请使用 sudo

相关内容

  • 没有找到相关文章

最新更新