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

直播系统、直播平台技术开发要点在哪?

  •  
  •   jiala · 2017-10-20 14:21:05 +08:00 · 2724 次点击
    这是一个创建于 2380 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现如今,直播已经成为了人们生活中必不可少的产品了,不仅仅通过实时直播带来的娱乐和欢乐,还有更重要的是它带来的实时信息分享,由此直播也带来了非常大的商业价值和潜力。不仅是现在的秀场直播,现在慢慢兴起的教育、电商、金融等,都在一步步的跨入直播领域,可见直播的领域应该还存在更大的潜力等待我们去挖掘。

    那么现在想要迈进直播这个“槛”的人也越来越多,却又正是因为这个“槛”而无从下手,很多人有好的想法或项目却被直播前的这个门槛给拦住了,那么,直播技术的开发到底需要哪些技术呢?需要了解哪些方面的只是呢?我就给大家来讲解一下:

    首先开发实时直播时需要了解哪些知识:
    摄像头采集;
    1、音视频编解码;
    2、流媒体协议;
    3、音视频流推送到流媒体服务器;
    4、流媒体网络分发;
    5、用户播放器;
    6、音视频同步;
    7、网络延迟自适应;
    8、需要录制,多种视频文件的格式和封装;
    9、语言:C、C++、html、php、mysql......
    10、开发环境:嵌入式,Linux,Windows,Web......

    还有就是视频播放解决方案(卡顿、延迟):
    1、CDN 加速;
    2、自己架服务器;
    3、用别人的云服务。

    用 CDN 加速,可以尽量减少延迟。目前业内水准来看,视频延迟都在 3-6 秒之间。也就是在视频直播时,你看到的是几秒以前的画面。
    自己架服务器,如果你部署的数据中心不够多,那么遇上跨网、跨省的传输,还是得用 CDN 加速。那么为了尽可能降低延迟,你就需要在全国各省市都部署数据中心,来解决跨网、跨省的传输。这种解决方案,相较 CDN,非常昂贵。
    用云服务的话,就是别人把服务器给你架好了,你只要傻瓜式的用就行了。为防止广告嫌疑,有关实时直播云,现在有很多服务商提供这一块,具体情况请自行了解哦。
    当然,不管用哪种方式,请综合权衡利弊,找到适合自已的方案就是最好的方案。

    开发视频直播的流程有哪些:
    1、采集;
    2、前期处理;
    3、编码;
    4、传输;
    5、解码;
    6、渲染。

    采集:iOS 是比较简单的,Android 则要做些机型适配工作(声网 Agora.io 目前适配了 4000+Android 机型)。PC 最麻烦各种奇葩摄像头驱动,出了问题特别不好处理,建议放弃 PC 只支持手机主播,目前几个新进的直播平台都是这样的。

    前期处理:现在直播美颜已经是标配了,80%的主播没有美颜根本没法看。美颜算法需要懂图像处理算法的人,没有好的开源实现,要自己参考论文去研究。算法设计好了还要优化,无论你打算用 CPU 还是 GPU 优化,算法优化本身也需要专业知识支持。GPU 虽然性能好,但是也是有功耗的。GPU 占用太高会导致手机发烫,而手机发烫会导致摄像头采集掉帧,iPhone6 尤其明显。因为 iPhone6 的 CPU 和前置摄像头很近,在算法开发、算法优化、效果平衡上需要大量的开发调试工作。而这一切都是需要经验支撑。

    编码:如果你要上 720p,肯定要采用硬编码。软编码 720p 完全没希望,硬件编码不灵活。兼容性也有问题。如何适应纷繁复杂的网络和纷繁复杂的上下行设备?安卓和芯片的坑,开发过的人都知道。那有人问,要求不高,上软编码低分辨率 360p 行不行?就算上低分辨率,软编码还是会让 CPU 发烫,CPU 过热烫到摄像头,长期发烫不仅直接反应是费电。既然是手机直播,插着电源和充电器实在说不过去吧。还有,CPU 发烫会降频,怎么办?这还是只说性能方面。和前处理只影响图像质量和功耗不同,视频编解码技术还关联成本计算和网络对抗。考虑性能、功耗、成本、网络这四个之后你编码的码率、帧率、分辨率。软硬件开发该如何选择?

    传输:自己做不现实,交给第三方服务商吧。

    解码:如果你用硬解码,一定要做容错处理,一定要做适配。突然一个 crash 导致手机重启不好吧。安卓的硬解码,不说了。如果你加了网络目前手机的硬解码还不一定支撑用软解码,功耗发热的问题又来了。

    渲染:为什么手机明明解码出好多帧数据。就是渲染不出来。为什么画面就是不同步。

    以上是媒体模块,还有信令控制,登录、鉴权、权限管理、状态管理等等,各种应用服务,消息推送,聊天,礼物系统,支付系统,运营支持系统,统计系统等。后台还有数据库,缓存,分布式文件存储,消息队列,运维系统等。

    以上技术要点的小结,确实能说明开发一个能用于生产环境的实时视频直播平台确非易事,跟 IM 里传统的实时音视频一样,这样的技术都是音视频编解码+网络传输技术的综合应用体,没有一定的技术积累,确实有很多坎需要迈过去,所以如果你是自己开发的话真的是并非易事,毕竟在直播开发上每一个技术都是非常的难,自己开发起来不仅要花费大量的时间和资金,而且过程中遇到的很多问题都非常棘手,所以最好找一家专门做直播系统开发的公司,比如像市面上名气实力比较大的美丽播直播系统开发商(www.meilibo.net),团队拥有扎实的直播开发经验,直播产品具有自主知识产权,已成功为国内外客户搭建上线近百家直播平台。所以选择也要选择好的,美丽播会给你强大的技术支持,我相信美丽播会解决你在直播上的一切问题。
    jiala
        1
    jiala  
    OP
       2017-10-20 14:23:22 +08:00
    有问题的可以咨询
    julyclyde
        2
    julyclyde  
       2017-10-20 14:31:20 +08:00
    你这是提问还是广告?
    baixiangcpp
        3
    baixiangcpp  
       2017-10-20 14:31:23 +08:00
    到处复制粘贴别人的内容有意思吗
    z742364692
        4
    z742364692  
       2017-10-20 15:45:36 +08:00
    so?
    nine99
        5
    nine99  
       2017-10-20 16:03:30 +08:00
    @jiala 你好,有联系方式吗
    jiala
        6
    jiala  
    OP
       2017-10-20 16:24:51 +08:00
    @nine99 擦亮眼睛
    nine99
        7
    nine99  
       2017-10-20 16:46:30 +08:00
    @jiala ok
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2943 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 14:15 · PVG 22:15 · LAX 07:15 · JFK 10:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.