2012-04-27 82 views
4

最近偶然發現了這篇文章,同時試圖決定讓VLC播放器進入C#的最佳方式。C#Vlc.DotNet庫 - 空參考異常

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控制的媒體和媒體屬性均爲空。當試圖控制的媒體設置爲高於

NullReferenceException 

檢查VLC控制對象介質上創建的媒體對象確實等於空,但我不知道爲什麼它沒有被正確初始化。

+0

有沒有可能包含NullReferenceException的調用堆棧?鑑於上面的代碼,既不vlcControl1或媒體可以爲空,所以異常必須從邏輯來的播放方法內。 – JoshL 2012-04-27 17:17:17

+0

看看這個 http://vlcdotnet.codeplex。com/wikipage?title = Presentation%20of%20Vlc.DotNet%20alpha%202 – RajN 2012-04-27 17:18:08

+0

今天晚些時候我會添加調用堆棧信息,我認爲它可能是函數調用自己內部的東西。 @Raj,這個例子是爲DLL的老版本編寫的,大部分代碼不再起作用。 – jackocurly0074 2012-04-27 18:01:12

回答

4

我無法獲得該程序使用最新版本的Vlc.dotnet庫的工作,而是使用它被張貼拉吉的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文件夾中。