2012-04-27 5 views
4

VLC 플레이어를 C#으로 변환하는 가장 좋은 방법을 결정하는 동안이 게시물을 최근에 발견했습니다. C# Vlc.DotNet 라이브러리 - Null 참조 예외

Does VLC media player have a C# interface?

는 내가 dll 파일을 다운로드하여 내 프로젝트로 수입,하지만 내가 그들을 사용하는 방법의 실제 몰랐다 깨달았다. 누구든지 작동하는이 코드의 Windows Forms 예제가 있습니까? 시도 코드는 다음과 같다 - 나는 또한 내 프로젝트의 주요 program.cs에서이 링크의 코드를 사용하고

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); 

.

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

내가 경험 현재의 문제는 프로젝트를 시작하는 것이 NullReferenceException이를 throw에 그것을 얻을 때이다에 ->

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 

위에서 만든 미디어 객체에 컨트롤의 미디어를 설정하려고 할 때 참으로 동일한 널 (null)을 수행하지만 제대로 초기화되지 않은 이유는 확실하지 않다.

+0

NullReferenceException에 대한 호출 스택을 포함 할 수 있습니까? 위의 코드가 주어지면 vlcControl1이나 미디어가 null 일 수 없으므로 Play 메서드 내부의 논리에서 예외가 발생해야합니다. – JoshL

+0

이것을 확인하십시오 http : //vlcdotnet.codeplex.com/wikipage? title = 프레젠테이션 % 20of % 20Vlc.DotNet % 20alpha % 202 – RajN

+0

오늘 콜 스택 정보를 추가 할 예정입니다. 함수 호출 내에서 직접 호출 할 수도 있습니다. @Raj, 그 예제는 DLL의 이전 버전 용으로 작성되었으며 많은 코드가 더 이상 작동하지 않습니다. – jackocurly0074

답변

4

Vlc.dotnet 라이브러리의 최신 버전을 사용하여 작동하도록 프로그램을 가져올 수 없지만 대신 Raj가 게시 한 alpha 2 버전을 사용했습니다. VLC 버전 1.1.5를이 라이브러리와 함께 사용하여 기본 예제가 제대로 작동하도록했습니다. 나의 최종 목표는 rtsp 장치에서 스트리밍하는 것이었지만이 라이브러리는 아직이 기능을 지원하지 않습니다. VLC를 사용하기위한 좋은 C#을 래퍼를 사용하고자하는 사람들을위한

는 다음이 좋은 예입니다 -이 프로젝트 VLC 1.1.1에서 라이브러리 파일을 사용

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

와 잘 작동합니다. VLC에서 일반적으로 사용하는 모든 기능을 거의 지원하지만 사용하는 기능을 훨씬 더 많이 제어 할 수 있습니다.

이러한 DLL 래퍼를 사용할 때 발생하는 많은 문제는 잘못된 버전의 원본 DLL 파일에서 발생했습니다. 현재 VLC 라이브러리는 32 비트이므로 x86 모드를 사용하여 컴파일해야합니다. 그렇지 않으면 libvlc.dll이 제대로로드되지 않고 응용 프로그램이 중단됩니다. 위의 예제를 사용하여 libvlc.dll, libvlccore.dll 및 plugins 폴더가 빌드 폴더에 포함되어 있는지도 확인해야합니다.