Android直播技术

直播推流全过程:

Android直播技术

直播间页面UI分析

这里截取了陌陌中直播页面UI样式,做个简单分析
Android直播技术
拉流端上下滑切换直播间选型方案
VerticalViewPager推荐

  • 970 stars
  • 未维护

Android-DirectionalViewPager

  • 1040 stars
  • 未维护

InkeVerticalViewPagerLive

  • 212 stars
  • 未维护

VerticalViewPager

  • 278 stars
  • 未维护

直播涉及专有名词解释

软,硬编码
软编码:利用软件或CPU对所拍视频进行编码。软编兼容性好,能解码所有的视频格式文件,画质清晰、画面精致,速度较快。软件编码的CPU占用率高,一些性能比较差的手机可能会因CPU发热而降频、卡顿,无法流畅录制、播放视频,同时使用软件编码的方式可能会让软件包体变大手机内存占用率变高

硬编码:即利用手机硬件芯片(如GPU)对原视频进行编码的操作。硬编的优势在于它的编码速度非常快且效率极高,由于GPU承担起了编码的重担,因此硬编码对CPU的占用率低,就算长时间高清录制视频手机也不会发烫降频。由于机型区别,采取硬件编码的方式可能会出现兼容性上的问题,还有硬件编码画面不够精细的问题一直都很难解决

码率
视频码率就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。通俗一点的理解就是取样率,单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件

fps
FPS是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数。FPS是测量用于保存、显示动态视频的信息数量。每秒钟帧数愈多,所显示的动作就会越流畅。通常,要避免动作不流畅的最低是30。某些计算机视频格式,每秒只能提供15帧

直播相关技术点及开源项目

ViewPager 或 RecyclerView + PagerSnapHelper 切换直播间

来疯手机安卓直播 SopCastComponent

  • 2062 stars

使用MediaCodec和RTMP做直播推流 AndroidInstantVideo

  • 418 stars

LibRtmp-Client-for-Android

  • 330 stars

android-openGL-canvas

  • 512 stars

VideoPlayerManager

  • 2779 stars

后续会持续补充