用Eclipse搭建VLC SDK開發環境

最近研究FFmpeg,看到用FFmpeg寫的VLC播放器很牛X,我打算學習一下,網上找了很多的資料發現都是在VS IDE基礎上開發的,本人對VS IDE不感冒,因爲一直從事java開發,對eclipse還是很有偏愛的,打算用eclipse來搭建C/C++開發環境。本人其實對C/C++其實也只懂一些皮毛。在搭建過程中遇到過很多的問題。爲了讓初學者在學習的過程中少走彎路,特此寫一下本篇文章。

 
環境:

OS: Windows 7 32位旗艦版

IDE: Eclipse indigo

LIB: VLC2.1.0 SDK
 
1、下載eclipse
下載地址:http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers-includes-incubating-components/indigosr2  下載對應操作系統版本即可,裏面包含了CDT(C/C++ 開發工具)。解壓即可。
2、安裝MinGW
下載地址: http://sourceforge.net/projects/mingw/files/ (需要fanqiang) 下載後點擊安裝即可。因爲sourceforge被qiang了,在安裝的過程中出現N多的錯誤,這是需要用到代理,去網上隨便找一個HTTP代理IP配置到IE的LAN Setting裏即可。
安裝:一路next即可,選擇安裝組件需選擇g++ compiler.
配置環境變量:把MinGW目錄下的bin目錄配置到環境Path環境環境變量中。
測試MinGW是否配置成功:Win+R彈出運行窗口,然後敲入“cmd”打開命令行窗口,敲入“gcc”測試即可。
3、創建C/C++工程
打開eclipse,new C project ,選擇Hello World ANSI C Project, 右邊選擇MinGW GCC,如果Path中沒配置MinGW則不會出現此選項。
Project type分爲兩種,“Executeble”和“Makefile project”,其中“Executeble”爲Managed C Project,即自動編譯的C工程;而“Makefile project”是通過寫makefile來手動編譯的C工程,新手建議使用自動編譯的C工程。
①新建項目
 
② 點擊完成。打開後默認是這個樣子的:
③自動生成的代碼如下:
代碼如下:
/*
  ============================================================================
 Name        : Demo.c
 Author      :
 Version     :
 Copyright   : Your copyright notice
 Description : Hello World in C, Ansi-style
  ============================================================================
 */
 
#include <stdio.h>
#include <stdlib.h>
 
int main( void) {
       puts( "!!!Hello World!!!"); /* prints !!!Hello World!!! */
       return EXIT_SUCCESS;
}
 
④如果直接點運行會報錯:
 
⑤必須先構建build,再運行。點小錘子或在項目右鍵 build Project。如下圖
⑥編譯結果:
⑦然後在運行:
 
4、下載VLC 
安裝vlc:正常的window程序安裝。無需多說。
 
5、加入VLC庫文件和頭文件
① 加入頭文件
項目右鍵 點 properties,展開C/C++ Build ,點擊Settings:
選擇GCC C Compiler下的Includes:
加入VLC的include path,這裏需要加MinGW和vlc的include文件,點右邊的添加按鈕,把路徑填入點ok即可
 
加入VLC的lib ,在Library search path中填入VLC sdk lib路徑,在Libraries中加入lib文件名(不要.lib後綴):
SDKlib目錄截圖:
 
配置截圖:
 
6、運行VLC官方教程代碼
打開LibVLC tutorial 找到Sample LibVLC Code部分,拷貝代碼到Demo.c中。
如果你馬上運行代碼會出現如下錯誤:
解決此問題需要在頭部加入如下代碼:
#ifdef __unix__
# include <unistd.h>
#elif defined _WIN32
# include <windows.h>
#define sleep(x) Sleep(1000 * x)
#endif
 
 
完整代碼如下
#include <stdio.h>
#include <stdlib.h>
#include <vlc/vlc.h>
 
#ifdef __unix__
# include <unistd.h>
#elif defined _WIN32
# include <windows.h>
#define sleep(x) Sleep(1000 * x)
#endif
 
 int main (int argc, char* argv[])
 {
     libvlc_instance_t * inst;
     libvlc_media_player_t *mp;
     libvlc_media_t *m;
 
     /* Load the VLC engine */
     inst = libvlc_new (0, NULL);
 
     /* Create a new item */
     //m = libvlc_media_new_location (inst, "E:/test_video/jidu.mp4"); //network video file
     m = libvlc_media_new_path (inst, "E:\\test_video\\jidu.mp4");  //local video file
 
     /* Create a media player playing environement */
     mp = libvlc_media_player_new_from_media (m);
 
     /* No need to keep the media now */
     libvlc_media_release (m);
 
 #if 0
     /* This is a non working code that show how to hooks into a window,
      * if we have a window around */
      libvlc_media_player_set_xwindow (mp, xid);
     /* or on windows */
      libvlc_media_player_set_hwnd (mp, hwnd);
     /* or on mac os */
      libvlc_media_player_set_nsobject (mp, view);
  #endif
 
     /* play the media_player */
     libvlc_media_player_play (mp);
 
     sleep (20); /* Let it play a bit */ //Sleep takes a time in milliseconds;sleep takes a time in seconds.
 
 
     /* Stop playing */
     libvlc_media_player_stop (mp);
 
     /* Free the media_player */
     libvlc_media_player_release (mp);
 
     libvlc_release (inst);
 
     return 0;
 }
說明一下:libvlc_media_new_location是播放網絡視頻文件,libvlc_media_new_path 是播放本地視頻文件。
sleep (20)是播放器20秒後自動關閉,Sleep 單位是毫秒
 
最後:
編譯build project -->運行,出現如下截屏:
 
至此Eclipse搭建VLC SDK開發環境講解完畢。
 
參考資料:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章