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

关于直播平台的技术实现

  •  
  •   wjdimba · 2016-03-17 11:13:22 +08:00 · 12849 次点击
    这是一个创建于 3155 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请教一下各位像斗鱼 战旗那种直播平台技术是自己开发的还是用国内第三方的服务商,如果自己想搭建一个类似的直播平台,改怎么做比较好。

    26 条回复    2018-10-07 23:38:21 +08:00
    weizhiyao008
        1
    weizhiyao008  
       2016-03-17 11:15:44 +08:00
    国内的好像都是 flash ? youtube 好像有用 HTML5 实现的
    zktz
        2
    zktz  
       2016-03-17 11:20:11 +08:00
    百度一下 red 5
    不过自己做效果不好,网络优化太差。有很多供应商。
    3dwelcome
        3
    3dwelcome  
       2016-03-17 11:21:54 +08:00
    我就发现服务器只是一个流量中转功能,压缩视频非常耗费 cpu ,所以一般都是直播间压缩好 h264 分片包,再上传到服务器缓存起来,然后再分发给每个手机客户端。

    类似斗鱼直播间,用同一款手机,有些直播间兼容好,超清可以硬件解压,有些直播间兼容性不好,只能软件解压,一卡一卡的,和直播软件关系很大。

    个人觉得,直播技术重点,还是在于 c++那种本地直播软件开发吧,视频压缩什么都是大坑。
    jay4497
        4
    jay4497  
       2016-03-17 11:57:13 +08:00
    https://www.v2ex.com/t/213713
    自己搭可以看看 RTMP 相关的东西
    dphdjy
        5
    dphdjy  
       2016-03-17 12:09:14 +08:00 via Android
    搭着玩~
    用 rtmp/rtsp
    不在意延迟用 hls 分发(复用 http 基础

    商业
    还是买吧~
    lisonfan
        6
    lisonfan  
       2016-03-17 12:15:34 +08:00
    国内的直播、视频网站什么时候能换成 HTML5+H265 啊 0.0
    xmoiduts
        7
    xmoiduts  
       2016-03-17 12:36:03 +08:00 via Android
    @lisonfan 我觉得有点困难,我自己压着玩的 h265 片子,播放时都要用掉 50%的 cpu ,现在普通电脑的算力不是很适合 h265 ,而且个人测试的时候, h265 要比 h264 慢 5 倍。
    ffmpeg 压片, windows 自带播放器解码, i5-4200h 笔记本 cpu 。
    arden
        8
    arden  
       2016-03-17 12:58:53 +08:00
    腾讯云的 互动直播 ILVB 可以做类似于 花椒,映客等这样的直播 App 吗?
    hao123yinlong
        9
    hao123yinlong  
       2016-03-17 13:30:18 +08:00
    注意看我之前的一篇帖子
    guoer
        10
    guoer  
       2016-03-17 13:49:46 +08:00
    七牛有相关的服务
    Youen
        11
    Youen  
       2016-03-17 14:00:02 +08:00
    有篇文章可以参考

    鏖战双十一-阿里直播平台面临的技术挑战
    http://www.infoq.com/cn/articles/alibaba-broadcast-platform-technology-challenges
    wupher
        12
    wupher  
       2016-03-17 15:24:48 +08:00
    最近折腾了一个手机直播,使用 RTMP ,服务端使用 SRS ( Github 搜一下就能找到)。

    优点:技术方案相对简单,愿意的话,可以接入各种云平台(七牛、腾讯、百度等),可以使用云平台提供的播放器和录制端;也可以直接使用 CDN 的 RTMP 加速服务

    缺点: RTMP 感觉更适合视频会议等场景,本身为 TCP/IP 协议; 相对 YY 、 QQ 视频,等互动较丰富的应用场景,实时性方面仍然有一定差距
    fowse
        13
    fowse  
       2016-03-17 15:29:37 +08:00
    我问过 YY 直播的前 CTO ,最开始的时候是用 red5 改的,后来完全跟 red5 没关系了。开源的方案基本上很难解决大规模的问题。

    不知道是不是可以试试 WebRTC 的方法。
    jetyang
        14
    jetyang  
       2016-03-17 16:36:59 +08:00
    如果自己玩: red 5 的性能不太好,开源的方案推荐 https://github.com/j0sh/crtmpserver ,性能很好,网卡(千兆)全跑满时 CPU 和内存都无压力,不过要改东西就要求对 rtmp 协议和 C++编程都比较熟悉;网络优化(视频加速)自己搞就更麻烦了

    如果有钱准备快铺:国内的 CDN 厂商基本都有 rtmp/rtsp 的加速服务,视频流都不用回源,也就是你自己不用准备视频服务器,视频流量全从 CDN 上走,自己准备一个播放器( flash 、 H5 )就行了
    dellch
        15
    dellch  
       2016-03-17 16:39:54 +08:00
    @wupher RTMP 是不是延时比较大?
    YY , QQ 视频好像都是自己开发的协议
    dellch
        16
    dellch  
       2016-03-17 16:41:33 +08:00
    另外,网络视频教学自己做用什么方案比较好?
    bobuick
        17
    bobuick  
       2016-03-17 16:43:06 +08:00
    自己搞很简单。 RMTP 就可以了。
    rtmp 延迟是最小的了, 开源的里面, 另外还有 hls 。快速出活.
    然后应该会有针对直播端的一些效果美化啊什么的吧, 好像现在很多美女主播网站就是这么干的, 估计干的狠的, 一个凤姐坐那里,出来就是半个林志玲了。

    自己开发的肯定是大厂才这么搞吧。
    wjdimba
        18
    wjdimba  
    OP
       2016-03-17 17:43:52 +08:00
    感谢以上各位的耐心解答,基本心中了解了
    livepps
        19
    livepps  
       2016-03-17 18:24:50 +08:00
    chrome 开个直播, cpu 占用 50%+。
    vicence
        20
    vicence  
       2016-03-17 19:11:20 +08:00
    @livepps 在开个游戏, CPU 直接 100%,主频低根本没法流畅的直播游戏
    typcn
        21
    typcn  
       2016-03-17 20:22:14 +08:00   ❤️ 1
    @lisonfan 由于 h265 版权费高昂,目前世界上还没有一款支持 html5 h265 播放的浏览器,例如 Google 要在全套产品支持 h265 ,每年需要支付很数亿美元的版权费用。


    @livepps
    @vicence 国内直播占 CPU 的原因有两个:
    1. Flash 本身就费 CPU ,用了别想低。。除了某些魔改过的 flash ,全部都是软解的。软解就软解,还没有任何优化,比起 ffmpeg 那一堆库出来的效率不知道低到哪里去了
    2. 那些直播站还带弹幕,用 Flash 来实现弹幕本身就是一件非常蠢的事情, Flash 的文字渲染性能处在一种不可接受的程度。


    HTML 5 直播有几种方案:
    (当然为了照顾国内大环境, Flash fallback 还是得有的)
    1. HLS
    ajax 读分片, JS 转一下容器,加上 mp4 的 header/box ,用 media source extension 来播放,在移动端上可以直接播放。
    优点: HTTP 协议, CDN 友好,还可以跟 iOS 必备的 HLS 用一套源,免得服务器切片一堆东西,支持所有主流浏览器。
    缺点:比 dash 占用稍微高一点点,延迟至少一个 GOP + 网络传输时间。

    2. DASH
    ajax 读分片,利用 media source extension 来播放
    优点: HTTP 协议, CDN 友好,比 HLS 稍快点,支持所有主流浏览器。
    缺点:服务器需要切片 hls + dash 两套,降低 cdn 缓存利用率,延迟至少一个 GOP + 网络传输时间。

    3. Matroska
    真正意义上的流,<video> 标签直接播放,具体看这里: https://matroska.org/technical/streaming/index.html
    注意别转码,别转码,别转码,直接封装 rtmp 推上来的 h264 进去,每个请求来的时候生成一份 metadata ,做重传,不用等到一个关键帧就可以播放。
    优点:速度最快占用最低,延迟可以做到跟 rtmp 一个级别
    缺点:只支持 Chromium-based 浏览器,没法用 CDN


    直播不需要什么配置,大部分情况下都是重新封装一下视频容器,树莓派也能扛几千人。
    除非你要转码,或者你用的 Java 写的媒体服务器。
    AndyCrz
        22
    AndyCrz  
       2016-03-17 21:55:05 +08:00
    有开源的 OBS 系统,在 github 上很多
    zacard
        23
    zacard  
       2016-03-18 09:29:15 +08:00
    学习
    wupher
        24
    wupher  
       2016-03-18 10:37:49 +08:00
    @dellch 延时还好,关键看用户量级和网络质量。我们的直播端使用手机源,并且人在国外。观看的用户主要在国内,人数大约才刚过百。视网络质量,有时确实会有卡顿情况,但总体能接受。我也去研究了一下 YY 的手机端直播,坦白的说也是有卡顿,声音延迟等问题。当然 YY 的服务量级远远超出我们。

    如果真的对实时性要求非常高,也可以考虑不使用 RTMP 协议,比如基于 UDP 协议上自己进行封装(个人怀疑 QQ 视频的实现可能是这种方式)。但是这样做一来开发难度与周期会加大,二来也无法使用 CDN 通用的 RTMP 加速,可能视服务情况需要自己构建 CDN 加速服务。

    希望能帮上你。话说如果你们打算自已研发 UDP 协议,能开源让我学习一下就更好了

    ^_^
    jiala
        25
    jiala  
       2017-10-20 16:32:49 +08:00
    可以看看这个 http://www.meilibo.net
    abcleeray
        26
    abcleeray  
       2018-10-07 23:38:21 +08:00 via iPhone
    mark 现在用阿里云
    以后看看能不能去自己实现!?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1106 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 22:51 · PVG 06:51 · LAX 14:51 · JFK 17:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.