ijkplayer秘籍Android 音视频Android Studio

基于ijkPlayer学习视频播放器实现(一)

2017-08-30  本文已影响888人  阳春面

在工作中,对视频播放器相关开发知识断断续续也学习过不少,按需求完成过一些定制化开发,但感觉还是没有成体系的学习过,借此给自己挖个坑,学习一下ijkPlayer播放器的实现,把这个系列文章完成。

Android中视频播放器的选择

MediaPlayer

在Android系统中对于视频播放器有原生的实现MediaPlayer, 以及将MediaPlayer,SurfaceView封装在一起的VideoView, 两者都只是使用硬解播放,基本上只支持本地和HTTP协议的视频播放,扩展性都很差,只适合最简单的视频播放需求。

ExoPlayer

谷歌后来有开源了一个播放器项目[ExoPlayer])(https://github.com/google/ExoPlayer), 提供了更好的扩展性和定制能力,并加入了对DASH和HLS等直播协议的支持,但也只支持硬码,如果项目中只需要支持对H264格式的视频播放,以及流媒体协议比较常规(比如HTTP,HLS),基于ExoPlayer定制也是不错的选择。

ijkplayer

ijkplayer是Bilibili公司开源的播放器实现,整合了FFMpeg, ExoPlayer, MediaPlayer等多种实现,提供了类似于MediaPlayer的API,可以实现软硬解码自由切换,自定义TextureView实现,同时得益于FFMpeg的能力,也能支持多种流媒体协议(RTSP,RTMP,HLS等),多种视频编码格式(h264, mpeg4, mjpeg),具有很高的灵活性,可以定制实现自己特色的播放器(比如支持视频缩放,视频翻转等)。

视频播放的流程

常规的视频播放分为传输,解封装,解码,绘制四个步骤,以下按播放网站上(HTTP)的mp4文件为例,简单介绍一下几个过程:

视频播放过程.png

扫一扫下方二维码,关注我的微信公众号(APP开发进阶),第一时间获得Android开发进阶文章

APP开发进阶
上一篇下一篇

猜你喜欢

热点阅读