欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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