Android VideoView播放本地视频短暂黑屏的解决方法
Android VideoView 大约 824 字解决办法
视频真正开始渲染后再去掉VideoView 的背景。
最终的解决办法是在onPrepared回调中,加添加一个setOnInfoListener的监听,在这个监听中将VideoView的背景清除。
具体修改如下:
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.setOnInfoListener(new MediaPlayer.OnInfoListener() {
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START) {
videoView.setBackgroundColor(Color.TRANSPARENT);
}
return true;
}
});
}
});
这段代码的关键是MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START这个变量,Android SDK中给出的注释是:这个状态表示展现了用于渲染的第一帧视频,也就是这个时候才真正将视频帧展示到了屏幕上。
然而,这个变量是在4.1版本才引入的,4.1之前的版本依然不支持。4.1之前的版本,只能暂时通过方法三来优化,好在旧版本的机器占比已经很少。
阅读 1714 · 发布于 2019-04-11
————        END        ————
扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看
换一批
-
走进Rust:数据类型阅读 291
-
设计模式之装饰者模式阅读 359
-
PHP压缩HTML代码阅读 368
-
IntelliJ Idea选择Open matching files in associated application后更改打开方式阅读 2009
-
Android ScrollView不在最顶部问题阅读 592
-
数据结构:平衡二叉树阅读 21
-
走进RUst:泛型阅读 341
-
Android ContentProvider批量插入数据阅读 1530
-
OpenResty使用ngx.timer.at完成异步日志记录阅读 1429
-
HTTP Content-Type为application/x-www-form-urlencoded时注意事项阅读 755