初识直播开发(一)

411 阅读4分钟
前言

        去年10月底,由于个人原因,决定经历人生中的第一次跳槽。经历了一个多月的面试,于12月份进入了一家做直播的公司。到目前为止,对自己的这次跳槽还是很认可,因为不管是业务上还是技术上,感觉自己还是学到了不少的东西(虽然自己现在还是很low)。

        在准备面试的一个多月里,在掘金平台看到的一些大佬写的技术文章确实给了自己很大的帮助。所以呢,决定在这里不定时的更新一些自己整理的与直播相关的知识,一方面想锻炼一下自己的语言表达能力,另一方面也为了给自己的学习做些沉淀。


业务初识
         进入一家新公司首先要做的就是了解一些公司的业务,相比老东家,直播涉及的业务还是相当多的,大概熟悉了半个月才把业务给搞差不多。要想跟深入的了解直播业务,很简单,一个字——“玩”,也就是不停的把玩App里直播所涉及的各种模式以及每个模式里所涉及的不同玩法儿。当然了对于一个开发来说,你是来工作的,是来写bug的,怎么能一直玩儿App呢,不知道的还以为你一直在用手机看直播里的小姐姐。

技术初识
         如果你是一个做过音视频开发的大佬,那么看到这里,就没有必要再继续往下看了,因为小弟我刚接触直播开发不久,确实就写了一些很浅层面的知识...

         相信你我都看过直播,那么一个完整的直播过程是怎样的呢,粗略一点时就是两个词:推流和拉流(详细一点就是:采集、处理、编码、封包、推流、传输、转码、分发、解码、播放)。
         推流:把主播端的音视频信息上传到媒体服务器
         拉流:观众端从媒体服务器拉取音视频信息到客户端进行播放

         很容易理解的两个词汇,相信我不解释大家也都懂,但是具体推流拉流过程中都做了些什么呢?就拿“推流”来说,流是什么?推流之前做了什么?流是怎么推上去的?推哪里去了?(这么一想,真的有好多知识点可以深究)


  • 编码
         是的,流媒体直播这个过程就像是一个物流系统,这个将货物进行装货过程就是编码过程,那么想要提高流媒体这个“物流系统”的速度,选择一个合适的编码标准是至关重要的,就目前来说,在手机直播平台开发行业内比较普遍用的是H.264的编码标准,而新一代编码标准H.265和VP9等在最近的呼声越来越高,H.265标准围绕着现有的视频编码标准H.264,保留原来的某些技术,同时对一些相关的技术加以改进。后续也会对这些编码方式进行更深入的解释和对比。这里所说的编码过程也就是推流之前的工作了。

  • 推流
         推流指的是把编码后的音视频数据传输到服务器的过程。
         推流是需要遵循的协议的,常用的流传输协议有RTSP、RTMP、HLS等,由于手机直播对实时性要求非常高,使用RTMP传输的延时通常在1–3秒,所以RTMP也成为手机直播中最常用的流传输协议。

  • 拉流
         拉流是指与服务端建立连接之后,根据一定的协议,将服务器已有的直播内容进行拉取的过程。
         和推流一样,拉流也是需要遵循协议的,针对拉流的协议现在有RTMP、HLS、HDL(HTTP-FLV),HDL协议在网络稳定的情况下的延时控制可达1s,完全满足互动直播的业务需求。RTMP在推流中也提到了,开源软件和开源库都支持的比较好,延时一般在1-3秒。HLS的话是苹果提出的基于HTTP的流媒体传输协议,移动端兼容性良好,但是缺点是延迟比较高。

         好啦,就说到这里吧。这次就大概的说下推拉流的概念。

         下篇预告:阐述更详细的推拉流过程以及其他直播相关的知识点。有兴趣的朋友可以一起交流哦~