- 设置播放源,支持本地或者网络资源(如:HLS、RTSP):
videoView.setVideoURI(uri) - 添加播放控制器MediaController:可选
MediaController controller = new MediaController(this);
controller.setMediaPlayer(this);
videoView.setMediaController(controller); - 添加WebVTT格式的字幕:可选
MediaFormat mediaFormat = MediaFormat.createSubtitleFormat(MediaFormat.MIMETYPE_TEXT_VTT, Locale.getDefault().getLanguage());
mediaFormat.setInteger(MediaFormat.KEY_IS_FORCED_SUBTITLE, 1);
videoView.addSubtitleSource(inputStream, mediaFormat); - 完整demo
package com.example.lance.mediaplayer;
import android.content.res.AssetManager;
import android.media.MediaFormat;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;
import java.io.IOException;
import java.io.InputStream;
import java.util.Locale;
public class MainActivity extends AppCompatActivity implements MediaController.MediaPlayerControl {
VideoView videoView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
videoView = (VideoView) findViewById(R.id.video_view);
Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.test);
videoView.setVideoURI(uri);
//添加播放控制器
MediaController controller = new MediaController(this);
controller.setMediaPlayer(this);
videoView.setMediaController(controller);
//添加字幕
InputStream inputStream = null;
try {
AssetManager assetManager = getAssets();
inputStream = assetManager.open("subtitle.vtt");
MediaFormat mediaFormat = MediaFormat.createSubtitleFormat(MediaFormat.MIMETYPE_TEXT_VTT, Locale.getDefault().getLanguage());
mediaFormat.setInteger(MediaFormat.KEY_IS_FORCED_SUBTITLE, 1);
videoView.addSubtitleSource(inputStream, mediaFormat);
} catch (IOException e) {
e.printStackTrace();
} finally {
if(inputStream != null){
//todo
}
}
videoView.start();
}
@Override
protected void onDestroy() {
videoView.stopPlayback();
super.onDestroy();
}
@Override
public void start() {
videoView.start();
}
@Override
public void pause() {
videoView.pause();
}
@Override
public int getDuration() {
return videoView.getDuration();
}
@Override
public int getCurrentPosition() {
return videoView.getCurrentPosition();
}
@Override
public void seekTo(int pos) {
videoView.seekTo(pos);
}
@Override
public boolean isPlaying() {
return videoView.isPlaying();
}
@Override
public int getBufferPercentage() {
return 0;
}
@Override
public boolean canPause() {
return false;
}
@Override
public boolean canSeekBackward() {
return false;
}
@Override
public boolean canSeekForward() {
return false;
}
@Override
public int getAudioSessionId() {
return 0;
}
}
subtitle.vtt
WEBVTT
00:00:01.000 --> 00:00:03.000
Good day everyone
00:00:04.000 --> 00:00:07.000
my name is John Smith
00:00:08.000 --> 00:00:10.000
test by lance