IjkVideoView播放视频(支持avi格式的视频)

上一篇   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的源码

                    添加依赖的源码

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章