You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UWP如何打开多个视频?播放文件夹内所有文件功能异常如何解决

UWP 文件夹内视频顺序播放实现方案

问题根源

你当前代码的问题在于:foreach循环是同步执行的,调用Play()方法后不会阻塞等待当前视频播放完成,循环会在极短时间内遍历完所有文件,连续覆盖MediaPlayer的Source属性,只有最后一次设置的源会保留,因此只会播放最后一个视频。

实现步骤

你需要通过监听视频播放完成事件触发下一个视频的加载,而非同步循环设置播放源,具体调整如下:

  • 首先在页面类中定义全局字段,存储播放列表和当前播放索引:
// 页面类内部全局字段
private List<StorageFile> _videoFileList = new List<StorageFile>();
private int _currentPlayIndex = 0;
  • 页面初始化阶段注册MediaPlayer的播放完成事件,比如在页面构造函数、OnNavigatedTo方法中添加:
mediaPlayerElement.MediaPlayer.MediaEnded += MediaPlayer_MediaEnded;
  • 修改文件夹选择后的逻辑,仅存储文件列表并触发第一个视频播放即可,无需遍历所有文件设置源:
FolderPicker folderPicker = new FolderPicker();
folderPicker.SuggestedStartLocation = PickerLocationId.Desktop;
// 建议按需过滤视频格式,避免非视频文件加载报错,不要直接用*匹配所有文件
folderPicker.FileTypeFilter.Add(".mp4");
folderPicker.FileTypeFilter.Add(".avi");
folderPicker.FileTypeFilter.Add(".wmv");
folderPicker.FileTypeFilter.Add(".mkv");

var folder = await folderPicker.PickSingleFolderAsync();
if (folder != null)
{
    var allFiles = await folder.GetFilesAsync();
    _videoFileList = allFiles.ToList();
    _currentPlayIndex = 0;
    if (_videoFileList.Any())
    {
        PlayVideoByIndex(_currentPlayIndex);
    }
}
  • 封装播放方法和播放完成事件的处理逻辑:
// 按索引播放指定视频
private void PlayVideoByIndex(int index)
{
    // 索引越界代表所有视频播放完成,直接返回
    if (index < 0 || index >= _videoFileList.Count)
        return;

    var targetFile = _videoFileList[index];
    mediaPlayerElement.MediaPlayer.Source = MediaSource.CreateFromStorageFile(targetFile);
    mediaPlayerElement.MediaPlayer.PlaybackSession.PlaybackRate = 2;
    mediaPlayerElement.MediaPlayer.Play();
}

// 单个视频播放完成后的回调事件
private void MediaPlayer_MediaEnded(MediaPlayer sender, object args)
{
    _currentPlayIndex++;
    // 事件回调在非UI线程触发,需要切回UI线程操作播放控件
    DispatcherQueue.TryEnqueue(() =>
    {
        PlayVideoByIndex(_currentPlayIndex);
    });
}

补充说明:如果需要兼容播放错误自动跳过的逻辑,可以额外监听PlaybackSession.PlaybackStateChanged事件,检测到播放状态异常时也触发下一个视频的加载。

内容的提问来源于stack exchange,提问作者Ренат Ахметшин

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 12:51:01