Android VideoView 播放本地视频短暂黑屏的解决方法
Android 评论 2 大约 805 字解决办法
视频真正开始渲染后再去掉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
之前的版本依然不支持,好在旧版本的机器占比已经很少。
阅读 6131 · 发布于 2019-04-11
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb扫描下方二维码关注公众号和小程序↓↓↓
昵称:
-
Nancy 2楼
亲测无用
Safari | Mac OSX 2024-02-21 -
helloword 1楼
这个办法不行
Chrome | Windows 10 2021-07-30
随便看看
换一批
-
HTML 禁止在移动端缩放阅读 1695
-
Spring Boot Tomcat 报错 The valid characters are defined in RFC 7230 and RFC 3986阅读 431
-
Docker 运行结束后自动销毁容器阅读 1796
-
JavaScript 判断 Android 还是 iOS阅读 754
-
IDEA Debug 人为修改数值模拟数据不一致情况阅读 1412
-
VirtualBox 安装 Alpine Linux阅读 1256
-
Kubernetes 查看所有 Pod 日志阅读 1285
-
IDEA 忽略空 catch 块告警提示阅读 1810
-
Docker 部署 Prometheus阅读 2875
-
Nginx 配置之 worker_processes阅读 4685