读书人

请问个使用DirectX SDK开发视频播放功

发布时间: 2012-01-26 19:40:46 作者: rapoo

请教个使用DirectX SDK开发视频播放功能的问题
这几天看了这么篇文章:使用DirectX实现视频播放,觉得挺有意思,于是自己也装了个SDK想试试。一样是WinForm程序,控件也是一模一样,代码目前我也没找到有什么区别,但是运行中会报错。.cs代码如下:

C# code
 
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.DirectX.AudioVideoPlayback;

namespace Video
{
public partial class Form1 : Form
{
private Microsoft.DirectX.AudioVideoPlayback.Video MyVideo = null;

public Form1()
{
InitializeComponent();
}

private void Open_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
// 记录panel组件的大小
int height = panel1.Height;
int width = panel1.Width;

// 如果存在打开的Video文件,释放它
if (MyVideo != null)
{
MyVideo.Dispose();
}

// 打开一个新的Video文件
MyVideo = new Microsoft.DirectX.AudioVideoPlayback.Video(openFileDialog1.FileName);

// 把Video文件分配给创建的Panel组件
MyVideo.Owner = panel1;

// 以记录的panel组件的大小来重新定义
panel1.Width = width;
panel1.Height = height;

// 播放AVI文件的第一帧,主要是为了在panel中显示
MyVideo.Play();
MyVideo.Pause();
}

//确定窗体中的各按钮状态
if (MyVideo == null)
{
Play.Enabled = false;
Pause.Enabled = false;
Stop.Enabled = false;
}
else
{
Play.Enabled = true;
Pause.Enabled = true;
Stop.Enabled = true;
}

}

private void Play_Click(object sender, EventArgs e)
{
if (MyVideo != null)
{
MyVideo.Play();
}


}

private void Pause_Click(object sender, EventArgs e)
{
if (MyVideo != null)
{
MyVideo.Pause();
}
}

private void Stop_Click(object sender, EventArgs e)
{
if (MyVideo != null)
{
MyVideo.Stop();
}
}
}
}



但是运行时,当我选择了视频文件之后,会抛出“应用程序错误”的异常。跟踪的结果是在Open_Click事件中的MyVideo = new Microsoft.DirectX.AudioVideoPlayback.Video(openFileDialog1.FileName)一句出的问题。小弟对DirectX的SDK也是糊涂状态,因此现在向各位高手请教:
1、报这个错误的原因是我的代码有问题?或者是因为没安装解码器?
2、这段程序是WinForm的,那么可不可以写成WebForm的?可以的话AudioVideoPlayback.Video.Owner应该怎么设置?
3、这段程序对视频文件的类型有要求吗?是任何类型的文件都可以播放还是只支持特定格式?

除此之外如果各位如果有通用的视频播放代码(可以兼容多种播放格式的)的不知道可不可以和小弟分享下。提前谢过各位

[解决办法]
1.你有装directx sdk环境吗?
2.webform不行.因为他不是后台运行,需要界面支持.
3.常见的格式是可以的,像mpg,rm/rmvb,avi(但有些压缩过的可能有问题)

[解决办法]
把那句话放到try里吧,看看异常提示是什么
[解决办法]
directx sdk环境不对吧?格式也可能不对,LZ再好好看看。
[解决办法]
我想应该是环境的问题,在好好看看吧
[解决办法]
up
[解决办法]
只有顶的份了

读书人网 >asp.net

热点推荐