C# 试图在wpf中播放多个视频,但只播放了最后一个视频
我不知道我做得是否正确。 在这里,我试图播放wpf C#中视频文件夹中的所有视频,但它只播放最后一个视频,我如何修复此问题C# 试图在wpf中播放多个视频,但只播放了最后一个视频,c#,C#,我不知道我做得是否正确。 在这里,我试图播放wpf C#中视频文件夹中的所有视频,但它只播放最后一个视频,我如何修复此问题 // Go to video folder. var videosFolder = KnownFolders.VideosLibrary; // Here i get all the files in the video folder. var files = await videosFolder.
// Go to video folder.
var videosFolder = KnownFolders.VideosLibrary;
// Here i get all the files in the video folder.
var files = await videosFolder.GetFilesAsync();
// If there is no file do nothing.
if (files.Count == 0)
{
return;
}
// Here i am looping all the videos.
foreach (var video in files)
{
// Accessing each file in the video folder.
var file = await StorageFile.GetFileFromPathAsync(video.Path);
// ...
if (file == null)
{
return;
}
// Getting the path of a file.
var source = MediaSource.CreateFromStorageFile(file);
// ...
VideoPlayer.SetPlaybackSource(source);
}
在开始播放下一个视频之前,您不会等待每个视频完成。这就是为什么您只能看到最后一个视频实际播放。您不必等待每个视频完成后才开始播放下一个视频。这就是为什么您只能看到最后一个实际播放。您必须从订阅
MediaEnded
事件
在MediaElement完成音频或视频播放时发生
下面是一个示例代码(未测试!):
您必须从订阅
MediaEnded
事件
在MediaElement完成音频或视频播放时发生
下面是一个示例代码(未测试!):
这是什么
视频播放器
?你能提供一个例子吗?媒体元素表单xaml,很抱歉。我看不出有SetPlaybackSource
method一切都正常,它只是一个循环,在继续循环和线程之前,它不会等待视频播放完。Sleep()不起作用,但我确实包含了system.Threading Namespace我坚持使用该类型,因为我怀疑它应该有一些接口(异步方法或事件),可以用来让您知道它何时完成播放,但我们无法知道,因为我们不知道确切的类型这是什么视频播放器
?你能提供一个例子吗?媒体元素表单xaml,很抱歉。我看不出有SetPlaybackSource
method一切都正常,它只是一个循环,在继续循环和线程之前,它不会等待视频播放完。Sleep()不起作用,但我确实包含了system.Threading名称空间我坚持使用该类型,因为我怀疑它应该有一些接口(异步方法或事件),可以用来让您知道它何时完成播放,但我们无法知道,因为我们不知道我尝试使用Thread.Sleep(持续时间)的确切类型我得到了一个错误,但我确实包含了system.threadingThanx。现在它工作了,我创建了一个名为“MediaPlaybackList MediaPlaybackList”的容器;在这里我可以存储所有的“MediaPlaybackItem MediaPlaybackItem”;然后在循环之后是“VideoPlayer.SetPlaybackSource(MediaPlaybackList);”。。谢谢你们的帮助我尝试过使用Thread.Sleep(duration)我遇到了一个错误,但我确实包含了system.ThreadingTanx现在它工作了我创建了一个名为“MediaPlaybackList MediaPlaybackList”的容器,在那里我可以存储所有的“MediaPlaybackItem MediaPlaybackItem”;然后在循环之后“VideoPlayer.SetPlaybackSource(MediaPlaybackList);” .. ..谢谢你们的帮助。现在开始工作了。我创建了一个名为“MediaPlaybackList MediaPlaybackList”的容器,在这里我可以存储所有的“MediaPlaybackItem MediaPlaybackItem”;然后在循环“VideoPlayer.SetPlaybackSource(MediaPlaybackList);”。。谢谢你们的支持help@Thembalethu听到这个消息我很高兴。如果您觉得我的答案有用,请将其标记为答案:)Thanx现在开始工作了,我创建了一个名为“MediaPlaybackList MediaPlaybackList”的容器;我可以在其中存储所有的“MediaPlaybackItem MediaPlaybackItem”;然后在循环之后是“VideoPlayer.SetPlaybackSource(MediaPlaybackList);”。。谢谢你们的支持help@Thembalethu听到这个消息我很高兴。如果您觉得我的答案有用,请将其标记为答案:)
// subscribe once
VideoPlayer.MediaEnded += OnMediaEnded;
private void OnMediaEnded(object sender, RoutedEventArgs e)
{
var nextMediaSource = GetNextMediaSource();
if(nextMediaSource != null)
VideoPlayer.SetPlaybackSource(nextMediaSource);
}