Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用Libvlcsharp实现循环播放_C#_Libvlc_Libvlcsharp - Fatal编程技术网

C# 如何使用Libvlcsharp实现循环播放

C# 如何使用Libvlcsharp实现循环播放,c#,libvlc,libvlcsharp,C#,Libvlc,Libvlcsharp,我的windows和android项目都有libvlcsharp。它非常好用!但是我找不到任何方法使回放自动循环 我曾尝试使用mediaplayer事件处理程序重新启动播放,并在创建后将选项传递到媒体中,但似乎没有任何效果 我试过: loopSong = new Media(VLCMediaPlayer.LibVLC, xmlLoader.GetResourceStream(loopFileName)); loopSong.AddOption(":no-video"); loopSong.Add

我的windows和android项目都有libvlcsharp。它非常好用!但是我找不到任何方法使回放自动循环

我曾尝试使用mediaplayer事件处理程序重新启动播放,并在创建后将选项传递到媒体中,但似乎没有任何效果

我试过:

loopSong = new Media(VLCMediaPlayer.LibVLC, xmlLoader.GetResourceStream(loopFileName));
loopSong.AddOption(":no-video");
loopSong.AddOption(":input-repeat");


播放完全停止。事件被调用,但MediaPlayer.WillPlay为false,调用Play不起任何作用。

这是一个众所周知的错误(至少我们知道),当您从libvlc回调调用libvlc时会发生。 由于Libvlc从播放视频的线程调用事件,因此当您调用Stop()时,您正在同步等待该线程完成,从而导致死锁

以下是我为Vlc.DotNet提出的解决方案:


这个问题可能会在未来版本的LibVLCSharp中得到解决,请参见

new LibVLC("--input-repeat=2")

播放列表API在LibVLC 4中更易于使用。

如果延迟1秒后在新线程/任务中启动
怎么办?谢谢,我很快就会试一试!没有内置的循环功能?据我所知,目前没有办法做到这一点。媒体列表API中可能有某些内容,但它已被弃用。libvlc的媒体播放器只能播放一种媒体。threadpool可以工作,但在播放循环中有一个明显的缺口。我将尝试使用两台媒体播放器,看看是否可以实现无缝播放。如果我没记错的话,LibVLC4计划进行无间隙播放。同时,试着使用两种媒体,并在第一种媒体播放时准备第二种媒体。我是libvlc的新手,所以我不确定你所说的准备是什么意思。你的意思是在播放之前将媒体加载到内存中?这比上面更干净,但仍然不是一个完美的循环。有趣的是,它实际上在歌曲实际结束前的一瞬间重新开始播放。Sas cube45说,从libvlc 4可以进行无间隙播放。
public void MediaEndReached(object sender, EventArgs args)
{
   ThreadPool.QueueUserWorkItem(() => this.MediaPlayer.Stop());
}
new LibVLC("--input-repeat=2")