fatedier / frp

A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.
Apache License 2.0
81.43k stars 12.82k forks source link

请问如何穿透相机web,并且能看到视频画面 #2300

Closed liwang54321 closed 3 years ago

liwang54321 commented 3 years ago

比方说穿透相机的web界面,界面里面带有视频预览,用http进行穿透后,只能看到web界面,但是看不到视频预览,请问这个要怎么配置呢

zsinba commented 3 years ago

这种场景我做过. 在相机里跑FRPC,然后通过HTTPS连接过去,这个能跑出来 .我尝试过天文相机(QHYCCD)的,也尝试过编码器(海思的板子). 可以从相机里拉flv流,然后播放.

缺点:

  1. 你要把frpc放在相机里自启动,如果 没有网络,他要一直监听着等网络来了马上启动
  2. 相机的板子如果配置一般,可能会卡死
  3. frpc更新不方便,因为要放程序进去,更新也只能远程ssh过去更新
  4. 使用frp穿透过去的图像,并发超过三个就开始卡了,这是网络和硬件能力的原因.

我对这个场景的应用研究是几年前的事情 ,当时还没有FRP的时候,我使用Ngrok就开始使用这种方式. 后来,我放弃了Ngrok,两个原因一是他是C写的,很难排错,二来他2.0不开源了. 再后来(2019)年开始,使用FRP来做硬件反向连接和远程设备影像, 再进一步的做法是FRP配置CDN一起来加大并发,这样就解决了多人观看的问题了.

zsinba commented 3 years ago

不是很麻烦,挺好用的. 而且这应该是物联网上面的一个趋势.

daQzi commented 3 years ago

不是很麻烦,挺好用的。 而且这应该是物联网上面的一个趋势。

您好 我们最近也在研究这个 只是相机配置不太高 针对frp客户端跑在相机内部总是会出现卡死的情况 这种情况下您那边有什么解决方案吗?

daQzi commented 3 years ago

比方说穿透相机的web界面,界面里面带有视频预览,用http进行穿透后,只能看到web界面,但是看不到视频预览,请问这个要怎么配置呢 我们视频是走的websocker 走的是tcp的穿透 但是这样有一个缺点 就是 不稳定容易出现跳帧 而且对服务端的带宽要求特别高

zsinba commented 3 years ago

不是很麻烦,挺好用的。 而且这应该是物联网上面的一个趋势。

您好 我们最近也在研究这个 只是相机配置不太高 针对frp客户端跑在相机内部总是会出现卡死的情况 这种情况下您那边有什么解决方案吗?

FRP占用的资源应该很低的。 只要能跑起来,卡死的情况原因可能是其他原因。 FRP解决的是内网穿透的事情 ,仅是流量穿透。如果相机不能跑,是否能在相机的内网里,使用其他的设备来跑?

zsinba commented 3 years ago

如果有多个相机做监控的话,ispy技术就比较好,ispyconnect.com

这个是基于流媒体的, 一般相机跑不起来这个吧。如果是反射RTMP,RTSP,WEBRTC等方式走流程,相机还是无法穿透,这个方案比较适合有一定二次开发能力的相机,或者相机本身有自己的外发协议的。感觉不是很合适传统的相机。

zsinba commented 3 years ago

比方说穿透相机的web界面,界面里面带有视频预览,用http进行穿透后,只能看到web界面,但是看不到视频预览,请问这个要怎么配置呢 我们视频是走的websocker 走的是tcp的穿透 但是这样有一个缺点 就是 不稳定容易出现跳帧 而且对服务端的带宽要求特别高

走WEBSOCKET转发应该没问题的呀,还是TCP转发,我有一台电脑 使用的IPMI,就是走的WEBSOCKT转发,可以的。

zsinba commented 3 years ago

出现跳帧,估计是因为带宽的原因。 你直接WEBSOCKET传输, 同有压缩视频流,这带宽是比较大, 如果能出来H264(5),VP8(9)这样的流,可以解决这个问题。 另外,你说服务器带宽要求比较高,这应该是同一个原因,视频流是裸流出来的,肯定是比较大。 你相机能跑FFMPEG吗?

daQzi commented 3 years ago

出现跳帧,估计是因为带宽的原因。 你直接WEBSOCKET传输, 同有压缩视频流,这带宽是比较大, 如果能出来H264(5),VP8(9)这样的流,可以解决这个问题。 另外,你说服务器带宽要求比较高,这应该是同一个原因,视频流是裸流出来的,肯定是比较大。 你相机能跑FFMPEG吗?

我们现在没有移植 这个,我们走的websocket mjpeg 直接走的图片流

zsinba commented 3 years ago

出现跳帧,估计是因为带宽的原因。 你直接WEBSOCKET传输, 同有压缩视频流,这带宽是比较大, 如果能出来H264(5),VP8(9)这样的流,可以解决这个问题。 另外,你说服务器带宽要求比较高,这应该是同一个原因,视频流是裸流出来的,肯定是比较大。 你相机能跑FFMPEG吗?

我们现在没有移植 这个,我们走的websocket mjpeg 直接走的图片流

mjpeg肯定会跳, 你想, 一张图片就算是50KB(大B) , 一秒传10张, 500KB,那就是4M的带宽了。

相当于每一张图片都是I帧, 而且你是相机,肯定不只50KB的大小。

zsinba commented 3 years ago

你可以考虑外加一个小硬件,海思芯片的编码器。 相机出来 的图片1080P也只要2M带宽也能传了。 编码器成本大概500块,好处是可以看高清。

github-actions[bot] commented 3 years ago

Issues go stale after 45d of inactivity. Stale issues rot after an additional 10d of inactivity and eventually close.