V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
liu826250634
V2EX  ›  程序员

如何搭建一个视频直播服务器

  •  2
     
  •   liu826250634 · 2018-06-26 10:36:07 +08:00 · 18765 次点击
    这是一个创建于 2102 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在需要有一个功能,将其他地方摄像头的画面实时传输到前端页面,类似市面上的直播软件吧,并发量并不高。搜索了文档,但是大多数都是使用 nginx + rtmp 模块实现的。我搭建了一个测试,延时太高无法接受。所以想请教大神,有什么实时性好的视频服务器搭建攻略。跪求跪求!

    47 条回复    2020-06-27 21:16:25 +08:00
    xiaoxi123
        1
    xiaoxi123  
       2018-06-26 10:44:39 +08:00   ❤️ 1
    不要用 rtmp,对服务器要求高,小成本直播,用 http-flv
    jianlu
        2
    jianlu  
       2018-06-26 11:10:24 +08:00
    flask+opencv
    liu826250634
        3
    liu826250634  
    OP
       2018-06-26 11:10:50 +08:00
    @xiaoxi123 有没有什么靠谱的文档链接?麻烦了。
    jimzhong
        4
    jimzhong  
       2018-06-26 11:13:26 +08:00
    OBS?
    liu826250634
        5
    liu826250634  
    OP
       2018-06-26 11:15:23 +08:00
    @jimzhong 我搭的是服务器,OBS 不是用来录制、推流的么?
    iamsee
        6
    iamsee  
       2018-06-26 11:57:30 +08:00   ❤️ 1
    iamsee
        7
    iamsee  
       2018-06-26 12:01:06 +08:00   ❤️ 1
    楼主可以留个联系方式交流一哈
    ZXCDFGTYU
        8
    ZXCDFGTYU  
       2018-06-26 12:03:27 +08:00
    https://github.com/ossrs/srs

    srs 我记得可以支持 rtmp、hls 等等好多类型的来着。
    另外延迟高的话,你可以看看你的上传带宽多大。延迟高应该和你的上传带宽有关,或者说压缩一下你推流的视频。
    liu826250634
        9
    liu826250634  
    OP
       2018-06-26 13:21:17 +08:00
    @iamsee 826250634 微信
    likuku
        10
    likuku  
       2018-06-26 13:23:41 +08:00
    不转码的话,rtmp 还是可以的。加上网络缓冲什么,延迟 1 分钟还是可以接受的吧。

    需要转码的话,就得靠 N 卡来加速 ffmpeg 了。
    liu826250634
        11
    liu826250634  
    OP
       2018-06-26 13:24:07 +08:00
    @iamsee 我之前也没做过这个, 但是公司有需求才找资料的。
    liu826250634
        12
    liu826250634  
    OP
       2018-06-26 13:25:19 +08:00
    @ZXCDFGTYU 我看了资料,都说 hls 延迟都是挺高的。
    liu826250634
        13
    liu826250634  
    OP
       2018-06-26 13:26:09 +08:00
    @likuku 我需要延迟控制两秒以内。所以接受不了。
    xiaoxi123
        14
    xiaoxi123  
       2018-06-26 14:06:18 +08:00
    xiaoxi123
        15
    xiaoxi123  
       2018-06-26 14:07:21 +08:00
    @liu826250634 hls 可以通过把切片分小一点,来降低延迟
    fgodt
        16
    fgodt  
       2018-06-26 14:15:04 +08:00   ❤️ 1
    首先你延时就决定了不能是现成方案,目前直播方案延时普遍较高
    说直播方案问题:你的摄像头是什么摄像头 rtsp 的流么
    如果是 rtsp 那么方案就是 rtsp->ffmpeg->rtmp->前端
    或者是 :rtsp->ffmpeg->flv->前端
    再或者是:rtsp->自定义服务器->websocket->前端

    这些方案在延时上已经是最低了
    如果这都解决不了你的问题就要考虑自己优化了,我们这边就是自己写播放器等优化才把延时降低到 2s 左右
    liu826250634
        17
    liu826250634  
    OP
       2018-06-26 14:56:49 +08:00
    @fgodt 谢谢老哥的建议,我们这里涉及不同的厂商,我们公司 CS 端的话(使用海康 SDK 方式取流),再传给我们,其他厂商都应该大同小异。但是因为我们不能直接调海康的接口。所以想采用的是搭一个服务器,他们把视频流传给服务器,再从服务器取视频(我也不太清楚这个方案靠不靠谱)。
    xshwy
        18
    xshwy  
       2018-06-26 15:05:40 +08:00
    直接用现有的直播 SDK 不行吗
    腾讯云: https://cloud.tencent.com/product/LVB
    liu826250634
        19
    liu826250634  
    OP
       2018-06-26 15:09:01 +08:00
    @xshwy 我们是在专网里面,不能上网。
    javen73
        20
    javen73  
       2018-06-26 18:03:41 +08:00
    srs red5
    hahastudio
        21
    hahastudio  
       2018-06-26 18:07:59 +08:00
    摄像头+物理机+远程桌面?
    这个延时应该很低
    explicit
        22
    explicit  
       2018-06-26 18:27:17 +08:00
    推荐用第三方服务,比如:七牛云之类
    explicit
        23
    explicit  
       2018-06-26 18:32:11 +08:00
    自己玩玩无所谓的,如果打算商业化,建议多看看中国政府对于直播行业制定的法律法规.
    explicit
        24
    explicit  
       2018-06-26 18:37:16 +08:00
    "类似市面上的直播软件吧,并发量并不高",高可用的视频直播,点播服务主要靠的是 CDN,没有资金实力的小公司,自己搞 CDN 划算吗?
    CFM880
        25
    CFM880  
       2018-06-26 18:38:17 +08:00 via Android
    商用自建的话,考虑一下 wowza
    qiayue
        26
    qiayue  
       2018-06-26 18:41:03 +08:00
    jsmpeg.com 了解一下
    Geekgogo
        27
    Geekgogo  
       2018-06-26 18:42:22 +08:00
    我们公司正好也在做这个,用的是 rtmp+nginx 方式,由于 hls 延迟太高,基于 videojs 直接在前端页面播放 rtmp 流,但是很多浏览器都没办法正常播放,正在找方法解决。。。
    chinvo
        28
    chinvo  
       2018-06-26 18:46:13 +08:00
    nginx-rtmp-module
    lyver
        29
    lyver  
       2018-06-26 19:55:48 +08:00
    一个人来说开发一套直播系统是非常困难的,不仅要精通音视频技术还得大量的成本。
    自建 CDN 分发的费用是非常高的,建议去阿里云租,服务器+CDN 走 RTMP 协议即可,一般延迟在 3S 左右。需要有一定开发能力。
    我司保利威,是做直播 SAAS 平台的,接口完善,专人对接,要满足你的这个需求,非常简单,延迟和阿里差不多。
    主要还是看自己的需求去选择,如果团队想要搭建直播平台,没有丰富的开发经验,可以考虑我们这类 SAAS 服务商,把前端代码嵌入就行了,节省项目周期。
    realpg
        30
    realpg  
       2018-06-26 20:27:33 +08:00
    闭路实时监控系统嘛
    海康自身就有完整方案 也有异地调取的方案 为啥不采购完整了还自己开发
    tinywhale
        31
    tinywhale  
       2018-06-26 21:21:39 +08:00
    WebRTC 万能,如果你能把服务器框架和摄像头视频流对接起来的话
    likuku
        32
    likuku  
       2018-06-26 21:36:58 +08:00
    低延时可没那么简单,最基本的,就是你摄像头本身编码和推流能力,是否可以作到 2s 以内缓冲就可以稳定工作,

    其次,推流的协议是否可以支持达到那么低的延迟(至少先保证摄像头到最近的视频服务器这段)
    twistoy
        33
    twistoy  
       2018-06-27 00:06:44 +08:00
    srs 性能完全足够,控制一下缓存的大小,延迟可以控制的很小
    scnace
        34
    scnace  
       2018-06-27 00:30:56 +08:00 via Android
    我之前玩过 用了 Go 写的流媒体服务器 joy4
    sunzongzheng
        35
    sunzongzheng  
       2018-06-27 01:40:07 +08:00 via Android
    我搭过, 公网服务器 2s 延迟有点困难,带宽也是问题
    iamsee
        36
    iamsee  
       2018-06-27 09:17:49 +08:00
    @liu826250634 要延迟低别用 hls,hls 可以作为切片点播服务器,还是 rtmp 延迟低
    iamsee
        37
    iamsee  
       2018-06-27 09:18:26 +08:00
    最主要的是带宽问题,如果是内网还好说,带宽费折腾不动
    xiaoheijw
        38
    xiaoheijw  
       2018-06-27 09:48:06 +08:00
    刚好,前阵子,也有这样一个需求,把摄像头内容推给前端,一开始使用的是 hls,延迟大概是 1 分钟,之前换了 srs,延迟大概是 8s,最后干脆用原生的 ffserver,延迟大概是 2s,当然以上是内网环境。也试过用阿里云的直播推流,但阿里云也大概延迟是 5s。如果你有公网需求的话,建议还是用大厂的产品。
    liu826250634
        39
    liu826250634  
    OP
       2018-06-27 10:13:57 +08:00
    @realpg 我们有海康的摄像头。但是不能直接调用,需要通过 CS 端转发。如果是能直接调用的话,通过控件延迟很低。
    还涉及不同的摄像头,没办法统一,所以才想着搭一个服务器转发。
    M4ster
        40
    M4ster  
       2018-06-27 10:34:24 +08:00   ❤️ 1
    之前自己折腾玩过,服务端就用的 SRS,PC 录屏用的 OBS,播放可用 flv.js 。

    SRS: https://github.com/ossrs/srs/wiki/v2_CN_Home

    SRS 提供了丰富的接入方案将 RTMP 流接入 SRS,包括推送 RTMP 到 SRS、推送 RTSP/UDP/FLV 到 SRS、拉取流到 SRS。
    SRS 还支持将接入的 RTMP 流进行各种变换,譬如将 RTMP 流转码、转发给其他服务器、转封装成 HTTP-FLV 流、转封装成 HLS、转封装成 HDS、录制成 FLV。
    SRS 包含支大规模集群如 CDN 业务的关键特性,譬如 RTMP 多级集群、VHOST 虚拟服务器、无中断服务 Reload、HTTP-FLV 集群。
    此外,SRS 还提供丰富的应用接口,包括 HTTP 回调、安全策略 Security、HTTP API 接口、RTMP 测速。SRS 在源站和 CDN 集群中都得到了广泛的应用 Applications。
    liu826250634
        41
    liu826250634  
    OP
       2018-06-27 10:38:16 +08:00
    @xiaoheijw 老哥,能加微信私聊么?
    lshero
        42
    lshero  
       2018-06-27 10:40:53 +08:00
    低延时还是考虑用视频通讯的方案吧
    fgodt
        43
    fgodt  
       2018-06-27 11:01:59 +08:00
    其实你们 cs 端能拿到流就很容易了 直接 cs 端的程序改改 上公网就用阿里云,自己的局域网就用 nginx+rtmp 或者自己写个转发。都是很简单的逻辑 只要了解点 rtmp 协议基本就能弄
    jimmyczm
        44
    jimmyczm  
       2018-06-27 16:31:52 +08:00
    wowza 不错,之前用过
    lh948
        45
    lh948  
       2019-09-08 14:24:49 +08:00
    @liu826250634 问题解决了吗?方便加好友了解一下吗?
    registerrr
        46
    registerrr  
       2019-09-11 18:27:39 +08:00
    @lh948 我也遇到这个问题了,我这要求更高,要控制到 1s,太难搞了.
    加个好友?wx:enp6MDM3MTA=
    leffz
        47
    leffz  
       2020-06-27 21:16:25 +08:00
    阿里云视频直播解决方案:leffz.com/live
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1058 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 22:40 · PVG 06:40 · LAX 15:40 · JFK 18:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.