private MediaController mController;
private VideoView mVideoView;
private File mTmpFile = null;
/**
解决用VideoView 播放一些视频无法播放问题
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video);
init();
}
private void init() {
mProgressDialog = new ProgressDialog(this);
mVideoView = (VideoView) findViewById(R.id.surface_video);
mVideoView.requestFocus();
mController = new MediaController(this);
mVideoView.setMediaController(mController);
mVideoView.setOnPreparedListener(this);
mVideoView.setOnCompletionListener(this);
mVideoView.setOnErrorListener(this);
String url = getIntent().getExtras().getString(MainActivity.VIDEO_URL_EXTRA_KEY);
url = getCacheDir().toString().concat("/" + VideoLoaderTask.VIDEO_DIR + "/").concat(url);
copyToTmpFile(url);//在setVideoPath调用即可
mVideoView.setVideoPath(mTmpFile.getAbsolutePath());
mProgressDialog.show();
mVideoView.start();
}
@Override
public void onDestroy() {
if (mTmpFile != null) {
mTmpFile.delete();
}
super.onDestroy();
}
private void copyToTmpFile(String url) {
File f = new File(url);
try {
mTmpFile = File.createTempFile("video", null);
mTmpFile.deleteOnExit();
FileInputStream is = new FileInputStream(f);
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
FileOutputStream fos = new FileOutputStream(mTmpFile);
fos.write(buffer);
fos.close();
} catch (Exception e) {
mVideoView.setVideoURI(Uri.parse(url));
}
}
解决用VideoView 播放一些视频无法播放问题
最新推荐文章于 2021-07-11 18:17:55 发布