1.        从http://www.videolan.org/vlc/download-windows.html下载vlc-2.2.0-win32.7z,解压缩;

2.        新建一个VLCtest控制台工程;

3.        将/vlc-2.2.0-win32/vlc-2.2.0/sdk/include添加到工程属性中,C/C++ -->General --> Additional Include Directories;

4.        将/vlc-2.2.0-win32/vlc-2.2.0/中的libvlc.lib、libvlc.dll、libvlccore.lib、libvlccore.dll及plugins目录拷贝到工程执行目录下;

5.        VLCtest工程中各个文件的代码为:

stdafx.h:

#pragma once#include "targetver.h"#include <stdio.h>
#include <time.h>
#include <windows.h>#include <vlc/vlc.h>

stdafx.cpp:

#include "stdafx.h"#ifdef _DEBUG#pragma comment(lib, "../../../lib/dbg/x86_vc10/libvlc.lib")#pragma comment(lib, "../../../lib/dbg/x86_vc10/libvlccore.lib")
#else#pragma comment(lib, "../../../lib/rel/x86_vc10/libvlc.lib")#pragma comment(lib, "../../../lib/rel/x86_vc10/libvlccore.lib")
#endif

VLCtest.cpp:

#include "stdafx.h"
#include <iostream>using namespace std;void test1()
{   libvlc_instance_t* vlc_ins    = NULL;libvlc_media_player_t* vlc_player = NULL;libvlc_media_t* vlc_media  = NULL;const char* vlc_args[] = {"-I", "dummy", "--ignore-config", "--extraintf=logger", "--verbose=2"};  //创建一个VLC实例,release版本在此处会crashvlc_ins = libvlc_new(sizeof(vlc_args) / sizeof(vlc_args[0]), vlc_args);if (vlc_ins != NULL) {//创建一个VLC播放器vlc_player = libvlc_media_player_new(vlc_ins);if (vlc_player != NULL) {//通过文件路径创建一个媒体实例vlc_media = libvlc_media_new_path(vlc_ins, "f:\\photo\\WP_20140405_002.mp4");if (vlc_media != NULL) {//解析媒体实例libvlc_media_parse(vlc_media);//获取媒体文件的播放长度,返回mslibvlc_time_t duration = libvlc_media_get_duration(vlc_media);//此处是获取媒体包含多个的视频和音频轨以及其它类型的轨道信息libvlc_media_track_info_t* media_tracks = NULL;int trackCount = libvlc_media_get_tracks_info(vlc_media, &media_tracks);//这里是释放内存,但我测试的时候会有问题,还没仔细研究是为何//free(media_tracks);  //crash?//把打开的媒体文件设置给播放器libvlc_media_player_set_media(vlc_player, vlc_media);// 因为是windows系统,所以需要设置一个HWND给播放器作为窗口,这里就直接使用桌面窗口,这里仅是测试libvlc_media_player_set_hwnd(vlc_player, ::GetDesktopWindow());//开始播放视频libvlc_media_player_play(vlc_player);//这里仅是为了打印一些信息出来,20秒后退出time_t last_time = time(NULL);while ((time(NULL) < (last_time + 20))) {Sleep(10);//获取当前播放位置libvlc_time_t play_time = libvlc_media_player_get_time(vlc_player);printf("playing time : %lld ms\r", (__int64)(play_time));//获取媒体的状态//libvlc_state_t media_state = libvlc_media_get_state(vlc_media);//printf("\nmedia state : %d\n", (int)(media_state));}    libvlc_media_player_stop(vlc_player);//停止libvlc_media_release(vlc_media);//释放}libvlc_media_player_release(vlc_player);//释放}libvlc_release(vlc_ins);//释放}
}void test2()
{libvlc_instance_t* inst;libvlc_media_player_t* mp;libvlc_media_t* m;//init vlc modules, should be done only onceinst = libvlc_new(0, NULL);//Create a new itemm = libvlc_media_new_path(inst, "f:\\photo\\WP_20140405_002.mp4");//Create a media player playing environmentmp = libvlc_media_player_new_from_media(m);libvlc_media_parse(m);libvlc_time_t duration = libvlc_media_get_duration(m);//No need to keep the media nowlibvlc_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_drawable_t drawable = xdrawable;//or on windowsvoid *drawable = &g_hwnd;libvlc_media_player_set_hwnd(mp, drawable);
#endif// play the media_playerlibvlc_media_player_play(mp);Sleep((DWORD)duration); //Let it play a bit//Stop playinglibvlc_media_player_stop(mp);// Free the media_playerlibvlc_media_player_release(mp);libvlc_release(inst);
}int main(int argc, char* argv[])
{//test1();test2();cout<<"ok!"<<endl;return 0;
}

6.    经测试,test1()和test2()在Debug模式下均能正常运行,在Release下均会crash,均是执行到libvlc_new函数处有问题,具体原因还不清楚,后面会进一步分析。

说明:在Release下,将Linker->Optimization->References中的值由Yes (/OPT:REF)修改为No (/OPT:NOREF),就可以在Release下执行了。

