Visual Studio 2022中MediaPlayer使用问题:无法找到类及激活控件
问题原因与解决方案
你遇到的核心问题是:贴的代码是WPF/UWP平台的媒体播放API,和你当前的Windows Forms项目不兼容,所以找不到MediaPlayer类,控件也不可用。以下是具体解决办法:
方案1:使用WinForms原生支持的Windows Media Player控件
这是最贴合WinForms环境的原生方案:
- 右键工具箱 → 选择项 → 切换到「COM组件」标签 → 勾选Windows Media Player → 点击确定。
此时控件会出现在工具箱中,可直接拖到窗体上,默认命名为axWindowsMediaPlayer1。 - 用以下代码播放目标地址:
// 设置流媒体地址 axWindowsMediaPlayer1.URL = "http://amssamples.streaming.mediaservices.windows.net/49b57c87-f5f3-48b3-ba22-c55cfdffa9cb/Sintel.ism/manifest(format=m3u8-aapl)"; // 启动播放 axWindowsMediaPlayer1.Ctlcontrols.play(); - 注意:Windows 7自带的Windows Media Player对m3u8格式支持有限,若无法播放,需安装对应的解码组件。
方案2:使用NuGet第三方库(更适配流媒体)
如果原生控件无法满足需求,推荐用第三方库实现,以下是两种常用选择:
选项A:LibVLCSharp.WinForms(推荐,支持全格式)
基于VLC播放器,支持几乎所有流媒体格式,包括m3u8:
- 打开NuGet包管理器,搜索并安装
LibVLCSharp.WinForms和VideoLAN.LibVLC.Windows两个包。 - 安装完成后,
MediaPlayerControl会出现在工具箱中,拖到窗体上。 - 编写播放代码:
using LibVLCSharp.WinForms; using LibVLCSharp.Shared; // 初始化LibVLC核心 Core.Initialize(); var libVLC = new LibVLC(); // 创建媒体对象 var media = new Media(libVLC, "http://amssamples.streaming.mediaservices.windows.net/49b57c87-f5f3-48b3-ba22-c55cfdffa9cb/Sintel.ism/manifest(format=m3u8-aapl)", FromType.FromLocation); // 启动播放 mediaPlayerControl1.MediaPlayer.Play(media);
选项B:NAudio(轻量,适合音频为主场景)
轻量级音频处理库,视频播放需额外结合WinForms控件渲染,适合简单场景:
- 安装NuGet包
NAudio。 - 音频播放示例代码:
using NAudio.Wave; var waveOut = new WaveOutEvent(); var reader = new MediaFoundationReader("http://amssamples.streaming.mediaservices.windows.net/49b57c87-f5f3-48b3-ba22-c55cfdffa9cb/Sintel.ism/manifest(format=m3u8-aapl)"); waveOut.Init(reader); waveOut.Play();
关键说明
- 你当前的Windows Forms项目默认不引用WPF的程序集,所以手动添加
using System.Windows.Media无效——那个命名空间属于WPF平台,和WinForms是两套独立的UI框架,新手不建议混用。 - Windows 7已停止微软官方支持,.NET 6在该系统上的功能有限,如果条件允许,建议升级到Windows 10/11以获得更好的开发体验。
内容的提问来源于stack exchange,提问作者Dmitriy
相关产品推荐
相关产品推荐

