Android 直播初尝

最近这招聘都要懂直播技术的,原来项目没涉及过,为了提高竞争力,只好自己一点点淌咯!

只讲干货,GO!

首先直播要了解的三种协议RTMP,HLS,RTSP,这里主要说两种:

  1. RTMP 协议
    RTMP是Adobe公司推出的一种协议吧,据说好像不维护了,它是一个协议族,相应的变种有RTMPT/RTMPS等,(像我用wireshark抓包时候就就过滤的rtmpt,rtmp过滤不出来),RTMP基于TCP和或者可以建立在轮询的http之上。像三次握手那样的协议吧(先这么理解吧),默认端口1935。
  2. HLS
    这个协议应该是比较早的了,可以理解为点播,是准实时(看不懂的理解成约等于直播),因为他是把原始数据编码成H264视频或者音频,然后把视频封包,分成一小段一小段TS格式的,最后通过m3u8这个索引文件和ts视频包通过http传输以达到准实时的效果,延迟相对RTMP要大不少,RTMP大概1-2秒的延时。

抓包时候发现网页端HLS的不少,映客网页端是RTMP的

然后呢就要了解推流和拉流的概念啦

  • 推流:客户端 (采集端)传至服务器 (RTMP)
  • 拉流:服务器传至客户端(播放端)(分发)

为了弄懂这两个概念我折腾了不少时间。
推流实际上一般都是通过RTMP协议上传至服务器,但下发播放端时是可以通过HLS或者RTMP协议分发的,以适应不同终端。这一点各大云服务平台都可以做

拉流的地址其实很好弄,抓包就能抓到,推流的地址我研究了好多,网上说百度云阿里云腾讯云的可以配置,但是我配置完并没有推上去。。。最后在一个开源框架里找到了个动态推流地址,才完成实验。

可能用到的文章(这里只说Android端)

  • 移植rtmpdump(librtmp)到android

大牛直播

  • yasea
  • 直播原理总结

你可能感兴趣的:(Android 直播初尝)