C#LibVLC,大多数情况下,前2秒为灰色帧解码错误?

问题描述

我目前有一个使用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一样。

这非常令人困惑,我真的不知道这是否是解决此问题的首选解决方案。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...