winform的一个插入视频问题

winform的framework可以插入视频
但是我用了core框架却不支持
有什么办法可以让core框架插入视频

WinForms的Framework在Windows上使用的是Windows Media Player COM组件来支持视频的播放。由于.NET Core框架的设计不同于.NET Framework,因此不能直接使用Windows Media Player COM组件。不过,您仍然可以使用其他开源的第三方库来在.NET Core WinForms应用程序中播放视频。以下是几个可用的库:

  • LibVLCSharp:是一个基于VLC媒体播放器引擎的.NET标准库,可以在.NET Core应用程序中使用。您可以使用其提供的VideoView控件来嵌入视频播放器。

  • FFmpeg.AutoGen:是一个使用FFmpeg多媒体处理库的.NET标准库,它可以在.NET Core应用程序中使用。您可以使用其提供的AVPlayer控件来嵌入视频播放器。

  • DirectX库:DirectX是一个游戏开发库,但也可以用于WinForms应用程序中的视频播放。您可以使用其提供的Video类来嵌入视频播放器。

需要注意的是,这些库都需要一些学习和设置才能正确地集成到您的应用程序中。另外,您还需要考虑视频格式的兼容性和其他问题,以确保您的应用程序可以正确地播放视频。

可以按照以下步骤在WinForm .NET Core应用程序中使用LibVLCSharp播放视频:

  • 首先,在Visual Studio中安装LibVLCSharp NuGet包。您可以在NuGet包管理器中搜索“LibVLCSharp”并安装最新版本。
  • 在窗体中添加一个Panel控件来承载视频播放器。
  • 创建一个LibVLC实例和一个VideoView控件实例。在Form类中添加以下代码:
using LibVLCSharp.Shared; // 引入LibVLCSharp命名空间

public partial class Form1 : Form
{
    private LibVLC _libVLC; // 声明LibVLC实例
    private VideoView _videoView; // 声明VideoView控件实例

    public Form1()
    {
        InitializeComponent(); // 初始化窗体控件

        Core.Initialize(); // 初始化LibVLCSharp

        // 创建LibVLC实例
        _libVLC = new LibVLC();

        // 创建VideoView控件
        _videoView = new VideoView();
        _videoView.Location = new Point(0, 0); // 设置VideoView控件在Panel控件中的位置
        _videoView.Size = panel1.Size; // 设置VideoView控件的大小
        _videoView.Dock = DockStyle.Fill; // 设置VideoView控件随Panel控件自适应大小
        panel1.Controls.Add(_videoView); // 将VideoView控件添加到Panel控件中
    }
}
  • 播放视频。您可以在需要播放视频时调用以下代码:
var media = new Media(_libVLC, new Uri("path_to_video_file")); // 创建Media实例,指定要播放的视频文件
_mediaPlayer = new MediaPlayer(media) { EnableHardwareDecoding = true }; // 创建MediaPlayer实例,并启用硬件解码
_videoView.MediaPlayer = _mediaPlayer; // 将MediaPlayer实例赋值给VideoView控件的MediaPlayer属性
_mediaPlayer.Play(); // 播放视频

在这里,path_to_video_file是您要播放的视频文件的路径。_mediaPlayer是MediaPlayer实例。

  • 在Form关闭事件中释放资源。在Form类中添加以下代码:
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
    _mediaPlayer?.Stop(); // 停止播放
    _mediaPlayer?.Dispose(); // 释放MediaPlayer实例
    _libVLC?.Dispose(); // 释放LibVLC实例
}

在.NET Core框架中,您可以使用第三方库来插入视频,例如LibVLCSharp。以下是一个简单的示例,演示如何使用LibVLCSharp在WinForms应用程序中播放视频:

1.安装LibVLCSharp NuGet包

2.在窗体上添加一个控件,比如Panel控件

3.在窗体的代码中,创建一个VideoView控件,并将其添加到Panel控件中:


using LibVLCSharp.WinForms;

public partial class Form1 : Form
{
    private VideoView _videoView;

    public Form1()
    {
        InitializeComponent();

        _videoView = new VideoView();
        _videoView.Dock = DockStyle.Fill;
        panel1.Controls.Add(_videoView);
    }
}

4.在按钮单击事件中,使用LibVLCSharp打开视频:


using LibVLCSharp;
using LibVLCSharp.Shared;

private void button1_Click(object sender, EventArgs e)
{
    // 初始化 LibVLC
    Core.Initialize();

    // 创建一个 LibVLC 实例
    var libVLC = new LibVLC();

    // 创建一个 Media 实例
    var media = new Media(libVLC, new Uri("your_video_file_path"));

    // 设置 VideoView 的 MediaPlayer 属性
    _videoView.MediaPlayer = new MediaPlayer(media) { EnableHardwareDecoding = true };

    // 播放视频
    _videoView.MediaPlayer.Play();
}

这样,单击按钮时,视频将开始播放。您可以根据需要修改代码,例如将视频文件路径替换为URL等。