一、目的
Ijkplayer最为一个经典的视屏播放开源框架,虽然是开源框架对于刚入门的人来说看到源码以及脚本的各种操作肯定是无从下手,这里先把Ijkplayer简化为一个最简单的项目只是简单的播放,当实现了播放后可再根据自己的需要的功能去查api,这个项目向当前ijkplayer的"hello world"。只需要按照以下步骤就可以实现播放。
当完成ijkpler的"hello world"后肯定你会想知道更多的功能函数,下一篇介绍使用的功能函数 IjkPlayer【2】 API 查询
二、创建项目以及基础配置
1)创建项目后在model的build.gradle的dependencies{}中添加添加以下依赖。
ijkplayer 可以直接依赖源码也可以依赖官方打包好的库,这里作为最简单的实现直接使用官方打包好的库,
如果开发涉及到Java层逻辑可以将源码中的ijkplayer-java文件夹作为Model库添加到项目中,然后把"tv.danmaku.ijk.media:ijkplayer-java:0.8.8" 替换为ijkplayer-java Model。如果开发涉及到Native部分就需要根据官网提示的步骤操作编译源码。
dependencies {//========ijkplaer Java部分依赖implementation 'tv.danmaku.ijk.media:ijkplayer-java:0.8.8'//google ExoPlayer播放的扩展,一般无需添加//implementation 'tv.danmaku.ijk.media:ijkplayer-exo:0.8.8'//========ijkplaer Native部分依赖(根据运行CPU的平台选择)//使用真机测试 添加以下依赖implementation 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.8.8'//使用电脑模拟器 添加以下依赖implementation 'tv.danmaku.ijk.media:ijkplayer-x86:0.8.8'implementation ile 'tv.danmaku.ijk.media:ijkplayer-x86_64:0.8.8'//其他CPU平台//implementation 'tv.danmaku.ijk.media:ijkplayer-armv5:0.8.8'//implementation 'tv.danmaku.ijk.media:ijkplayer-arm64:0.8.8'
}
2)在AndroidManifest.xml添加网络权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
3)在layout中添加SurfaceView作为显示控件
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><SurfaceViewandroid:id="@+id/surfaceView"android:layout_width="match_parent"android:layout_height="match_parent"></SurfaceView>
</androidx.constraintlayout.widget.ConstraintLayout>
4)添加主业务逻辑代码
public class MainActivity extends AppCompatActivity {private SurfaceView showView;private IjkMediaPlayer ijkMediaPlayer;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);showView = findViewById(R.id.surfaceView);//设置Surface创建以及发生变化的回调showView.getHolder().addCallback(callback);//创建IjkPlayer对象ijkMediaPlayer = new IjkMediaPlayer();}private SurfaceHolder.Callback callback = new SurfaceHolder.Callback() {@Overridepublic void surfaceCreated(SurfaceHolder holder) {}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {//设置显示界面的HolderijkMediaPlayer.setDisplay(holder);try {//设置播放地址ijkMediaPlayer.setDataSource(MainActivity.this, Uri.parse("http://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear1/prog_index.m3u8"),null);} catch (IOException e) {e.printStackTrace();}//播放前准备ijkMediaPlayer.prepareAsync();//开始播放ijkMediaPlayer.start();}@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {}};
}