VLC SDK在VS2010中的配置及简单使用举例

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版本在此处会crash
	vlc_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);

				//获取媒体文件的播放长度,返回ms
				libvlc_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 once
	inst = libvlc_new(0, NULL);

	//Create a new item
	m = libvlc_media_new_path(inst, "f:\\photo\\WP_20140405_002.mp4");

	//Create a media player playing environment
	mp = 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 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_drawable_t drawable = xdrawable;
	//or on windows
	void *drawable = &g_hwnd;
	libvlc_media_player_set_hwnd(mp, drawable);
#endif
	// play the media_player
	libvlc_media_player_play(mp);

	Sleep((DWORD)duration); //Let it play a bit

	//Stop playing
	libvlc_media_player_stop(mp);

	// Free the media_player
	libvlc_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函数处有问题,具体原因还不清楚,后面会进一步分析。

以上测试代码来自于:

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

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

时间: 2024-11-06 03:24:22

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

VS2010中xercesc配置及简单示例

从官网下载xerces-c-3.1.1并解压,打开工程项目 xerces-c-3.1.1\projects\Win32\VC10\xerces-all\xerces-all.sln, 选择XercesLib项目进行编译,生成相关库文件. 设置环境变量,添加xerces-c-3.1.1\Build\Win32\VC10\Debug. 新建项目工程,打开属性 配置属性: a. C/C++ ->常规->附加包含目录 xerces-c-3.1.1\src: b.链接器->常规->附加库目录

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

在tesseract-ocr中会用到leptonica库,这里对leptonica简单介绍下. Leptonica是一个开源的图像处理和图像分析库,它的license是BSD 2-clause.它主要包括的操作有:位图操作.仿射变换.形态学操作.连通区域填充.图像变换及像素掩模.融合.增强.算术运算等操作. 在使用Leptonica的时候,它依赖于开源的zlib.libjpeg.libpng.libtiff.giflib. zlib是一个很好的压缩.解压缩库.它的license是zlib授权,类

openal在vs2010中的配置

下载openal开发工具:相关资料可以在OpenAL官网http://connect.creativelabs.com/openal/default.aspx上获得.这里下载的SDK为OpenAL11CoreSDK. 安装运行:OpenAL11CoreSDK.exe,并将安装后的目录下的文件夹:include中的头文件复制到vs2010项目工程文件下:libs目录下的OpenAL32.lib(文件可能存在于win64目录下或者win32目录下,找到与pc系统相应的目录中文件)复制到vs2010安

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

Simd是开源的图像处理库,它提供了很多高性能的算法,这些优化算法主要由SIMD指令来实现,包括SSE.SSE2.SSSE3.SSE4.1.SSE4.2.AVX等,此库可以应用在windows/linux 32bit/64bit等系统中.此库更新较频繁.此库的license是MIT. 下面详细介绍其在vs2010中的编译及使用: 1.        从https://sourceforge.net/projects/simd/?source=typ_redirect下载最新版本simd.2.2.

VS2010中项目配置引入GDAL

在上一篇文章中,小编介绍了使用VS2010编译GDAL的方法,但是上文中仅仅完成了编译的工作,但是在具体是使用过程中,需要先对VS2010的项目进行配置,引入GDAL的库.配置GDAL的的过程如下: 配置VC++目录 在项目上右击,选择属性,找到 配置属性 - VC++目录 在包含目录里加入上一篇文章安装GDAL的include文件夹,在库目录添加lib文件夹,如图: 配置附加依赖项 找到 链接器 - 输入,在附加依赖项添加gdal_i.lib,如图 至此,整个GDAL的环境配置便完成了. 如果

浅析redis缓存 在spring中的配置 及其简单的使用

一:如果你需要在你的本地项目中配置redis.那么你首先得需要在你的本地安装redis 参考链接[http://www.runoob.com/redis/redis-install.html] 下载redis在网上有很多 我这里就不多做解释了 下载以后 找到这样的三个文件  这是我们需要操作的 每个版本可能不一样 但这几个肯定是有的 然后 安装这个http://www.runoob.com/redis/redis-install.html 进行配置 当然很重要的一步是你需要在 redis.win

VS2010中配置OpenGL

下面将对VS2010中配置OpenGL进行简单介绍. 学习OpenGL前的准备工作第一步,选择一个编译环境现在Windows系统的主流编译环境有Visual?Studio,Broland?C++?Builder,Dev-C++等,它们都是支持OpenGL的. 我选择Visual?Studio?2010和VC6++作为学习OpenGL的环境.第二步,安装GLUT工具包GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装.Windows环境下的GLUT下载地址:(大小约为15

vs2010中配置OpenGL以及针对64位系统所遇问题的解决办法

一.下面将对VS2010中配置OpenGL进行简单介绍. 学习OpenGL前的准备工作 第一步,选择一个编译环境 现在Windows系统的主流编译环境有Visual Studio,Broland C++ Builder,Dev-C++等,它们都是支持OpenGL的. 我选择Visual Studio 2010和VC6++作为学习OpenGL的环境. 第二步,安装GLUT工具包 GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装. Windows环境下的GLUT下载地址:

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

1.        查看本机配置,查看显卡类型是否支持NVIDIA GPU,选中计算机--> 右键属性 --> 设备管理器 --> 显示适配器:NVIDIA GeForce GT 610,从https://developer.nvidia.com/cuda-gpus可以查到相应显卡的compute capability: 2.        从http://www.nvidia.cn/Download/index.aspx?lang=cn下载合适驱动347.88-desktop-win8