【问题标题】:Play video using DirectX in C# WinForm在 C# WinForm 中使用 DirectX 播放视频
【发布时间】:2018-01-03 05:16:25
【问题描述】:

我想实现几乎类似here 的东西。我想要一个同时支持图像或视频的控件。这将播放一段时间。

我可以使用 WMP(Windows 媒体播放器)对象显示视频。但现在我正在尝试使用 DirectX 来渲染图像或视频。

请帮助我。欢迎提出建议。

这是我尝试过的。

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;

using Microsoft.DirectX.AudioVideoPlayback;
using Microsoft.DirectX;

namespace WindowsPlayerDirectX
{
  public partial class Form1 : Form
  {
     private Video video;

  public Form1()
{
    InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{

}


private void button1_Click(object sender, EventArgs e)
{
    //int height = panel1.Height;
    //int width = panel1.Width;

    try
    {
        MessageBox.Show("Hi", "Test");
        openFileDialog1.Filter = "Image Files(jpg,png,bmp,gif)|*.jpg;*.jpeg;*.png;*.bmp;*.gif|all files|*.*";
        if (openFileDialog1.ShowDialog() == DialogResult.OK)
        {
          //   video = new Video(openFileDialog1.FileName,false);
            pictureBox1.Load(openFileDialog1.FileName);

        }
    }catch (Exception ex)
    {
        MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
    }
}

private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
{

}

private void button2_Click(object sender, EventArgs e)
{
    //video = new Video("D:\\Wildlife.wmv", false);
    //video.Owner = panel1;
    //video.Stop();
    //video.Dispose();
    //if (!video.Playing)
    //    video.Play();
    //else
    //    MessageBox.Show("File already playing D:\\Wildlife.wmv ", "Info");


    //OpenFileDialog openFileDialog = new OpenFileDialog();
    openFileDialog1.ShowDialog();
    openFileDialog1.Title = "Select video file..";
    openFileDialog1.InitialDirectory = Application.StartupPath;
    openFileDialog1.DefaultExt = ".avi";
    openFileDialog1.Filter = "Media Files|*.mpg;*.avi;*.wma;*.mov;*.wav;*.mp2;*.mp3|All Files|*.*";
    video = new Video(openFileDialog1.FileName);

    video.Owner = panel1;
    panel1.Width = 700;
    panel1.Height = 390;


   }
   }}

【问题讨论】:

  • 您究竟需要什么帮助?有什么错误吗?代码问题?等
  • 点击按钮 button2_Click ,没有任何反应。即使放置一个简单的消息框也不会出现。应用程序只是挂起。

标签: c# winforms video media-player digital


【解决方案1】:

我绝不是 DirectX 应用程序方面的专家,但我用 OpenGL 做了一个...

我猜缺少的是某种Surface 来渲染视频。

顺便说一句,.Net 中的 Microsoft DirectX 似乎已被弃用。我想你最好还是用 SharpDx。

【讨论】:

  • 我以为Panel控件会用来渲染视频,但我不确定。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-01
  • 1970-01-01
  • 2014-09-23
  • 2018-12-09
  • 1970-01-01
相关资源
最近更新 更多