以上测试代码来自于:

1.      http://blog.sina.com.cn/s/blog_62949ff40101edml.html

2.      http://www.360doc.com/content/14/0309/10/2036337_358957305.shtml

VLC SDK在VS2010中的配置及简单使用举例相关推荐

  1. Leptonica在VS2010中的编译及简单使用举例

    在tesseract-ocr中会用到leptonica库,这里对leptonica简单介绍下. Leptonica是一个开源的图像处理和图像分析库,它的license是BSD 2-clause.它主要 ...

  2. 开源库Simd在vs2010中的编译及简单使用

    Simd是开源的图像处理库,它提供了很多高性能的算法,这些优化算法主要由SIMD指令来实现,包括SSE.SSE2.SSSE3.SSE4.1.SSE4.2.AVX等,此库可以应用在windows/lin ...

  3. VS2010中使用NeatUpload实现简单的文件上传功能

    neatupload 一个免费的asp.net文件上传组件 项目地址 http://neatupload.codeplex.com/ 首先,从项目网站下载最新版(目前使用的是1.3.26) 在VS20 ...

  4. VS2010中手动配置opencv2.4.10

    平台:win7,64位 双击opencv安装包,解压到目录D:\OPENCV2.4.10\ 以下内容都是build文件夹里的内容 Step1. 设置环境变量: (将OpenCV的dll文件所在的目录加 ...

  5. c++之openGL在VS中的配置及简单图形绘制

    VS中openGL的配置 相关资源下载: 链接:https://pan.baidu.com/s/1hRlxbckgLsNiS87k5CPvLg 提取码:tz87 以vs2010为例: 将下载的压缩包解 ...

  6. vs中imshow函数报错_Win7下VS2010中配置Opencv2.4.4的方法(32位和64位都有效)(亲测成功)...

    在vs2010下配置opencv是件痛苦的事情,一点点错误可能就会导致莫名其妙的报错,各种error让人郁闷不已,这里提供给大家一篇vs2010下配置opencv2.4.4的方法,我是64位的win7 ...

  7. vs2010中opengl环境配置

    下面将对VS2010中配置OpenGL进行简单介绍. 学习OpenGL前的准备工作 第一步,选择一个编译环境 现在Windows系统的主流编译环境有Visual Studio,Broland C++  ...

  8. windows7 64位机上CUDA7.0配置及在VS2010中的简单使用举例

    1.        查看本机配置,查看显卡类型是否支持NVIDIA GPU,选中计算机--> 右键属性 --> 设备管理器 --> 显示适配器:NVIDIA GeForce GT 6 ...

  9. VS2010中获取并调用CRM2011中的工作流

    接触过CRM2011的同学们肯定考虑过这样的一个问题,就是我们CRM系统中的那些实体能否通过外部开发工具,比如VS2010来获取呢?更深一步的说,我们能否获取Workflow实体的所有数据,然后在VS ...

最新文章

  1. ES6函数第二篇:剩余参数与展开运算符的练习
  2. 背景图片hover加蒙层_用hover怎么将li的背景图片变透明,文字不变,是背景图片,不是img插入...
  3. LeetCode 1443. 收集树上所有苹果的最少时间(自底向上DFS)
  4. Eureka Server集群同步
  5. 【英语学习】【English L06】U08 News L1 It's really a magical book!
  6. AI架构师:深度学习框架、部署上线及应用,一文梳理
  7. 反恐精英代码_Steam永久降价通知!绝地求生史低促销!CS:GO源代码泄漏!
  8. Spring事务原理1-动态代理
  9. 基础软件皇冠上的明珠,数据库创新 | 创新场景50
  10. 百度竞价有没有好的推广方法?
  11. arm gdb 编译与安装
  12. Android支付宝刷步数,支付宝刷步数教程(手机免ROOT)
  13. Android 进阶——性能优化之借助adb shell ps /top 指令详细分析进程
  14. AR小游戏 牧师与恶魔
  15. 什么样的自学Java网站才适合学习者?
  16. 连接不上oracle数据库
  17. springboot切面AOP拦截父类或接口中标记注解的方法
  18. C语言关于指针知识点总结【2】
  19. wave.Error: unknown format: 3解决方法
  20. Goby在护网中的应用

热门文章

  1. GitHub上分享的常用算法和数据结构实现原理可视化系统
  2. 直方图(opencv)
  3. ROS系统开发——ROS,realsense风险和解决方案备忘录
  4. Linux那些事儿 之 戏说USB(32)驱动的生命线(四)
  5. 杀死本地80端口被占用的进程,还你一片宁静乐土
  6. 获取 Andriod keystore签名证书文件,用于打包APP应用
  7. 在CentOS 6.9 x86_64上安装nginx 1.12.2
  8. 3DsMax渲染插件VRay NEXT完整的视频指南
  9. BitCask 持久化hash存储引擎 原理介绍
  10. 动态内存管理和智能指针 2.0 -- shared_ptr