4

最近在尝试决定让 VLC 播放器进入 C# 的最佳方法时偶然发现了这篇文章。

VLC 媒体播放器有 C# 接口吗?

我下载了 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 和 Medias 属性似乎都是空的。当试图将控件的媒体设置为上面创建的媒体对象时

NullReferenceException

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

4

1 回答 1

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 文件夹包含在 build 文件夹中。

于 2012-04-30T15:07:29.803 回答