C#Vlc.DotNet库 - 空引用异常

时间:2012-04-27 17:11:01

标签: c# vlc

最近偶然发现了这篇文章,同时试图决定将VLC播放器变成C#的最佳方法。

Does VLC media player have a C# interface?

我下载了dll文件并将它们导入到我的项目中,但后来意识到我并不知道如何使用它们。有没有人得到这个代码的Windows窗体示例?试用的代码如下所示 -

Vlc.DotNet.Core.Medias.MediaBase media = new
    Vlc.DotNet.Core.Medias.PathMedia(@"C:\Users\...\SampleVideos\Wildlife.wmv");

Vlc.DotNet.Forms.VlcControl vlcControl1 = new Vlc.DotNet.Forms.VlcControl();
vlcControl1.Play(media);

我也在我项目的主program.cs中使用此链接中的代码。

http://vlcdotnet.codeplex.com/wikipage?title=Forms

我遇到的当前问题是,在启动项目时,它会在到达 - >

时抛出NullReferenceException
vlcControl1.Play(media)

问题似乎与vlcControl有关,但我不确定为什么。文档似乎相当薄,我在codeplex网站上找不到任何有用的例子。如果有人有工作表格的例子或知道我可能错过了什么,请告诉我!

以下是发生错误时出现的调用堆栈 - >

RTSPViewer_Test.exe!RTSPViewer_Test.Form1.Form1_Load(object sender, 
    System.EventArgs e) Line 31 + 0xd bytes C#
RTSPViewer_Test.exe!RTSPViewer_Test.Program.Main() Line 30 + 0x1d bytes C#

调试时,VLC控件的Media and Medias属性显示为null。尝试将控件的媒体设置为

上方创建的媒体对象时
NullReferenceException

检查VLC控件对象Media确实等于null,但我不确定为什么它没有正确初始化。

1 个答案:

答案 0 :(得分:4)

我无法使用最新版本的Vlc.dotnet库让程序工作,而是使用Raj发布的alpha 2版本。我使用VLC版本1.1.5与此库来获得正常运行的基本示例。我的最终目标是从rtsp设备流式传输,但是这个库似乎还没有支持这个功能。

对于任何想要使用好的C#包装器来使用VLC的人来说,这是一个很好的例子 -

http://www.codeproject.com/Articles/109639/nVLC

使用VLC 1.1.1中的库文件和该项目,并且工作正常。支持您在VLC中通常使用的所有功能,但可以更好地控制您使用它们的功能。

使用这些DLL包装器时出现的许多问题都源于源DLL文件的不正确版本。 VLC库目前只有32位,因此您需要确保使用x86模式进行编译,否则libvlc.dll将无法正确加载,应用程序将崩溃。使用上面的示例,您还必须确保libvlc.dll,libvlccore.dll和plugins文件夹包含在构建文件夹中。