需求是有一个海康的摄像头,需要在浏览器预览画面。
现在是内网弄了一台服务器把 rtsp 转成 webrtc 去播放的,但是这样上线的时候就需要专门开一台转码推流的服务器,而且带宽肯定也要几十 M 起步,一个月最少估计也要几千块。
我看 ffmpeg 有 webassembly 版本,就是能不能在前端直接通过 ffmpeg 去转码,然后前端直接播放呢。
有没有相关实践的大佬给点建议🙏
1
newmlp 2023-04-04 10:22:07 +08:00
rtsp 建立在 tcp 或 udp 协议上,浏览器无法访问 socket ,所以不能
|
2
opengps 2023-04-04 10:23:58 +08:00
把运行浏览器的电脑一并当作服务器用呢?有什么困难吗
|
3
lower 2023-04-04 10:26:18 +08:00
vlc 插件 搞起;就是只能 ie 内核😂
|
4
learningman 2023-04-04 10:27:14 +08:00 via Android 2
|
5
brader 2023-04-04 10:27:41 +08:00
我有几个构想,看你能不能接受:
想法一:用 GO 之类的语言写一个简单的客户端.exe 软件,接受数据然后并开个端口为客户端服务,每次就让客户点击启动一个这个软件服务就好。 方法二:写一个浏览器扩展,让客户安装这个扩展。 |
6
op351 2023-04-04 10:28:12 +08:00
做插件应该是可行的
我记得很早之前监控厂商就有在 c 端装插件 然后实现在浏览器里看摄像头流的功能 纯粹的的 b 端不装插件应该不行 浏览器只是浏览器 不是完整的 node 环境 |
7
leetom 2023-04-04 10:54:21 +08:00
关注一下,我们目前是在客户端安装 VLC 然后关联协议,点击按钮打开本地播放器播。
我们系统是内部使用,所以这样没啥问题。 楼主可以看一下摄像头有没有辅流,一般辅流都是支持 http 协议的 |
8
xhcnb 2023-04-04 11:06:39 +08:00
关注一下, 直接访问摄像头的 rtsp 也需要带宽吧, 实在不行弄一个树莓派和摄像头绑一起吧
|
9
superliy 2023-04-04 11:13:03 +08:00
大华的录像机有 web 管理界面的,web 管理界面可以看视频,我看了一下实现是 rtsp on websocket ,理论上是可以做到的,只是摄像头是否支持 rtsp on websocket 就不知道了,也可以买个录像机
|
10
si 2023-04-04 11:19:05 +08:00
不用插件和软件,前端应该不能直接使用 TCP 或 UDP 吧。
|
11
pecokie 2023-04-04 11:28:21 +08:00
海康的摄像头支持 GB28181 ,理论上通过 SIP 信令播控制放后,浏览器通过 WebRTC 接受 UDP 码流然后前端来解码播放
|
12
xwayway 2023-04-04 11:48:33 +08:00
姑且不论通信协议问题,就单说端到端的通信,如果不是在同一个局域网内,是不是得有个公网地址,这样的话,一台服务器也是必不可少的。
|
13
yekern 2023-04-04 11:49:26 +08:00
在很久很久很久很久以前, IE 时代有一款播放器支持浏览器播放 他的名字叫 Realplayer 支持 rtsp 和 rmvb 等常见格式
|
14
lwep 2023-04-04 11:53:47 +08:00
有的摄像头能推 RTMP 的流,似乎 RTMP 能浏览器直接播放
|
15
thinkershare 2023-04-04 12:00:09 +08:00
这是一条死路,别折腾了,靠谱就转换为 WebRTC, 不靠谱就用本机插件(海康官方就是这么干的), 延迟没要求就是要 hls ,所有基于裸 tcp 协议的浏览器上都没戏(兼容性,稳定性都搞不定), 我以前浪费过一个月在这个上面,如果行得通,海康官方就已经提供了,我和海康的技术人员沟通过。
|
16
yplam 2023-04-04 13:01:06 +08:00 via Android
摄像头指定要海康的话可以卖多一套设备丢客户内网做 rtsp 转 webrtc ,打洞成功就不耗流量,打洞不成功按流量收维护费也很合理
|
18
crazytudou 2023-04-04 13:30:55 +08:00
之前也是海康监控遇到这需求,没找到能直接在浏览器播放 rtsp ,我也是专门搞了台服务器转成 rtmp ,ffmpeg+jsmpeg ,websocket 方式在 web 客户端播放。
吐槽下海康给的 SDK 是真的垃圾,web 用插件只能限 ie 用,没插件也限制浏览器,有等没。 |
20
lovelylain 2023-04-04 13:43:29 +08:00 via Android 1
浏览器直接播放 rtsp 是做不到的,必须转码,可以转 webrtc 也可以 mse jsmpeg 等,各有优缺点,mse 基于 websocket 简单方便但是不支持 ios ,jsmpeg 是图片没有声音,webrtc 数据走 udp 复杂一点。都不用自己开发,跑个 go2rtc 就行。
|
21
NessajCN 2023-04-04 13:58:52 +08:00
ffmpeg 的确有 wasm 版本,但你要用 ffmpeg 转码的前提是首先要有这条码流
因此你需要开一个服务,让摄像头可以把码流推到这个服务上, 一般海康会给配一台 nvr 就是用来开这个 rtsp 服务接收推流的。 如果你只有一台摄像头,那你无论如何都必须自己开这么个服务,然后去摄像头那里设置好把流推到你自己开的服务上(因此需要可访问的固定 ip 或域名)。这一步无论如何也不可能在客户的机子或浏览器上完成。 所以还是老实点整服务器吧。 |
22
ysc3839 2023-04-04 17:15:11 +08:00 via Android
@bv WebSocket 当然可以,但是楼主的目的是节省流量。楼主说的“转码”其实只是转封装,不吃 CPU/GPU 编解码,吃的是网络流量。
|
23
DCELL 2023-04-04 17:29:07 +08:00
RTSP 推流服务其实还是简单的,据我了解现代浏览器都不支持 RTSP 流
|
24
myleszzZ 2023-04-04 17:32:03 +08:00
感觉遇到了同样的事情,吐槽一下我们现在做的方式,后端用 zlmediakit 转码,负责将 rtsp 流转换成 flv,内网走 frp 通道; H265 + 1080P ,前端换各种组件播放,最后花钱买了一个 js 播放器,才勉强上线。
建议 1 、对画质没要求,摄像头降低清晰度到 720P 2 、NVR 存储空间够用,改成 H264 |
25
mankismi 2023-04-04 17:49:45 +08:00
|
26
Swimming 2023-04-04 18:10:59 +08:00 via Android
今天给客户装了 4 个 800 万像素的,他说要做 RTSP ,我们只管装,他自己在录像机配置,然后找电信拉专线去了……
|
27
kukat 2023-04-05 00:02:49 +08:00
Wasm 应该可以
|
28
whi147 2023-04-05 00:29:37 +08:00 via iPhone
@thinkershare 我用 wasm 搞定了,就是软解同时只能解一路
|
30
hanguofu 2023-04-05 01:43:59 +08:00 via Android
谢谢推荐!
|
31
luohuanlh 2023-04-05 07:01:57 +08:00
请问,如果有 500 多路海康视频,转 web 播放,除了 ffmpeg+zlmediakit ,还有更合适的方案不?
|
36
suke119 2023-04-06 09:19:01 +08:00
|
37
suke119 2023-04-06 09:21:45 +08:00
还有就是 wasm 方案也不得行,浏览器没法提供 tcp/udp 裸流的,所有 over
|