GTK #에 LibVLC.NET 래퍼를 사용합니다. 그리고 난 이미이 예제를 사용하여 비디오를 재생했다 :GTK의 LibVLC.NET #
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()로?
도움이 될 것이라고 생각하지만 LibVLC.NET에서는이 기능이 없습니다. –
그렇다면 내가 설명한대로 라이브러리를 사용할 수 있다고 생각하지 않습니다. 해당 프로젝트에서 제공하는 예제는 비트 맵을 사용하여 비디오를 렌더링하므로 비디오 콜백을 사용해야합니다. 이 도움이되지 않습니다 : http://libvlcnet.codeplex.com/SourceControl/latest#trunk/LibVLC.NET.Presentation/? – caprica
업데이트 된 질문을 참조하십시오. –