`

用Eclipse搭建VLC SDK开发环境

    博客分类:
  • VLC
 
阅读更多

最近研究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开发环境讲解完毕。
 
参考资料:
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics