Android中使用ijkPlayer最简单的入门示例

4,768 阅读1分钟

IjkPlayer的Github地址

1.引入库

//必须   
implementation 'tv.danmaku.ijk.media:ijkplayer-java:0.8.8'   
implementation 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.8.8'   
//可选
//implementation 'tv.danmaku.ijk.media:ijkplayer-armv5:0.8.8'
//implementation 'tv.danmaku.ijk.media:ijkplayer-arm64:0.8.8'
//implementation 'tv.danmaku.ijk.media:ijkplayer-x86:0.8.8'
//implementation 'tv.danmaku.ijk.media:ijkplayer-x86_64:0.8.8'

2.创建布局文件

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
   xmlns:tools="http://schemas.android.com/tools"  
   android:layout_width="match_parent"  
   android:layout_height="match_parent"
    tools:context=".MainActivity">  
  <FrameLayout       
       android:layout_width="500dp"  
       android:layout_height="500dp" 
       android:background="@color/black">  
      <SurfaceView         
          android:id="@+id/surface_view"   
          android:layout_width="match_parent"   
          android:layout_height="match_parent"  
          android:layout_gravity="center" />   
 </FrameLayout>
</FrameLayout>

3.创建IjkMediaPlayer编定SurfaceView然后播放

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";

    String url = "http://vfx.mtime.cn/Video/2019/03/09/mp4/190309153658147087.mp4";
    private SurfaceView mSurfaceView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        IjkMediaPlayer player = new IjkMediaPlayer();

        mSurfaceView = findViewById(R.id.surface_view);
        mSurfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
            @Override
            public void surfaceCreated(@NonNull SurfaceHolder holder) {
                player.setDisplay(holder);
                Log.d(TAG, "surfaceCreated: ");
            }

            @Override
            public void surfaceChanged(@NonNull SurfaceHolder holder, int format, int width, int height) {
                Log.d(TAG, "surfaceChanged: ");
            }

            @Override
            public void surfaceDestroyed(@NonNull SurfaceHolder holder) {
                Log.d(TAG, "surfaceDestroyed: ");
            }
        });

        try {
            player.setDataSource(url);
            player.prepareAsync();
            player.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

4.在清单文件中声明相关权限

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

总结:这是一个最简单的IjkPlayer的入门使用。