LibVLC.NET в GTK #

я используюLibVLC.NET обертка в GTK #. И я уже играл видео, используя этот пример:

LibVLCLibrary library = LibVLCLibrary.Load(null);
IntPtr inst, mp, m;

inst = library.libvlc_new();                                      // Load the VLC engine 
m = library.libvlc_media_new_location(inst, "path/to/your/file"); // Create a new item 
mp = library.libvlc_media_player_new_from_media(m);               // Create a media player playing environement 
library.libvlc_media_release(m);                                  // No need to keep the media now 
library.libvlc_media_player_play(mp);                             // play the media_player 
Thread.Sleep(10000);                                              // Let it play a bit 
library.libvlc_media_player_stop(mp);                             // Stop playing 
library.libvlc_media_player_release(mp);                          // Free the media_player 
library.libvlc_release(inst);

LibVLCLibrary.Free(library);

Но видео воспроизводится в другом новом окне, теперь мне нужно установить окно или (лучше) контейнер в GTK #, который будет воспроизводить видео. Как мне это сделать?

Обновить: Я нашел эту функцию в LibVLC.NET:

 //==========================================================================
// void libvlc_video_set_format_callbacks (libvlc_media_player_t *mp, libvlc_video_format_cb setup, libvlc_video_cleanup_cb cleanup)

//==========================================================================
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate uint libvlc_video_format_cb(ref IntPtr opaque, ref uint chroma, ref uint width, ref uint height, ref uint pitches, ref uint lines);

//==========================================================================
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void libvlc_video_cleanup_cb(IntPtr opaque);

//==========================================================================
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate void libvlc_video_set_format_callbacks_signature(IntPtr mp, libvlc_video_format_cb setup, libvlc_video_cleanup_cb cleanup);

//==========================================================================
private readonly libvlc_video_set_format_callbacks_signature m_libvlc_video_set_format_callbacks;

//==========================================================================
public void libvlc_video_set_format_callbacks(IntPtr mp, libvlc_video_format_cb setup, libvlc_video_cleanup_cb cleanup)
{
  VerifyAccess();

  m_libvlc_video_set_format_callbacks(mp, setup, cleanup);
}

/*
  void libvlc_media_player_set_nsobject (libvlc_media_player_t *p_mi, void *drawable)
  void * libvlc_media_player_get_nsobject (libvlc_media_player_t *p_mi)
  void libvlc_media_player_set_agl (libvlc_media_player_t *p_mi, uint32_t drawable)
  uint32_t libvlc_media_player_get_agl (libvlc_media_player_t *p_mi)
  void libvlc_media_player_set_xwindow (libvlc_media_player_t *p_mi, uint32_t drawable)
  uint32_t libvlc_media_player_get_xwindow (libvlc_media_player_t *p_mi)
  void libvlc_media_player_set_hwnd (libvlc_media_player_t *p_mi, void *drawable)
  void * libvlc_media_player_get_hwnd (libvlc_media_player_t *p_mi)
*/

В комментариях есть упоминание о libvlc_media_player_set_hwnd (), может ли эта функция каким-то образом заменить ее или предоставить доступ к тем же возможностям, что и libvlc_media_player_set_hwnd ()?

Ответы на вопрос(1)

Ваш ответ на вопрос