我正在尝试在面板上播放视频文件。我找到了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
的引用。
上面的代码是表单加载事件。现在,当我尝试运行应用程序时,它有时会永远保持不开我的应用程序。有时它会打开,但我的面板没有显示视频。这个问题有解决方案吗?
答案 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
在表单加载事件中:
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)
使用以下内容(适用于.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>