上一篇 Ijkplayer播放视频(支持AVI格式的视频) 讲了,Ijkplayer和SurfaceView结合,播放视频。这一篇我们把Ijkpayer和SurfaceView进行封装,封装成Ijkplayer,这篇就讲讲怎么使用IjkVideoview,这里仍旧是支持avi格式的。
我把Ijkpayer和SurfaceView封装成一个lib,取名 ijkplayerlib,我会放上我的项目地址,需要的直接下载下来,就可以了。我也把它传到了github上,所以觉得下载麻烦的也可以直接添加依赖。下面我会分别介绍添加lib和添加依赖两种方法。
一,添加lib 。
1,建一个项目,导入 ijkplayerlib,如图。
2,在app的 build.gradle 中添加依赖。
implementation 'tv.danmaku.ijk.media:ijkplayer-java:0.8.8'
implementation 'tv.danmaku.ijk.media:ijkplayer-exo:0.8.8'
3,添加权限。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
4,添加布局。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent">
<EditText
android:id="@+id/edit"
android:layout_width="match_parent"
android:layout_height="50dp" />
<Button
android:layout_width="match_parent"
android:id="@+id/btn"
android:layout_height="50dp" />
<com.airbridge.ijkplayerlib.widget.IjkVideoView
android:id="@+id/videoview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
5,使用IjkVideoview。
String path = Environment.getExternalStorageDirectory().getPath() + "/a11.avi";//存放在手机存储卡根目录下
....
videoview.setVideoURI(Uri.parse(path));
videoview.start();
完整的使用代码。
package com.gl.ijkplayer;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
import com.airbridge.ijkplayerlib.widget.IjkVideoView;
public class MainActivity extends AppCompatActivity {
IjkVideoView videoview;
EditText edit;
// String path = "android.resource://" + getPackageName() + "/" + R.raw.a11;//放在程序内部 raw文件夹
// String path = "http://ivi.bupt.edu.cn/hls/cctv2.m3u8";//直播链接
// String path = "http://mp4.vjshi.com/2013-05-28/2013052815051372.mp4";//网络获取视频资源
// String path = Environment.getExternalStorageDirectory().getPath() + "/a12.flv";//存放在手机存储卡根目录下
String path = Environment.getExternalStorageDirectory().getPath() + "/a11.avi";//存放在手机存储卡根目录下
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
PermissionUtils.getPermiss(this);//获得权限
videoview = findViewById(R.id.videoview);
edit = findViewById(R.id.edit);
edit.setText(path);
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (PermissionUtils.getPermiss(MainActivity.this)){
path = edit.getText().toString();
videoview.setVideoURI(Uri.parse(path));
videoview.start();
}
}
});
}
@Override
protected void onResume() {
super.onResume();
if (!videoview.isPlaying()){
videoview.onResume();
}
}
@Override
protected void onPause() {
super.onPause();
if (videoview.isPlaying()){
videoview.onPause();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
videoview.stopPlayback();
}
}
二,添加依赖。
1,建一个项目,在app的build.gradle中添加依赖。
implementation 'com.github.gaolongliuxinghun:ijkvideoview:0.0.1'
2,添加权限。
做法和第一种方法添加lib,中的做法一样。
3,添加布局。
做法和第一种方法添加lib,中的做法一样。
4,使用IjkVideoview。
做法和第一种方法添加lib,中的做法一样。
源码大放送:添加lib的源码,