Android 基于ijkplayer的视频播放

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Lkyphoon/article/details/75303979

     随着视屏直播的火热,视频在移动端的开发也成为许多公司的任务需要了。最近公司的项目,功能需求就有视频播放。看来又要get新技能了,想想都让人觉得兴奋。
在正式开始构建项目之前,让我们先来明确几个概念性的东西。


几个协议:

HTTP:(HyperText Transfer Protocol)超文本传输协议,是互联网上应用最为广泛的一种网络协议。
RTSP:Real Time Streaming Protocol)是用来控制声音或影像的多媒体串流协议,RTSP提供了一个可扩展框架,使实时数据,如音频与视频的受控、点播成为可能。数据源包括现场数据与存储在剪辑中的数据。该协议目的在于控制多个数据发送连接,为选择发送通道,如UDP、多播UDP与TCP提供途径,并为选择基于RTP上发送机制提供方法传输时所用的网络通讯协定并不在其定义的范围内,服务器端可以自行选择使用TCP或UDP来传送串流内容,比较能容忍网络延迟
RTMP:(Real Time Messaging Protocol)实时消息传送协议是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输 开发的开放协议
在视频播放时用到的url地址可能会用到这些协议。

几种视频格式:

* MPEG : 编码采用的容器,具有流的特性。里面又分为 PS,TS 等,PS 主要用于 DVD 存储,TS 主要用于 HDTV.
* MPEG Audio Layer 3 :大名鼎鼎的 MP3,已经成为网络音频的主流格式,能在 128kbps 的码率接近 CD 音质
* MPEG-4(Mp4) : 编码采用的容器,基于 QuickTime MOV 开发,具有许多先进特性;实际上是对Apple公司开发的MOV格式(也称Quicktime格式)的一种改进.
* MKV: 它能把 Windows Media Video,RealVideo,MPEG-4 等视频音频融为一个文件,而且支持多音轨,支持章节字幕等;开源的容器格式
* 3GP : 3GPP视频采用的格式, 主要用于流媒体传送;3GP其实是MP4格式的一种简化版本,是手机视频格式的绝对主流.
* MOV : QuickTime 的容器,恐怕也是现今最强大的容器,甚至支持虚拟现实技术,Java等,它的变种 MP4,3GP都没有这么厉害;广泛应用于Mac OS操作系统,在Windows操作系统上也可兼容,但是远比不上AVI格式流行
* AVI : 最常见的音频视频容器,音频视频交错(Audio Video Interleaved)允许视频和音频交错在一起同步播放.
* WAV : 一种音频容器,大家常说的 WAV 就是没有压缩的 PCM 编码,其实 WAV 里面还可以包括 MP3 等其他 ACM 压缩编码
等等


在有了这些基本的了解之后,我们开始正式建立我们的工程,我们用的是ijkplayer第三方框架。

关于ijkplayer我们也简单的了解一下:ijkplayer 是一个基于 ffplay 的轻量级 Android/iOS 视频播放器。实现了跨平台功能,API易于集成;编译配置可裁剪,方便控制安装包大小;支持硬件加速解码,更加省电(ffplay 是一个使用了 ffmpeg 和 sdl 库的、一个简单的可移植的媒体播放器。

首先我们需要导入需要的库以及jar包
工程结构如下图:

然后导入一些工具类:

ok,工程架构已经完成,接下来我们简单的布局,使用视频播放view

接下来就是对播放控件的操作了,主要有几个方法:
//获得当前播放的位置
public String getCurrentPosition();
//获取总时间长度
public String getDuration();
//设置播放的位置,单位毫秒
public void seekTo(int msec);
//获取缓冲的百分比
public int getBufferPercentage();
//开始播放
public void start();
//停止播放
public void stopPlayback();


具体工程下载地址:http://download.csdn.net/detail/lkyphoon/9902595

视频全屏播放的方法是小弟自己想的,但总感觉太繁琐,还望大神提供好的意见



猜你喜欢

转载自blog.csdn.net/Lkyphoon/article/details/75303979