Page 5 of 7

Re: C# Wrapper for libvlc 0.9.0 - Testers Required

Posted: 24 Nov 2008 13:00
by benshole
I think i found a solution to the problem i was having changing media. I thought i would just throw it up here incase anyone else was having a similar issue.

The problem i was having was that when calling video_set_parent the libvlc_core object was losing its handle.
I sorted it by creating a new instance of lib_vlc core and all other object whenever changing media. I initially didnt think about doing this as i thought it would mean waiting for VLC to load in the background again. However this doesn't seem to be the case.

However there is still an issue when closing the forms application as it appears VLC doesn't die gracefully. I get a debug request whenever i close the program.
I'm not sure if this is due to libvlc or the c# wrapper. But its certainly annoying thats for sure!

Re: C# Wrapper for libvlc 0.9.0 - Testers Required

Posted: 23 Dec 2008 15:36
by Beardless2
"However there is still an issue when closing the forms application as it appears VLC doesn't die gracefully. I get a debug request whenever i close the program.
I'm not sure if this is due to libvlc or the c# wrapper. But its certainly annoying thats for sure!"

I think its libvlc. I have used a Delphi wrapper and the ActiveX plugins and i have problems with destroying vlc. Stopping the video before destroying does seem to help a bit but i am still getting it to hang.

Re: C# Wrapper for libvlc 0.9.0 - Testers Required

Posted: 23 Dec 2008 15:48
by e.beckers
Hi

I think there is a memory leak in the "C#" wrapper.
I've made a small simple application which plays 1 video over and over again.
The more times you play the video, the more memory gets consumed until you reach a point where the system is out of memory.
On my pc it leaks +/- 512Kbyte for each time the file gets played.
Note that the memory leak does not happen when playing the file in VLC.exe itself

For those interested, the demo app (with source) can be downloaded from:
http://www.sendspace.com/file/ngmgej

to test simply:
- donwload & unrar it to a folder
- run it (VlcMemoryLeak\VlcMemoryLeak\bin\Debug\VlcMemoryLeak.exe)
- click on the open file button and select a movie
- when its playing the movie, take a note of the memory usage in the task manager
- wait until movie is played >10 times
- look at the memory usage in the task manager again...

Re: C# Wrapper for libvlc 0.9.0 - Testers Required

Posted: 17 Jan 2009 19:00
by T0T4L
Hello guys,

I need to know if it's possible to set a Buffertime (ora http caching) and how using this wrapper.

Thanks in advance!

Re: C# Wrapper for libvlc 0.9.0 - Testers Required

Posted: 27 Jan 2009 15:20
by elund
Sorry, I've been busy on project work. I'll be releasing the source of the Media player interface and wrapper soon.
Hi Marx!

Nice work! Did you ever release the source of the Media Player interface?

I want to test your C# Wrapper, because I have some problems with the other 2 wrappers discussed in this forum.
A GUI would be very nice for a flying start :)

Thanks in advance, Elund

Re: C# Wrapper for libvlc 0.9.0 - Testers Required

Posted: 27 Jan 2009 20:04
by astlin
exception while running Marx_libvlc_wrapper_test.exe: System.BadImageFormatException:
HRESULT: 0x8007000B
в Marx_libvlc_wrapper.Marx_libvlc_exception.libvlc_exception_init(libvlc_exception_struct& ex)
в Marx_libvlc_wrapper.Marx_libvlc_exception.init(libvlc_exception_struct& ex) в C:\Users\DNA User\Documents\Visual Studio 2008\Projects\Ma
rx_libvlc_wrapper\Marx_libvlc_wrapper\Marx_libvlc_exception.cs:line 50
в Marx_libvlc_wrapper.Marx_libvlc_exception..ctor(libvlc_exception_struct& ex) в C:\Users\DNA User\Documents\Visual Studio 2008\Projects\M
arx_libvlc_wrapper\Marx_libvlc_wrapper\Marx_libvlc_exception.cs:line 41
в Marx_libvlc_wrapper_test.Program.Main(String[] args) в C:\Users\DNA User\Documents\Visual Studio 2008\Projects\Marx_libvlc_wrapper\Marx_
libvlc_wrapper_test\Program.cs:line 49

using vlc 0.9.4, any ideas?

Re: C# Wrapper for libvlc 0.9.0 - Testers Required

Posted: 28 Jan 2009 11:51
by elund
Hi!

Can someone sketch how to create and use a Marx_libvlc_media_list object?

Thanks in advance, Elund

Re: C# Wrapper for libvlc 0.9.0 - Testers Required

Posted: 29 Jan 2009 10:56
by elund
Can someone sketch how to create and use a Marx_libvlc_media_list object?
Is there missing an implementation of libvlc_media_list_player in the Marx C# Wrapper?

