出于项目需要,做了一个基于ijkplayer的demo;
ijkplayer是bilibili的一个开源项目;
https://github.com/Bilibili/ijkplayer
首先加入依赖:
刚开始直接搜索ijkplayer,出来的东西不好用;后来改成直接引用下面的全称OK了;
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'
简单到令人发指的布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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/m_sview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<TextView
android:id="@+id/tv"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_width="120dp"
android:layout_height="45dp"
android:text="@string/start"
android:textColor="#fff"
android:background="#77789009"
android:gravity="center"
/>
</RelativeLayout>
建个工具类:
import android.content.Context;
import android.net.Uri;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import java.io.IOException;
import java.util.Map;
import tv.danmaku.ijk.media.player.IMediaPlayer;
import tv.danmaku.ijk.media.player.IjkMediaPlayer;
public