在codeBlock中开发vlc的实例

准备工作:

安装IDE环境:code::Blocks 13.12 下载地址:

具体安装过程参照:

下载并解压Vlc库:vlc-2.2.0 下载地址:

下载一段需要播放的视频。

开发步骤:

(1)创建一个控制台应用程序

(2)打开project视图中的main.cpp

将文件内容修改为,

#include <stdio.h>

#include <tchar.h>

#include <time.h>

#include <windows.h>

#include <vlc/vlc.h>

#pragma comment(lib,"libvlc.lib")

#pragma comment(lib,"libvlccore.lib")

int main(int argc, char* argv[])

{

libvlc_instance_t*     vlc_ins    = NULL;

libvlc_media_player_t* vlc_player = NULL;

libvlc_media_t*        vlc_media  = NULL;

constchar * vlc_args[] =

{

"-I",

"dummy",

"--ignore-config",

"--extraintf=logger",

"--verbose=2",

};

//创建一个VLC实例

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,"E:\\relatedResource\\vr\\dome.mp4");//注意这里要修改为自己需要播放的视频资源路径

if(vlc_media!= NULL)

{

//解析媒体实例

libvlc_media_parse(vlc_media);

//获取媒体文件的播放长度,  返回 ms

libvlc_time_tduration = libvlc_media_get_duration(vlc_media);

//此处是获取媒体包含多个的视频和音频轨以及其他类型的轨道信息

libvlc_media_track_info_t*media_tracks = NULL;

inttrackCount = 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_tlast_time = time(NULL);

while((time(NULL)< (last_time + 20)))

{

Sleep(10);

//获取当前播放位置

libvlc_time_tplay_time = libvlc_media_player_get_time(vlc_player);

printf("playingtime : %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);

}

return0;

}

(3)点击工具栏中的编译按钮

下方的build messages窗口显示错误信息:

||=== Build: Debug in myVlc (compiler: GNUGCC Compiler) ===|

E:\codeBlockWorkspace\myVlc\main.cpp|6|fatalerror: vlc/vlc.h: No such file or directory|

||=== Build failed: 1 error(s), 0warning(s) (0 minute(s), 0 second(s)) ===|

(4)打开project build option窗口

在弹出的窗口中选择search directories选项卡,单击add按钮

添加如下路径:【具体视自己所下载的vlc版本及解压路径而定】

D:\vlc-2.2.0\sdk\include

D:\vlc-2.2.0\sdk\lib

单击ok按钮确定之后,再次编译,发现编译能通过,但是仍然有很多错误提示,

这是连接错误。

(5)再次打开project build option窗口,选择linker setttings选项卡

单击add按钮,添加D:\vlc-2.2.0\sdk\lib路径下的.lib文件,

单击ok确定之后,再次编译,发现刚刚的连接错误没有了,又出现了错误信息如下,

||=== Build: Debug in myVlc (compiler: GNUGCC Compiler) ===|

ld.exe||cannot find libvlc.lib|

ld.exe||cannot find libvlccore.lib|

||=== Build failed: 2 error(s), 0warning(s) (0 minute(s), 0 second(s)) ===|

(6)将vlc解压【安装】路径中的libvlc.dll、libvlc.lib、libvlccore.dll、libvlccore.lib及plugins文件夹都拷贝到工程目录下。

(7)再次编译,则不再报错。

(8)单击工具栏上的运行按钮

能正确播放视频。至此完成!

时间: 2024-08-14 18:18:33

在codeBlock中开发vlc的实例的相关文章

Spark3000门徒第9课IDEA中开发Spark实战总结

今晚听了王家林老师的第9课IDEA中开发Spark实战,课后作业是:在Idea中编写广告点击排名的程序并提交集群测试, IDEA社区版本就够用,Ultimate没必要还要钱 程序如下: object WordCountCluster { def main(args: Array[String]){ /** * 第一步:创建spark的配置对象SparkConf,设置Spark程序的运行时的配置信息 * */ val conf = new SparkConf() //创建SparkConf对象 c

使用 ACE 库框架在 UNIX 中开发高性能并发应用

使用 ACE 库框架在 UNIX 中开发高性能并发应用来源:developerWorks 中国 作者:Arpan Sen ACE 开放源码工具包可以帮助开发人员创建健壮的可移植多线程应用程序.本文讨论创建使用 ACE 线程的应用程序的一些方法.Adaptive Communication Environment (ACE) 是一个高性能.开放源码.面向对象的框架和 C++ 类库,它有助于简化网络应用程序的开发.ACE 工具包包括一个操作系统层和一个封装网络 API 的 C++ 外观(facade

将文本框内容添加到表格中的行代码实例

将文本框内容添加到表格中的行代码实例:在实际操作中,往往需要将文本框中的内容添加到表格的行中或者类似的情况,下面就通过一个实例介绍一下如何实现此效果,希望能够对需要的朋友有所帮助,代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/&

c++简单的ATL COM开发和调用实例

1.打开VS2010,新建ATL COM 项目,步骤:"文件" -->"新建" -->"项目",选择"Visual C++" -->"ATL 项目" ,填写"名称" FirstCOM -->"确定". 2.ATL 项目向导,勾选 [支持COM+ 1.0]和[支持部件注册器],其他默认,点击完成. 3.切换到类视图,右键单击项目"Fir

Spark3000门徒第8课IDE中开发Spark实战总结

今晚听了王家林老师的第8课IDE中开发Spark实战,课后作业是:在Eclipse中编写广告点击排名的程序并测试,程序如下: object WordCountCluster { def main(args: Array[String]){ /** * 第一步:创建spark的配置对象SparkConf,设置Spark程序的运行时的配置信息 */ val conf = new SparkConf() //创建SparkConf对象 conf.setAppName("First App")

Visual Studio中开发

如何在Visual Studio中开发自己的代码生成器插件  Visual Studio是美国微软公司开发的一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具.代码管控工具.集成开发环境(IDE)等等,且所写的目标代码适用于微软支持的所有平台.可以说.NET开发人员离不开它,它可以极大的提高编写软件的效率. Visual Studio作为一个世界级开发工具,当然支持通过插件方式对其功能进行扩展,开发人员可以定制自己的插件来进一步提升Visual Studio的功

【Rest】在Dubbo中开发REST风格的远程调用(RESTful Remoting)

目录 概述 REST的优点 应用场景 快速入门 标准Java REST API:JAX-RS简介 REST服务提供端详解 HTTP POST/GET的实现 Annotation放在接口类还是实现类 JSON.XML等多数据格式的支持 中文字符支持 XML数据格式的额外要求 定制序列化 配置REST Server的实现 获取上下文(Context)信息 配置端口号和Context Path 配置线程数和IO线程数 配置长连接 配置最大的HTTP连接数 配置每个消费端的超时时间和HTTP连接数 GZ

android中反射技术使用实例

在计算机科学领域,反射是指一类应用,它们能够自描述和自控制.也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义.反射 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说"自审",并能直接操作程序的内部属性.Java 的反射机制的实现要借助于4个类:class,Constructor,Field,

Spring中IoC的入门实例

Spring中IoC的入门实例 Spring的模块化是很强的,各个功能模块都是独立的,我们可以选择的使用.这一章先从Spring的IoC开始.所谓IoC就是一个用XML来定义生成对象的模式,我们看看如果来使用的. 数据模型 1.如下图所示有三个类,Human(人类)是接口,Chinese(中国人)是一个子类,American(美国人)是另外一个子类. 源代码如下: package cn.com.chengang.spring;public interface Human {void eat();