gpt4 book ai didi

c# - 如何用libvlcsharp实现循环播放

转载 作者:行者123 更新时间:2023-12-01 21:56:43 27 4
gpt4 key购买 nike

我的 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com