在 Winforms 应用程序中使用 Windows Media Player 播放视频时出现问题

Posted

技术标签:

【中文标题】在 Winforms 应用程序中使用 Windows Media Player 播放视频时出现问题【英文标题】:Problems playing video with Windows Media Player in Winforms App 【发布时间】:2021-11-25 11:09:34 【问题描述】:

目标。我在 Visual Studio 2019 中创建了一个 9-Form 应用程序,我正在尝试以我的一种形式播放一个视频文件,该文件与可执行文件( .exe) 我的 winforms 应用程序。

步骤。我通过“COM 组件”安装了 Windows Media Player 功能,并在我的工具箱中按原样显示(尽管该图标没有出现在工具箱内的标题旁边)。之后,我将它拖放到表单中,以便根据 Microsoft 文档编写以下代码。

private void button1_Click(object sender, System.EventArgs e)

      axWindowsMediaPlayer1.URL = "video delphi.mp4";

实际结果。 虽然当我在表单中拖动播放器时,它会按原样显示,但是当我运行应用程序时,它会变成空白,因为它从未被放置在那里或在我的表单中被拖动/使用。我从属性中检查了播放器是否可见并已启用。在某些时候,通过按下播放按钮,我只能听到音频而没有视频。

收到的错误/通知。 1. 当我第一次尝试查看发生了什么时,我在应用程序运行期间收到了一条通知,表明该文件不受支持,尽管安装了向我展示 (.mp4) 扩展名,它只显示 (,) 符号。该通知不是来自 VS 2019,而是来自玩家本身。 2. 目前我收到 C00D1179 错误,而上述通知不再出现。

【问题讨论】:

我不相信 Windows Media player 在不安装编解码器的情况下支持 .mp4。这是一个可能有用的链接:codecguide.com/download_kl.htm您可以找到其他可能也有用的链接。 不!我试过了!!! 我在下面添加了分步说明。 【参考方案1】:

要使用 Windows Media Player 播放 .mp4 文件,请尝试以下经过测试的方法。

先决条件:如果尚未安装,则必须安装“mp4”编解码器 - 例如K-Lite codec pack 或其他编解码器包。

VS 2019

创建一个新项目

点击文件

选择新建

选择项目

选择以下选项:

点击Windows Forms App (.NET Framework)

点击下一步

输入所需的项目名称(例如:MediaPlayerTest)

点击创建

添加参考

在VS菜单中,点击Project 选择添加参考... 点击COM 选择 Windows 媒体播放器 点击确定

打开解决方案资源管理器

在VS菜单中,点击查看 选择解决方案资源管理器

在 Designer 中打开 Form1

在解决方案资源管理器中,双击 Form1.cs

打开工具箱

在VS菜单中,点击查看 选择工具箱 搜索:Windows 媒体播放器 如果未找到 Windows Media Player,请将其添加到工具箱中。

将 Windows Media Player 添加到工具箱(如果工具箱中尚不存在)

右键单击所有 Windows 窗体 选择选择项目...。 加载完成后,点击COM组件。 选中“Windows 媒体播放器**。 点击确定 Windows Media Player 现在应该存在于工具箱的“所有 Windows 窗体”下。

将 Windows Media Player 添加到 Form1

将 Windows Media Player 从工具箱拖到 Form1 上。

向 Form1 添加按钮

将两个按钮从工具箱拖到 Form1 上 将按钮 1 重命名为 btnPlay 将按钮 2 重命名为 btnStop 双击btnPlay 创建点击事件处理程序 双击btnStop 创建点击事件处理程序

修改/添加代码到 Form1.cs

在解决方案资源管理器中,右键单击 Form1.cs 选择查看代码

将所需的 .mp4 文件(例如:ocean.mp4)复制到您的 .exe 文件所在的文件夹中。

Form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace MediaPlayerTest

    public partial class Form1 : Form
    
        public Form1()
        
            InitializeComponent();
        

        private void Form1_Load(object sender, EventArgs e)
        
            axWindowsMediaPlayer1.uiMode = "none";
        

        private void btnPlay_Click(object sender, EventArgs e)
        
            string filename = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().FullName), "ocean.mp4");
            axWindowsMediaPlayer1.URL = filename;
        

        private void btnStop_Click(object sender, EventArgs e)
        
            //stop
            axWindowsMediaPlayer1.Ctlcontrols.stop();
        
    

测试媒体播放器

运行你的程序 点击播放按钮

资源

Embedding the Windows Media Player Control in a C# Solution

【讨论】:

非常感谢您的详细解答。第二天我发布了我的问题,我发现我使用的模板是简单的“Windows Forms App”,而不是其中包含“(.NET Framework)”的模板。我测试了它,我对自己的愚蠢感到非常沮丧,因为我已经完成了我的项目,我不能从头开始,只是因为这个错误。再次感谢!!!

以上是关于在 Winforms 应用程序中使用 Windows Media Player 播放视频时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

在 WinForms 应用程序中使用 WPF,将应用程序资源放在哪里?

我可以在 WinForms 应用程序中使用哪个向导控件?

在 Winforms 应用程序中使用 Windows Media Player 播放视频时出现问题

WinForms 应用程序中的地理位置

VS2019 WinForms 在诊断工具中没有显示任何事件

在 C# winforms 应用程序中使用文本框过滤 Treeview