作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 libvlcsharp 适用于我的 windows 和 android 项目。它非常好用且易于使用!但是我找不到任何方法让播放自动循环播放
我已经尝试使用媒体播放器事件处理程序来重新开始播放并在创建后将选项传递到媒体中,但似乎没有任何效果。
我试过:
loopSong = new Media(VLCMediaPlayer.LibVLC, xmlLoader.GetResourceStream(loopFileName));
loopSong.AddOption(":no-video");
loopSong.AddOption(":input-repeat");
和
static VLCMediaPlayer()
{
Core.Initialize();
LibVLC = new LibVLC();
MediaPlayer = new MediaPlayer(LibVLC);
MediaPlayer.EndReached += MediaPlayer_EndReached;
}
private static void MediaPlayer_EndReached(object sender, EventArgs e)
{
MediaPlayer.Stop();
MediaPlayer.Play();
}
播放就此停止。事件已调用,但 MediaPlayer.WillPlay 为 false,调用 Play 不执行任何操作。
最佳答案
这是一个众所周知的错误(至少我们知道),当您从 libvlc 回调调用 libvlc 时会发生这种错误。由于 Libvlc 从播放视频的线程调用事件,因此当您调用 Stop() 时,您正在同步等待该线程完成,从而导致死锁。
这是我为 Vlc.DotNet 提出的解决方法: https://github.com/ZeBobo5/Vlc.DotNet/wiki/Vlc.DotNet-freezes-(don't-call-Vlc.DotNet-from-a-Vlc.DotNet-callback)
public void MediaEndReached(object sender, EventArgs args)
{
ThreadPool.QueueUserWorkItem(() => this.MediaPlayer.Stop());
}
这可能会在 LibVLCSharp 的 future 版本中得到解决,请参阅 https://code.videolan.org/videolan/LibVLCSharp/issues/122
关于c# - 如何用libvlcsharp实现循环播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56487740/
我是一名优秀的程序员,十分优秀!