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