欢迎访问我的网站,希望内容对您有用,感兴趣的可以加入免费知识星球。

利用Vitamio做自己的视频播放器

Android 迷途小书童 4年前 (2020-01-19) 2668次浏览 0个评论

软硬件环境

  • Mac Pro
  • Android Studio 1.3.1
  • 酷比魔方7寸平板

前言

Vitamio是一款AndroidiOS平台上的多媒体开发框架,支持硬件解码与GPU渲染。它的应用很广,很多知名的APP都在使用。Vitamio目前分为标准版和至尊版,标准免费版本仅限个人开发者使用,非个人移动应用均需要购买使用授权。

准备工作

VitamioGithub地址 https://github.com/yixia/VitamioBundle 下载SDK

Android Studio中新建一个工程名为DJMediaPlayer,再把下载下来的vitamioBundle目录底下的vitamio文件夹以模块的形式导入到新建的工程当中,接着将vitamio模块下的build.gradle文件中的compileSdkVersionbuildToolsVersionminSdkVersiontargetSdkVersion都修改成跟app模块下的build.gradle相应字段一样的数据。

djmediaplayer_01

最后修改下app模块下build.gradle,增加依赖语句

djmediaplayer_02

开始编码

布局

总共分2块,第一是视频列表布局,这里设计成一个listview,另一个是视频播放时的布局,这里用到了vitamio里的io.vov.vitamio.widget.VideoView控件,直接用来播放视频,另外通过手指滑动来控制音量大小则用的是FrameLayout

扫描SD视频文件

这个的做法跟 自己动手做android音乐播放器一文 里的音乐扫描是一样的

播放器的代码

这时候该轮到vitamio上场了,直接用它提供的VideoViewMediaController

videoView = (VideoView)findViewById(R.id.surface_view);
mediaController = new MediaController(this);

//设置成撑满全屏
videoView.setVideoLayout(VideoView.VIDEO_LAYOUT_STRETCH,0);
videoView.setMediaController(mediaController);
videoView.requestFocus();

videoView.setVideoPath(movieUrl);

除此之外,VideoViewsetOnPreparedListenersetOnCompletionListenersetOnErrorListener都需要实现一下。

播放器上的手势控制

这里只实现了3个手势。分别对应手势类GestureDetector的三个方法,即onDoubleTaponScrollonFling
第1个手势是双击屏幕,实现播放/暂停功能。这个要重写onDoubleTap方法

if (videoView.isPlaying()) {
    videoView.pause();
} else {
   videoView.start();
}

第2个手势是水平滑动屏幕,实现快进/快退功能。这个要重写onFling方法

currentPosition = videoView.getCurrentPosition();

  /*向左滑*/
  if (e1.getX() - e2.getX() > 120) {

      if (currentPosition < 10000) {
          currentPosition = 0;
          videoView.seekTo(currentPosition);
      } else {
          videoView.seekTo(currentPosition - 10000);
      }

  } else if (e2.getX() - e1.getX() > 120) {
  /*向右滑*/
      if (currentPosition + 10000 > duration) {
          currentPosition = duration;
          videoView.seekTo(currentPosition);
      } else {
          videoView.seekTo(currentPosition + 10000);
      }

  }

第3个手势是上下滑动屏幕,实现音量的升降功能。这个要重写onScroll方法

//上下滑动
if (Math.abs(distanceY) / Math.abs(distanceX) > 3) {
  float mOldY = e1.getY();
  int y = (int) e2.getRawY();
  Display disp = getWindowManager().getDefaultDisplay();
  int windowHeight = disp.getHeight();

  onVolumeSlide((mOldY - y) / windowHeight);
}

djmediaplayer_05

djmediaplayer_03

djmediaplayer_04

备注

发现在工程清单文件中增加SD卡的权限时

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

Android Studio在自动补全时,android.permission这些字符全是大写,导致程序跑起来达不到自己想要的效果,这里要注意,要写成小写。

源码下载

Github地址 https://github.com/xugaoxiang/DJMediaPlayer

参考文献

喜欢 (0)

您必须 登录 才能发表评论!

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

请关闭 Adblock 等类似浏览器插件,然后刷新页面访问,感谢您的支持!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.