Ijkplayer最为一个经典的视屏播放开源框架,虽然是开源框架对于刚入门的人来说看到源码以及脚本的各种操作肯定是无从下手,这里先把Ijkplayer简化为一个最简单的项目只是简单的播放,当实现了播放后可再根据自己的需要的功能去查api,这个项目向当前ijkplayer的"hello world"。只需要按照以下步骤就可以实现播放。
当完成ijkpler的"hello world"后肯定你会想知道更多的功能函数,下一篇介绍使用的功能函数 IjkPlayer【2】 API 查询
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'
}
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<?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">
<SurfaceView
android:id="@+id/surfaceView"
android:layout_width="match_parent"
android:layout_height="match_parent"></SurfaceView>
</androidx.constraintlayout.widget.ConstraintLayout>
public class MainActivity extends AppCompatActivity {
private SurfaceView showView;
private IjkMediaPlayer ijkMediaPlayer;
@Override
protected 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() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
//设置显示界面的Holder
ijkMediaPlayer.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();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
};
}
本文地址:https://blog.csdn.net/qq_34950682/article/details/107282924
如对本文有疑问, 点击进行留言回复!!
Xamarin 安卓 相机 各种坑 目标API Android 6以后,我选的目标API版本是 Android 10
Android 9.0+软件某些功能突然暴毙:cleartext not permitted
Android : Resource is not a Drawable (color or path)
Flutter问题集锦——Android Studio 4.0.1 在AVD Manger中启动模拟器报“unable to locate abd”
网友评论