ffmpeg.wasm 关于 rtsp 推流 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
andyskaura
4.63D
V2EX    程序员

ffmpeg.wasm 关于 rtsp 推流

  •  
  •   andyskaura 2022-07-11 14:38:46 +08:00 4217 次点击
    这是一个创建于 1189 天前的主题,其中的信息可能已经有所发展或是发生改变。
    需求:rtsp 协议 ip 摄像头转码 webrtc 协议在线播放。


    疑问:本地的 ffmpeg 可以解析 rtsp 通过端口推流并转发出去,这个方案非常灵活,但局限于 cs 模式,在浏览器上偶然发现 ffmpeg 的 wasm 版本,了解后发现 github 上打包出来的解析库并不全,其次看 demo ,输入输出都是以文件的形式放在内存访问,并没有流的形式输入输出。所以想问下 wasm 解析 rtsp 的可行性。
    22 条回复    2022-07-13 13:28:14 +08:00
    3dwelcome
        1
    3dwelcome  
       2022-07-11 15:00:27 +08:00   1
    应该不行,浏览器对网络安全要求很严格,只允许访问 ws://或 wss://之类 http 封装过的前缀,不允许直接访问 rstp://加端口的 url 。

    流的输入输出到时无所谓,wasm 处理的都是内存二进制数据。
    3dwelcome
        2
    3dwelcome  
       2022-07-11 15:03:17 +08:00
    “输入输出都是以文件的形式放在内存访问”

    这是第三方封装过的 indexedDB 额外库,比如 emscripten 自己写的库。

    单纯的 wasm 没这些东西。demo 里用文件输入,也就是为了和传统的 C Api 进行对接。
    andyskaura
        3
    andyskaura  
    OP
       2022-07-11 15:10:19 +08:00
    @3dwelcome
    都忘了还有访问限制的问题,也就是说从根源就排除了浏览器解析 rtsp 的可能性。感谢回复!
    还是老老实实弄个服务负责转发吧。
    thinkershare
        4
    thinkershare  
       2022-07-11 15:10:21 +08:00   1
    不明白你究竟想要做什么? 使用 ffmpeg 在客户端直接解码 rtsp 协议的流, 还是准备干嘛?
    churchill
        5
    churchill  
       2022-07-11 15:11:19 +08:00
    我想说任何在客户端硬解视频的都是流氓
    不是你的第一行不是写着转 webrtc 么,那还需要什么客户端 ffmpeg
    thinkershare
        6
    thinkershare  
       2022-07-11 15:11:36 +08:00   1
    浏览器是没法解析 rtsp 的, 我目前用的是 hls 的流, 延迟 1-3s, 用的 H265, 在浏览器上使用 ffmpeg 的 wasm 解码 H265, 大部分浏览器都不支持直接播放 H265.
    thinkershare
        7
    thinkershare  
       2022-07-11 15:13:28 +08:00
    @churchill 你这个说法, 我严重不同意, 针对互联网项目, 这样搞的确不大合适. 但政企很多项目, 在客户端直接好维护的多. 完全不需要搭建一套后端找人长期维护.
    fgodt
        8
    fgodt  
       2022-07-11 15:17:23 +08:00   1
    wasm 是不能使用 tcp 建立 rtsp 连接的,网页上你还是只能 http 和 ws 建立连接
    andyskaura
        9
    andyskaura  
    OP
       2022-07-11 15:34:59 +08:00
    @thinkershare 之前试过 hls 的 延迟 5s 以上,偶尔 10s ,后来放弃了,改用视频流 ts 切片,h264 延迟 0.5s 内。现在设备多了,想弄个中间件把所有输入都统一成 webrtc ,用它这一套成熟的体系。
    andyskaura
        10
    andyskaura  
    OP
       2022-07-11 15:36:00 +08:00
    @fgodt 感谢 已经意识到这个问题了。
    andyskaura
        11
    andyskaura  
    OP
       2022-07-11 15:44:59 +08:00
    @churchill 是想用 ffmpeg 将 rtsp 协议转 webrtc
    churchill
        12
    churchill  
       2022-07-11 16:00:42 +08:00
    @andyskaura
    ffmpeg 干不了这事吧,最多转个 mpeg 用 websocket 输出?
    我用过这个 https://github.com/deepch/vdk/tree/master/format/rtspv2
    novolunt
        13
    novolunt  
       2022-07-11 16:17:03 +08:00
    @3dwelcome
    @thinkershare
    可以让浏览器支持其他协议
    blog.51cto.com/aeolian/2858445
    twosix
        14
    twosix  
       2022-07-11 16:21:45 +08:00
    @churchill 提供的 deepch 的方案里就有 rtsptowebrtc 的 demo 了,如果想做大批量的话可以参考下 SRS ,用 flv 的话延迟应该也能接受
    thinkershare
        15
    thinkershare  
       2022-07-11 16:36:18 +08:00
    @novolunt 你和我们说的不是一个东西, 而且根本不是解决问题的办法
    zscself
        16
    zscself  
       2022-07-11 16:40:36 +08:00   1
    感觉这个就符合需求:[ZLMediaKit]( https://github.com/ZLMediaKit/ZLMediaKit)
    novolunt
        17
    novolunt  
       2022-07-11 17:05:43 +08:00
    cwaken
        18
    cwaken  
       2022-07-11 19:37:24 +08:00 via iPhone
    webrtc 方案做过,服务端拉流转码 h264 。wasm 方案做过,服务端拉流转发 wasm 解码
    microxiaoxiao
        19
    microxiaoxiao  
       2022-07-11 20:57:51 +08:00
    那么多人让人都说不行,我不信。你的需求如果是使用 webrtc 协议播放的话,可以用 janus 等,俗称信令媒体网关。如果仅仅是播放 rtsp 。流程肯定就是利用类似 websocket 的形式,去进行信令交互( option, describle ,play 这些)。现成的也有很多。
    learningman
        20
    learningman  
       2022-07-11 21:18:49 +08:00 via Android   1
    https://chromestatus.com/feature/6398297361088512
    可以直接操作 TCPUDP 的,只不过特性还是实验性的
    ByteCat
        21
    ByteCat  
       2022-07-12 12:11:03 +08:00 via iPhone
    直接用 srs 提供的那个 ffmpeg docker 就行了,我用了好久了
    andyskaura
        22
    andyskaura  
    OP
       2022-07-13 13:28:14 +08:00
    @zscself 感谢! 这个拿来嵌在桌面服务里面做中转非常合适!
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2691 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3..8.5 28ms UTC 07:24 PVG 15:24 LAX 00:24 JFK 03:24
    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