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

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

  •  
  •   liu826250634 · 91 天前 · 4731 次点击
    这是一个创建于 91 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    44 回复  |  直到 2018-06-27 16:31:52 +08:00
        1
    xiaoxi123   91 天前   ♥ 1
    不要用 rtmp,对服务器要求高,小成本直播,用 http-flv
        2
    jianlu   91 天前
    flask+opencv
        3
    liu826250634   91 天前
    @xiaoxi123 有没有什么靠谱的文档链接?麻烦了。
        4
    jimzhong   91 天前
    OBS?
        5
    liu826250634   91 天前
    @jimzhong 我搭的是服务器,OBS 不是用来录制、推流的么?
        7
    iamsee   91 天前   ♥ 1
    楼主可以留个联系方式交流一哈
        8
    ZXCDFGTYU   91 天前
    https://github.com/ossrs/srs

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

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

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

    其次,推流的协议是否可以支持达到那么低的延迟(至少先保证摄像头到最近的视频服务器这段)
        33
    twistoy   91 天前
    srs 性能完全足够,控制一下缓存的大小,延迟可以控制的很小
        34
    scnace   91 天前 via Android
    我之前玩过 用了 Go 写的流媒体服务器 joy4
        35
    sunzongzheng   90 天前 via Android
    我搭过, 公网服务器 2s 延迟有点困难,带宽也是问题
        36
    iamsee   90 天前
    @liu826250634 要延迟低别用 hls,hls 可以作为切片点播服务器,还是 rtmp 延迟低
        37
    iamsee   90 天前
    最主要的是带宽问题,如果是内网还好说,带宽费折腾不动
        38
    xiaoheijw   90 天前
    刚好,前阵子,也有这样一个需求,把摄像头内容推给前端,一开始使用的是 hls,延迟大概是 1 分钟,之前换了 srs,延迟大概是 8s,最后干脆用原生的 ffserver,延迟大概是 2s,当然以上是内网环境。也试过用阿里云的直播推流,但阿里云也大概延迟是 5s。如果你有公网需求的话,建议还是用大厂的产品。
        39
    liu826250634   90 天前
    @realpg 我们有海康的摄像头。但是不能直接调用,需要通过 CS 端转发。如果是能直接调用的话,通过控件延迟很低。
    还涉及不同的摄像头,没办法统一,所以才想着搭一个服务器转发。
        40
    M4ster   90 天前
    之前自己折腾玩过,服务端就用的 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。
        41
    liu826250634   90 天前
    @xiaoheijw 老哥,能加微信私聊么?
        42
    lshero   90 天前
    低延时还是考虑用视频通讯的方案吧
        43
    fgodt   90 天前
    其实你们 cs 端能拿到流就很容易了 直接 cs 端的程序改改 上公网就用阿里云,自己的局域网就用 nginx+rtmp 或者自己写个转发。都是很简单的逻辑 只要了解点 rtmp 协议基本就能弄
        44
    jimmyczm   90 天前
    wowza 不错,之前用过
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1424 人在线   最高记录 3762   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 73ms · UTC 16:34 · PVG 00:34 · LAX 09:34 · JFK 12:34
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1