简介
vatamio:读音:维他米欧
Vitamio能够流畅播放720P甚至1080P高清MKV,FLV,MP4,MOV,TS,RMVB等常见格式的视频,
还可以在Android 与 iOS 上跨平台支持 MMS, RTSP, RTMP, HLS(m3u8) 等常见的多种视频流媒体协议,包括点播与直播。
使用Vitamio框架主要是它能够播放足够多的视频格式(称万能播放器),而android系统的播放器只能mp4,3gp,.m3u8这几种格式。
集成
Android如何集成Vitamio
Android视频播放实现的三种办法
导入vitamio
从官网或者GitHub上下载项目,目录如下:
建立vitamio module,把src、res、AndroidManifest、lib文件夹拷贝进去,
因为so文件在lib文件夹,所以module的build.gradle添加:
android{
sourceSets {
main {
//so文件放在libs时才使用
jniLibs.srcDirs = ['libs']
}
}
}
注意:完成后app module添加vitamio的模块依赖。
初始化:
//一定要初始化
Vitamio.initialize(this);
布局:
<io.vov.vitamio.widget.VideoView
android:id="@+id/video1"
android:layout_width="match_parent"
android:layout_height="300dp"
android:layout_marginTop="10dp" />
代码:
注意导包来自vitamio包。
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import io.vov.vitamio.MediaPlayer;//
import io.vov.vitamio.Vitamio;//
import io.vov.vitamio.widget.MediaController;
import io.vov.vitamio.widget.VideoView;//
public class Main3Activity extends Activity
implements MediaPlayer.OnPreparedListener,
MediaPlayer.OnErrorListener,
MediaPlayer.OnCompletionListener {
private VideoView video;
private Button btn;
private EditText et;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
//一定要初始化
Vitamio.initialize(this);
initView();
}
private void initView() {
video = (VideoView) findViewById(R.id.video1);
btn = (Button) findViewById(R.id.btn1);
et = (EditText) findViewById(R.id.et2);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String path = Environment.getExternalStorageDirectory().getPath() + "/" +
et.getText().toString();
Log.e("Main3Activity", "path====" + path);
Uri uri = Uri.parse(path);
video.setVideoURI(uri);
video.setMediaController(new MediaController(Main3Activity.this));
//设置监听
video.setOnPreparedListener(Main3Activity.this);
video.setOnErrorListener(Main3Activity.this);
video.setOnCompletionListener(Main3Activity.this);
}
});
}
@Override
public void onPrepared(MediaPlayer mp) {
video.start();
Log.e("Main3Activity", "====onPrepared====");
}
@Override
public void onCompletion(MediaPlayer mp) {
Log.e("Main3Activity", "====onCompletion====");
}
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
Log.e("Main3Activity", "====onError====");
return false;
}
}