Xamarin.Forms 下 Vlc player 切换应用返回后黑屏问题咨询
问题根因
该问题是Android平台生命周期适配问题,应用切后台时系统会销毁视频渲染用的Surface载体,你当前的代码没有处理切后台回前台的渲染恢复逻辑,导致MediaPlayer只有音频输出、没有画面渲染。
解决方案
- 在宿主Activity的
OnPause生命周期回调中调用VideoView1.Suspend(),挂起画面渲染逻辑:
protected override void OnPause() { base.OnPause(); VideoView1?.Suspend(); }
- 在宿主Activity的
OnResume生命周期回调中调用VideoView1.Resume(),恢复画面渲染,自动重新绑定可用Surface到播放器:
protected override void OnResume() { base.OnResume(); VideoView1?.Resume(); }
- 若上述配置后仍有概率复现,可在OnResume中增加手动重绑定MediaPlayer的兜底逻辑:
protected override void OnResume() { base.OnResume(); if (mediaPlayer != null && mediaPlayer.IsPlaying) { VideoView1.MediaPlayer = null; VideoView1.MediaPlayer = mediaPlayer; } }
- 可选适配优化:你当前初始化LibVLC时传入的
--preferred-resolution=-1代表输出源文件最高分辨率,部分Android 8.0设备对高分辨率视频的Surface恢复支持存在兼容性问题,可尝试修改为--preferred-resolution=1080限制最高输出分辨率,降低兼容性问题出现概率。
内容的提问来源于stack exchange,提问作者Bkkkkkk90
相关产品推荐
相关产品推荐

