在面板上播放视频文件

时间:2015-01-11 08:42:02

标签: vb.net visual-studio-2010

我正在尝试在面板上播放视频文件。我找到了social.msdn forum的示例代码,但下载链接指向directx可再发行组件&示例代码中提到的SDK更新已损坏。因此,我手动搜索了directx 9.0C并从this link安装了它。以下是我使用的代码。

Imports Microsoft.DirectX.AudioVideoPlayback

Dim videoFile As Video = New Video("G:/Shared Data/myvid-2012.avi")
videoFile.Owner = Panel1
videoFile.Play()

我不得不手动浏览&添加Microsoft.DirectX.AudioVideoPlayback的引用。

上面的代码是表单加载事件。现在,当我尝试运行应用程序时,它有时会永远保持不开我的应用程序。有时它会打开,但我的面板没有显示视频。这个问题有解决方案吗?

3 个答案:

答案 0 :(得分:2)

不幸的是,您依赖于Microsoft在.NET 1.0天内发布的.NET Managed DirectX包装器。这是一个麻烦的图书馆,他们在10年前停止了它。您描述的问题听起来像#34;加载程序锁定",该库存在长期问题。可能的原因是停止了。没有"官方" DirectX的.NET包装器,但开源项目接受了挑战。 SharpDX和SlimDX是最受欢迎的。

视频播放技术发展迅速,非常重要的是不要陷入旧的东西。有很多很多选择。桌面应用程序的规范现代解决方案在this howto article中有所描述。当然不是专家组,我不得不建议今天远离DirectShow包装。您可以轻松嵌入Windows Media Player,在this MSDN article中有详细描述。如果AVI播放是您唯一的要求,那么流行的AForge.NET library可能是合适的,AVIFileVideoSource类。

答案 1 :(得分:0)

您需要下载 2006年6月的directx SDK ,我相信它是托管directx的最后一个sdk

DirectX SDK-(June 2006)

在表单加载事件中:

Dim sz As Size = New Size(Panel1.Width, Panel1.Height)

Dim videoFile As Video = New Video("G:/Shared Data/myvid-2012.avi", False)
videoFile.Owner = Panel1

videoFile.Play() 'changes the size of panel

'Set the original size
Panel1.Size = sz 

答案 2 :(得分:0)

You can open the following

使用以下内容(适用于.net Framework 4.0)替换App.Config文件中的所有内容

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
</configuration>