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

时间:2016-03-22 18:36:21

标签: javascript node.js express proxy vlc

使用VLC 2.2.1,我创建了一个由名为 server 的计算机托管的网络摄像头的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,我希望有一个像http://client/video这样的网址作为http://server:8080的代理,这样用户只能看到一个端点。

我看到很少有npm模块声称自己是“代理”,但由于内容的特殊性(直播视频流),我不确定应该做什么。

1 个答案:

答案 0 :(得分:0)

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

运行