问题描述
我目前有一个使用libVLC和Xamarin.Forms的非常好的视频播放器。我唯一的小问题是,开始播放视频时,我目前得到的屏幕通常只有1或2秒钟是灰色的。我认为这与解码有某种关系,因为目前只有视频中的更改才会赋予其颜色,例如剪切或查找视频之类的东西会完全清除效果。
有没有一种方法可以在不寻求媒体的情况下清除当前帧,或者通过其他方法来消除此小问题?是我忘记调用的某些功能吗?
当前我正在通过播放文件
disMedia = new Media(_libVLC,currentVideo.downloadFileUrl,FromType.FromPath,options.ToArray());
vvideo.MediaPlayer.Play(disMedia);
其中的选项为“开始时间= {开始时间}”
(这是一个20秒长的yt剪辑,在打开文件https://youtu.be/ck4f02VBDnk时将显示当前的灰色 bug )
解决方法
我发现了问题。出于某种原因,在创建视频的同一帧中调用vvideo.MediaPlayer.Play([media])将使其在最初的2秒钟左右变为灰色。只需添加await Task.Delay(1);
并使load方法异步即可完全删除它。唯一的问题是,即使延迟仅为1ms,加载视频也需要1秒钟左右的时间。
比较添加await Task.Delay(1);的结果;并不是。我得到500-1400ms的时间是10ms。使用灰色错误,我可以立即加载视频,但是使用Delay 1ms,可以加载1s。这看起来与Android的vlc非常相似,在加载下载的视频时,黑屏的显示时间为0.5s-1.5s。这是另一个错误吗?我觉得加载应该是即时的,就像以前的灰色bug一样。
这非常令人困惑,我真的不知道这是否是解决此问题的首选解决方案。