2015-12-26 23 views
0

我試圖通過P/Invoke(在Ubuntu上)使用Gstreamer在GTK#中顯示視頻。我試圖使用許多代碼示例,但沒有任何工作。這裏是其中的一個: GTK#代碼:來自GTK的gst_video_overlay_set_window_handle#

[DllImport("libgstTestDLL.so", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)] 
public extern static int play_file (StringBuilder path, IntPtr win); 
    ... 
play_file (new StringBuilder().Append ("file:///home/user/Downloads/test.mp4"), screen.GdkWindow.Handle); 

C代碼:

void play_file(char* path, void* hwnd_ptr){ 
     GdkWindow* gdkWin = (GdkWindow*)hwnd_ptr; 
     pipeline = gst_element_factory_make("playbin", "player"); 
     g_object_set (G_OBJECT (pipeline), "uri", path, NULL); 
     gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(pipeline), GDK_WINDOW_XID(gdkWin)); 
     gst_element_set_state(pipeline, GST_STATE_PLAYING); 
} 

執行play_file功能我GTK#應用程序只是關閉後。 我該如何正確使用GTK#中的play_file以及我需要從C中的play_file函數執行以在GTK#應用程序中顯示視頻?

回答

0

我找到了解決方案。 我使用這個鏈接我的共享庫libgstvideo-1.0.so: target_link_libraries(${PROJECT_NAME} gstvideo-1.0)。可用解決方案的完整說明here