使用 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