IjkPlayer【1】 Demo Android的最简单实现
程序员文章站
2022-03-07 20:19:19
一、目的 Ijkplayer最为一个经典的视屏播放开源框架,虽然是开源框架对于刚入门的人来说看到源码以及脚本的各种操作肯定是无从下手,这里先把Ijkplayer简化为一个最简单的项目只是简单的播放,当实现了播放后可再根据自己的需要的功能去查api,这个项目向当前ijkplayer的"hello world"。只需要按照以下步骤就可以实现播放。 二、创建项目以及基础配置 1)创建项目后在model的build.gradle的dependencies{}中添加添加以下依赖。......
一、目的
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">
<SurfaceView
android: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;
@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
推荐阅读
-
vue-cli下的vuex的简单Demo图解(实现加1减1操作)
-
Android开发实现的简单计算器功能【附完整demo源码下载】
-
Spring源码学习:第1步--在Spring源码中添加最简单的Demo代码
-
IjkPlayer【1】 Demo Android的最简单实现
-
Android TV开发,最简单的方式实现焦点控件放大动画
-
安卓开发学习笔记(五):史上最简单且华丽地实现Android Stutio当中Webview控件https/http协议的方法
-
Android最简单的状态切换布局实现教程
-
Android Studio 爬虫 之 简单实现使用 jsoup/okhttp3 爬取购物商品信息的案例demo(附有详细步骤)
-
Android自定义View(1)——初步实现简单的自定义View
-
vue-cli下的vuex的简单Demo图解(实现加1减1操作)