有办法在不经过服务器转码直接在浏览器播放摄像头 rtsp 流吗 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
noobma
V2EX    程序员

有办法在不经过服务器转码直接在浏览器播放摄像头 rtsp 流吗

  •  
  •   noobma 2023-04-04 10:04:14 +08:00 6159 次点击
    这是一个创建于 921 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求是有一个海康的摄像头,需要在浏览器预览画面。

    现在是内网弄了一台服务器把 rtsp 转成 webrtc 去播放的,但是这样上线的时候就需要专门开一台转码推流的服务器,而且带宽肯定也要几十 M 起步,一个月最少估计也要几千块。

    我看 ffmpeg 有 webassembly 版本,就是能不能在前端直接通过 ffmpeg 去转码,然后前端直接播放呢。

    有没有相关实践的大佬给点建议

    37 条回复    2023-04-06 09:21:46 +08:00
    newmlp
        1
    newmlp  
       2023-04-04 10:22:07 +08:00
    rtsp 建立在 tcp 或 udp 协议上,浏览器无法访问 socket ,所以不能
    opengps
        2
    opengps  
       2023-04-04 10:23:58 +08:00
    把运行浏览器的电脑一并当作服务器用呢?有什么困难吗
    lower
        3
    lower  
       2023-04-04 10:26:18 +08:00
    vlc 插件 搞起;就是只能 ie 内核
    learningman
        4
    learningman  
       2023-04-04 10:27:14 +08:00 via Android   2
    brader
        5
    brader  
       2023-04-04 10:27:41 +08:00
    我有几个构想,看你能不能接受:
    想法一:用 GO 之类的语言写一个简单的客户端.exe 软件,接受数据然后并开个端口为客户端服务,每次就让客户点击启动一个这个软件服务就好。
    方法二:写一个浏览器扩展,让客户安装这个扩展。
    op351
        6
    op351  
       2023-04-04 10:28:12 +08:00
    做插件应该是可行的
    我记得很早之前监控厂商就有在 c 端装插件 然后实现在浏览器里看摄像头流的功能
    纯粹的的 b 端不装插件应该不行 浏览器只是浏览器 不是完整的 node 环境
    leetom
        7
    leetom  
       2023-04-04 10:54:21 +08:00
    关注一下,我们目前是在客户端安装 VLC 然后关联协议,点击按钮打开本地播放器播。
    我们系统是内部使用,所以这样没啥问题。

    楼主可以看一下摄像头有没有辅流,一般辅流都是支持 http 协议的
    xhcnb
        8
    xhcnb  
       2023-04-04 11:06:39 +08:00
    关注一下, 直接访问摄像头的 rtsp 也需要带宽吧, 实在不行弄一个树莓派和摄像头绑一起吧
    superliy
        9
    superliy  
       2023-04-04 11:13:03 +08:00
    大华的录像机有 web 管理界面的,web 管理界面可以看视频,我看了一下实现是 rtsp on websocket ,理论上是可以做到的,只是摄像头是否支持 rtsp on websocket 就不知道了,也可以买个录像机
    si
        10
    si  
       2023-04-04 11:19:05 +08:00
    不用插件和软件,前端应该不能直接使用 TCP 或 UDP 吧。
    Iskit
        11
    Iskit  
       2023-04-04 11:28:21 +08:00
    海康的摄像头支持 GB28181 ,理论上通过 SIP 信令播控制放后,浏览器通过 WebRTC 接受 UDP 码流然后前端来解码播放
    xwayway
        12
    xwayway  
       2023-04-04 11:48:33 +08:00
    姑且不论通信协议问题,就单说端到端的通信,如果不是在同一个局域网内,是不是得有个公网地址,这样的话,一台服务器也是必不可少的。
    yekern
        13
    yekern  
       2023-04-04 11:49:26 +08:00
    在很久很久很久很久以前, IE 时代有一款播放器支持浏览器播放 他的名字叫 Realplayer 支持 rtsp 和 rmvb 等常见格式
    lwep
        14
    lwep  
       2023-04-04 11:53:47 +08:00
    有的摄像头能推 RTMP 的流,似乎 RTMP 能浏览器直接播放
    thinkershare
        15
    thinkershare  
       2023-04-04 12:00:09 +08:00
    这是一条死路,别折腾了,靠谱就转换为 WebRTC, 不靠谱就用本机插件(海康官方就是这么干的), 延迟没要求就是要 hls ,所有基于裸 tcp 协议的浏览器上都没戏(兼容性,稳定性都搞不定), 我以前浪费过一个月在这个上面,如果行得通,海康官方就已经提供了,我和海康的技术人员沟通过。
    yplam
        16
    yplam  
       2023-04-04 13:01:06 +08:00 via Android
    摄像头指定要海康的话可以卖多一套设备丢客户内网做 rtsp 转 webrtc ,打洞成功就不耗流量,打洞不成功按流量收维护费也很合理
    bv
        17
    bv  
       2023-04-04 13:08:42 +08:00
    @newmlp 通过 websocket 承载 rtsp 流呢?
    crazytudou
        18
    crazytudou  
       2023-04-04 13:30:55 +08:00
    之前也是海康监控遇到这需求,没找到能直接在浏览器播放 rtsp ,我也是专门搞了台服务器转成 rtmp ,ffmpeg+jsmpeg ,websocket 方式在 web 客户端播放。
    吐槽下海康给的 SDK 是真的垃圾,web 用插件只能限 ie 用,没插件也限制浏览器,有等没。
    newmlp
        19
    newmlp  
       2023-04-04 13:34:20 +08:00
    @bv 可以,但是还是需要一个中间服务把 tcp 或 udp 转成 websocket
    lovelylain
        20
    lovelylain  
       2023-04-04 13:43:29 +08:00 via Android   2
    浏览器直接播放 rtsp 是做不到的,必须转码,可以转 webrtc 也可以 mse jsmpeg 等,各有优缺点,mse 基于 websocket 简单方便但是不支持 ios ,jsmpeg 是图片没有声音,webrtc 数据走 udp 复杂一点。都不用自己开发,跑个 go2rtc 就行。
    NessajCN
        21
    NessajCN  
       2023-04-04 13:58:52 +08:00
    ffmpeg 的确有 wasm 版本,但你要用 ffmpeg 转码的前提是首先要有这条码流
    因此你需要开一个服务,让摄像头可以把码流推到这个服务上,
    一般海康会给配一台 nvr 就是用来开这个 rtsp 服务接收推流的。
    如果你只有一台摄像头,那你无论如何都必须自己开这么个服务,然后去摄像头那里设置好把流推到你自己开的服务上(因此需要可访问的固定 ip 或域名)。这一步无论如何也不可能在客户的机子或浏览器上完成。
    所以还是老实点整服务器吧。
    ysc3839
        22
    ysc3839  
       2023-04-04 17:15:11 +08:00 via Android
    @bv WebSocket 当然可以,但是楼主的目的是节省流量。楼主说的“转码”其实只是转封装,不吃 CPU/GPU 编解码,吃的是网络流量。
    DCELL
        23
    DCELL  
       2023-04-04 17:29:07 +08:00
    RTSP 推流服务其实还是简单的,据我了解现代浏览器都不支持 RTSP 流
    myleszzZ
        24
    myleszzZ  
       2023-04-04 17:32:03 +08:00
    感觉遇到了同样的事情,吐槽一下我们现在做的方式,后端用 zlmediakit 转码,负责将 rtsp 流转换成 flv,内网走 frp 通道; H265 + 1080P ,前端换各种组件播放,最后花钱买了一个 js 播放器,才勉强上线。
    建议
    1 、对画质没要求,摄像头降低清晰度到 720P
    2 、NVR 存储空间够用,改成 H264
    mankismi
        25
    mankismi  
       2023-04-04 17:49:45 +08:00
    我也是折腾了一个多月得出的结论,需要的还是需要。逃不了
    推荐一个小项目
    https://github.com/mpromonet/webrtc-streamer
    轻量的 webrtc 转码 简单易用
    Swimming
        26
    Swimming  
       2023-04-04 18:10:59 +08:00 via Android
    今天给客户装了 4 个 800 万像素的,他说要做 RTSP ,我们只管装,他自己在录像机配置,然后找电信拉专线去了……
    kukat
        27
    kukat  
       2023-04-05 00:02:49 +08:00
    Wasm 应该可以
    whi147
        28
    whi147  
       2023-04-05 00:29:37 +08:00 via iPhone
    @thinkershare 我用 wasm 搞定了,就是软解同时只能解一路
    whi147
        29
    whi147  
       2023-04-05 00:32:07 +08:00 via iPhone
    @NessajCN 这一步可以实现,本地拉流推到 wasm
    hanguofu
        30
    hanguofu  
       2023-04-05 01:43:59 +08:00 via Android
    谢谢推荐!
    luohuanlh
        31
    luohuanlh  
       2023-04-05 07:01:57 +08:00
    请问,如果有 500 多路海康视频,转 web 播放,除了 ffmpeg+zlmediakit ,还有更合适的方案不?
    fzcf
        32
    fzcf  
       2023-04-05 12:19:34 +08:00
    @luohuanlh #31 采购一套海康的视频平台,直接通过他转成 web 播放
    luohuanlh
        33
    luohuanlh  
       2023-04-05 18:24:08 +08:00
    @fzcf 果然还是要加钱才行呐。
    fzcf
        34
    fzcf  
       2023-04-05 23:08:01 +08:00
    @luohuanlh #33 低成本的话你用萤石云吧也没多贵,就是流量要花钱。
    luohuanlh
        35
    luohuanlh  
       2023-04-06 09:05:21 +08:00
    @fzcf 不准备通过公网服务转。内部物理服务器 24 核,128 内存,我试了下转 100 多路是极限了。
    suke119
        36
    suke119  
       2023-04-06 09:19:01 +08:00
    node+websocket+flutte-ffmpeg ,简单易用,其他的处理降级浏览器版本使用 flash 都比这个方案复杂麻烦
    suke119
        37
    suke119  
       2023-04-06 09:21:45 +08:00
    还有就是 wasm 方案也不得行,浏览器没法提供 tcp/udp 裸流的,所有 over
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5533 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 09:01 PVG 17:01 LAX 02:01 JFK 05:01
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86