Best regards, Elund

Re: C# Wrapper for libvlc 0.9.0 - Testers Required

Posted: 02 Feb 2009 15:59
by elund
Is there missing an implementation of libvlc_media_list_player in the Marx C# Wrapper?
I have now implemented Marx_libvlc_media_list_player:

Code: Select all

using System; using System.Runtime.InteropServices; using System.IO; namespace Marx_libvlc_wrapper { #region Handle for libvlc_media_list_player public class Marx_libvlc_media_list_player_handle : SafeHandle { public Marx_libvlc_media_list_player_handle() : base(IntPtr.Zero, true) { } public override bool IsInvalid { get { return handle == IntPtr.Zero; } } protected override bool ReleaseHandle() { if (!IsInvalid) { libvlc_media_list_player_release(this); handle = IntPtr.Zero; } return true; } protected override void Dispose(bool disposing) { ReleaseHandle(); base.Dispose(disposing); } [DllImport("libvlc")] private static extern void libvlc_media_list_player_release(Marx_libvlc_media_list_player_handle libvlc_media_list_player_handle); } #endregion public class Marx_libvlc_media_list_player { private Marx_libvlc_media_list_player_handle libvlc_media_list_player_handle; #region Constructor public Marx_libvlc_media_list_player(Marx_libvlc_core_handle libvlc_core_handle, ref libvlc_exception_struct ex) { libvlc_media_list_player_handle = libvlc_media_list_player_new(libvlc_core_handle, ref ex); } #endregion #region Properties public Marx_libvlc_media_list_player_handle Handle { get { return libvlc_media_list_player_handle; } } #endregion #region Methods public void set_media_player(Marx_libvlc_media_player_handle libvlc_media_player_handle, ref libvlc_exception_struct ex) { libvlc_media_list_player_set_media_player(libvlc_media_list_player_handle, libvlc_media_player_handle, ref ex); } public void set_media_list(Marx_libvlc_media_list_handle libvlc_media_list_handle, ref libvlc_exception_struct ex) { libvlc_media_list_player_set_media_list(libvlc_media_list_player_handle, libvlc_media_list_handle, ref ex); } public void play(ref libvlc_exception_struct ex) { libvlc_media_list_player_play(libvlc_media_list_player_handle, ref ex); } public void pause(ref libvlc_exception_struct ex) { libvlc_media_list_player_pause(libvlc_media_list_player_handle, ref ex); } public int is_playing(ref libvlc_exception_struct ex) { return libvlc_media_list_player_is_playing(libvlc_media_list_player_handle, ref ex); } //TODO: libvlc_state public void play_item_at_index(int index, ref libvlc_exception_struct ex) { libvlc_media_list_player_play_item_at_index(libvlc_media_list_player_handle, index, ref ex); } public void play_item(Marx_libvlc_media_handle libvlc_media_handle, ref libvlc_exception_struct ex) { libvlc_media_list_player_play_item(libvlc_media_list_player_handle, libvlc_media_handle, ref ex); } public void stop(ref libvlc_exception_struct ex) { libvlc_media_list_player_stop(libvlc_media_list_player_handle, ref ex); } public void next(ref libvlc_exception_struct ex) { libvlc_media_list_player_next(libvlc_media_list_player_handle, ref ex); } #endregion #region DLL Imports [DllImport("libvlc")] private static extern Marx_libvlc_media_list_player_handle libvlc_media_list_player_new(Marx_libvlc_core_handle libvlc_core_handle, ref libvlc_exception_struct ex); [DllImport("libvlc")] private static extern void libvlc_media_list_player_release(Marx_libvlc_media_list_player_handle libvlc_media_list_player_handle); [DllImport("libvlc")] private static extern void libvlc_media_list_player_set_media_player(Marx_libvlc_media_list_player_handle libvlc_media_list_player_handle, Marx_libvlc_media_player_handle libvlc_media_player_handle, ref libvlc_exception_struct ex); [DllImport("libvlc")] private static extern void libvlc_media_list_player_set_media_list(Marx_libvlc_media_list_player_handle libvlc_media_list_player_handle, Marx_libvlc_media_list_handle libvlc_media_list_handle, ref libvlc_exception_struct ex); [DllImport("libvlc")] private static extern void libvlc_media_list_player_play(Marx_libvlc_media_list_player_handle libvlc_media_list_player_handle, ref libvlc_exception_struct ex); [DllImport("libvlc")] private static extern void libvlc_media_list_player_pause(Marx_libvlc_media_list_player_handle libvlc_media_list_player_handle, ref libvlc_exception_struct ex); [DllImport("libvlc")] private static extern int libvlc_media_list_player_is_playing(Marx_libvlc_media_list_player_handle libvlc_media_list_player_handle, ref libvlc_exception_struct ex); //TODO: libvlc_state [DllImport("libvlc")] private static extern void libvlc_media_list_player_play_item_at_index(Marx_libvlc_media_list_player_handle libvlc_media_list_player_handle, int index, ref libvlc_exception_struct ex); [DllImport("libvlc")] private static extern int libvlc_media_list_player_play_item(Marx_libvlc_media_list_player_handle libvlc_media_list_player_handle, Marx_libvlc_media_handle libvlc_media_handle, ref libvlc_exception_struct ex); [DllImport("libvlc")] private static extern void libvlc_media_list_player_stop(Marx_libvlc_media_list_player_handle libvlc_media_list_player_handle, ref libvlc_exception_struct ex); [DllImport("libvlc")] private static extern void libvlc_media_list_player_next(Marx_libvlc_media_list_player_handle libvlc_media_list_player_handle, ref libvlc_exception_struct ex); #endregion } }
I can add media's to a media_list: libvlc_media_list.add_media(libvlc_media.Handle, ref ex);
I can play items at a certain index: libvlc_media_list_player.play_item_at_index(2, ref ex);

But when I call libvlc_media_list_player.play(ref ex); I had expected that it plays all the items in the list.

Is this a wrong understanding of libvlc? Or what do I miss?

Best regards, Elund

Re: C# Wrapper for libvlc 0.9.0 - Testers Required

Posted: 15 Feb 2009 16:25
by tamiro44
Hi Marx,
Is there any API for setting text on top of the video?
It should be important for various usages and i saw vlc allow this
at the original GUI.

Thanks,
Tamiro.

Re: C# Wrapper for libvlc 0.9.0 - Testers Required

Posted: 05 Mar 2009 11:18
by Jeremiah
Good job done here.

One thing I found that was a problem for me working with non-english/unicode/UTF-8 filenames is that VLC wouldn't play the file.
To solve this problem... we need to modify the type of the filename string as shown below.

[DllImport("libvlc")]
private static extern VLCMediaHandle libvlc_media_new(VLCCoreHandle vlcCoreHandle, [MarshalAs(UnmanagedType.LPArray)] byte[] mri, ref VLCExceptionDetails ex);


Because the original C++ function definition was: char*, it is not completely accurate to send Uris into libvlc.dll as string. A String type in C# is Unicode (UTF-16) while libvlc.dll uses UTF-8! So no non-english Uris!!!

The code above solves this problem. To set a new media do this.

UTF8Encoding utf8 = new UTF8Encoding();
vlcMediaHandle = libvlc_media_new(vlcCoreHandle, utf8.GetBytes(link), ref ex);
does anyone konw how to do like this about changing the libvlc_new() function of the parameter args?

Code: Select all

[DllImport("libvlc")] private static extern CoreHandle libvlc_new(int argc, string[] args, ref ExceptionStruct ex);
i got puzzled......

Re: C# Wrapper for libvlc 0.9.0 - Testers Required

Posted: 12 Mar 2009 01:05
by blich
Can somebody post a link to the latest version of this? I tried one a link earlier in the thread, but I get the following message when I try to run it. Any ideas?

System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
at WinControls.VlcWrapper.Marx_libvlc_exception.libvlc_exception_init(libvlc_exception_struct& ex)
at WinControls.VlcWrapper.Marx_libvlc_exception.init(libvlc_exception_struct& ex) in C:\Users\brianlic\Desktop\oi\TestVlc\VlcWrapper\Marx_libvlc_exception.cs:line 50
at WinControls.VlcWrapper.Marx_libvlc_exception..ctor(libvlc_exception_struct& ex) in C:\Users\brianlic\Desktop\oi\TestVlc\VlcWrapper\Marx_libvlc_exception.cs:line 41
at WinControls.VlcWrapper.VlcWrapperUserControl.OnLoad(EventArgs e) in C:\Users\brianlic\Desktop\oi\TestVlc\VlcWrapper\VlcWrapperUserControl.cs:line 131
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Re: C# Wrapper for libvlc 0.9.0 - Testers Required

Posted: 12 Mar 2009 09:07
by tamiro44
I think that at the bottom of page two but i'll glad to newer version

Marx libvlc Wrapper for 0.9.0 version 0.0.2 (Alpha Release)
http://www.2shared.com/file/3586524/6c4 ... apper.html

Re: C# Wrapper for libvlc 0.9.0 - Testers Required

Posted: 12 Mar 2009 16:31
by mohamnag
Hi there,
greate job, I used this lib to play an stream from network but I was unable to find out how to save that stream to a file. It would be much better if I was able to pass the config strings that VLC itself builds to this lib. I mean if I can pass it something like ":sout=#duplicate{dst=display,dst=std{access=file,dst=D:\ghfghg.ps}}" to say the lib to save my stream.
Is there any way?

Re: C# Wrapper for libvlc 0.9.0 - Testers Required

Posted: 12 Mar 2009 22:17
by blich
Weird. I still get the same exception. Is this supported on x64? (Sorry, VLC dev noob).

Re: C# Wrapper for libvlc 0.9.0 - Testers Required

Posted: 13 Mar 2009 09:42
by mohamnag
Hi there,
greate job, I used this lib to play an stream from network but I was unable to find out how to save that stream to a file. It would be much better if I was able to pass the config strings that VLC itself builds to this lib. I mean if I can pass it something like ":sout=#duplicate{dst=display,dst=std{access=file,dst=D:\ghfghg.ps}}" to say the lib to save my stream.
Is there any way?
still no answer?

Re: C# Wrapper for libvlc 0.9.0 - Testers Required

Posted: 15 Mar 2009 08:10
by tamiro44
No.
I'll glad to know either.

Re: C# Wrapper for libvlc 0.9.0 - Testers Required

Posted: 15 Mar 2009 17:33
by mohamnag

Re: C# Wrapper for libvlc 0.9.0 - Testers Required

Posted: 15 Mar 2009 17:54
by tamiro44
Thanks again

Re: C# Wrapper for libvlc 0.9.0 - Testers Required

Posted: 14 Apr 2009 23:01
by Smurph
I keep getting a DLLNotFoundException at runtime regardless of what I do. I have libvlc.dll and the plugins folder in the executable directory. I even added the VLC install directory to the Path variable as recommended elsewhere on this forum. Is there anything else needed to get the test project to run?

Here is my output:
Unhandled Exception: System.DllNotFoundException: Unable to load DLL 'libvlc': T
he specified procedure could not be found. (Exception from HRESULT: 0x8007007F)
at Marx_libvlc_wrapper.Marx_libvlc_exception.libvlc_exception_init(libvlc_exc
eption_struct& ex)
at Marx_libvlc_wrapper.Marx_libvlc_exception.init(libvlc_exception_struct& ex
) in C:\Documents and Settings\me\Desktop\Marx_libvlc_wrapper\Marx_libvlc_w
rapper\Marx_libvlc_wrapper\Marx_libvlc_exception.cs:line 50
at Marx_libvlc_wrapper.Marx_libvlc_exception..ctor(libvlc_exception_struct& e
x) in C:\Documents and Settings\me\Desktop\Marx_libvlc_wrapper\Marx_libvlc_
wrapper\Marx_libvlc_wrapper\Marx_libvlc_exception.cs:line 41
at Marx_libvlc_wrapper_test.Program.Main(String[] args) in C:\Documents and S
ettings\me\Desktop\Marx_libvlc_wrapper\Marx_libvlc_wrapper\Marx_libvlc_wrap
per_test\Program.cs:line 49

Re: C# Wrapper for libvlc 0.9.0 - Testers Required

Posted: 16 Apr 2009 08:17
by tamiro44
and what about libvlccore.dll?

Re: C# Wrapper for libvlc 0.9.0 - Testers Required

Posted: 16 Apr 2009 11:51
by enrike
i read in this post that in order to embed the video in a windows form i would need to
"pass the .Handle member of the control you want to play in to video_set_parent."
https://forum.videolan.org/viewtopic.ph ... rm#p158512

I created a Picturebox and passed its Handle to the video player video_set_parent funtion
libvlc_media_player.video_set_parent(libvlc_core.Handle, pictureBox1.Handle, ref ex);

when i try to play the video i get an exception
A first chance exception of type 'System.AccessViolationException' occurred in Marx_libvlc_wrapper.dll
triggered at this line
libvlc_media_player.video_set_parent(libvlc_core.Handle, pictureBox1.Handle, ref ex);

I guess the picturebox does not support video rendering?. what type of control should i use otherwise? I also tried with this.Handle from the Form but this causes the same problem.

thanks

enrike

Re: C# Wrapper for libvlc 0.9.0 - Testers Required

Posted: 16 Apr 2009 13:06
by tamiro44
Did you take the code from the second page (down)?
viewtopic.php?f=32&t=47385&start=15

Re: C# Wrapper for libvlc 0.9.0 - Testers Required

Posted: 16 Apr 2009 13:33
by enrike
not sure if you are talking to me ...
i just took it from the Program.cs file that comes with the Marx libvlc wrapper. I downloaded it from a link i found on this thread

Re: C# Wrapper for libvlc 0.9.0 - Testers Required

Posted: 16 Apr 2009 13:46
by tamiro44
Ok enrike,
But Marx himself has suggeted that we will take it from buttom of page 2
viewtopic.php?f=32&t=47385&start=15