【发布时间】:2023-03-15 19:05:01
【问题描述】:
最近在尝试决定让 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);
我也在我项目的 main 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 属性似乎都为空。当试图将控件的 Media 设置为在
之上创建的媒体对象时NullReferenceException
检查 VLC 控制对象 Media 确实等于 null,但我不确定为什么它没有正确初始化。
【问题讨论】:
-
是否有可能包含 NullReferenceException 的调用堆栈?鉴于上面的代码,vlcControl1 或 media 都不能为空,因此异常必须来自 Play 方法内部的逻辑。
-
今天晚些时候我会添加调用堆栈信息,我认为这可能是函数调用中的某些内容。 @Raj,该示例是为旧版本的 DLL 编写的,并且大部分代码不再有效。