【流媒體】live555—VS2010 下live555编译、使用及测试

Ⅰ live555简介

  Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP、RTSP、SIP等的支持。Live555实现了对多种音视频编码格式的音视频数据的流化、接收和处理等支持,包括MPEG、H.263+、DV、JPEG视频和多种音频编码。同时由于良好的设计,Live555非常容易扩展对其他格式的支持。目前,Live555已经被用于多款播放器的流媒体播放功能的实现,如VLC(VideoLan)、MPlayer。

  该项目的源代码包括四个基本的库,各种测试代码以及IVE555 Media Server。四个基本的库分别是UsageEnvironment&TaskScheduler,groupsock,liveMedia,BasicUsageEnvironment。


Ⅱ 下载

live555源码http://www.live555.com/(官网)

 


Ⅲ 编译步骤

方法一(Win7下命令方式)

0  综述:利用genWindowsMakefiles.cmd生成VS可用的makefile

1  修改win32config。打开live\win32config文件,修改如下


TOOLS32 = c:\Program Files\DevStudio\Vc


TOOLS32 =  E:\Program   Files\Microsoft Visual Studio 10.0\VC


将TOOLS32修改为你的VS2010路径


LINK_OPTS_0   =        $(linkdebug) msvcirt.lib


LINK_OPTS_0   =   $(linkdebug)  msvcrt.lib


编译器索要的LINK运行库不同,原本以为可以改为msvcrt100.lib,但没找着

2  新增Makefile设定。打开live\groupsock\Makefile.head,修改如下


INCLUDES =   -Iinclude -I../UsageEnvironment/include


INCLUDES =   -Iinclude -I../UsageEnvironment/include   -DNO_STRSTREAM

3  建立makefile

  方法:运行live\genWindowsMakefiles.cmd,生成VS能够编译的*.mak文件

4  建立build.bat命令

  新建live\complie.bat,并添加内容如下:

call "E:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"
cd liveMedia
nmake /B -f liveMedia.mak
cd ../groupsock
nmake /B -f groupsock.mak
cd ../UsageEnvironment
nmake /B -f UsageEnvironment.mak
cd ../BasicUsageEnvironment
nmake /B -f BasicUsageEnvironment.mak
cd ../testProgs
nmake /B -f testProgs.mak
cd ../mediaServer
nmake /B -f mediaServer.mak

5  开始编译:(命令行下)执行complie.bat

6  编译结果:

6-1  在对应的文件下,如下图

 生成与cpp文件对应的obj文件(Object File中间代码文件,源文件complie生成,在linux下为o文件)

 生成lib库: libBasicUsageEnvironment.lib、libgroupsock.lib、libUsageEnvironment.lib、libliveMedia.lib

 

6-2 在对应的文件下,如下图:生成对应的obj文件和exe文件

 

:若要用VS2010对代码进行调试跟踪,那么编译时需要做相应修改,修改方法如下:

  方法一:修改*.mak文件下的NODEBUG 。不带DEBUG,NODEBUG=1(默认);带DEBUG,DEBUG=1

  方法二:在win32config加入一行 "NODEBUG=1" (不推荐)

 

方法二(Win7+VS2010方式)

  如果需要自己调试修改源码,采用编译器的方式会更好些,这种方式也更利于源码分析,步骤如下:

0  综述:分别为每个库单独编译生成lib

 

1  新建解决方案和lib工程,分别如下:

E:\My Document\Visual Studio 2010\Projects\myLive555\BasicUsageEnvironment
E:\My Document\Visual Studio 2010\Projects\myLive555\liveMedia
E:\My Document\Visual Studio 2010\Projects\myLive555\groupsock
E:\My Document\Visual Studio 2010\Projects\myLive555\BasicUsageEnvironment

  完整解决方案的结构如下图

2  添加头文件

  方法1:采用全局包含方式(绝对路径)。需要添加的include文件包括

E:\My Document\Visual Studio 2010\Projects\myLive555\BasicUsageEnvironment\include
E:\My Document\Visual Studio 2010\Projects\myLive555\liveMedia\include
E:\My Document\Visual Studio 2010\Projects\myLive555\groupsock\include
E:\My Document\Visual Studio 2010\Projects\myLive555\BasicUsageEnvironment\include

  方法2:采用局部(当前工程)包含方式(相对路径)。推荐

  描述:工程->属性->配置属性->C/C++->常规->附加包含目录

..\BasicUsageEnvironment\include
..\groupsock\include
..\liveMedia\include
..\UsageEnvironment\include

 

3  添加文件

    在上述lib工程中添加对应的所有的cpp文件。

4  设置工程的输出目录

  路径:E:\My Document\Visual Studio 2010\Projects\myLive555\lib

  方法:项目-》属性-》常规-》输出目录

5  编译解决方案

  结果:在lib目录下生成 BasicUsageEnvironment.lib、groupsock.lib、UsageEnvironment.lib、liveMedia.lib

 

下载编译好的live555(lib和头文件)

  方式一,环境为Win7,包含编译好的live555、提取的4个lib、myLive555Header和截图。下载猛击

  方式二,环境win7+VS2010,包含整个工程,下载猛击

 


Ⅳ 使用实例

1   添加库

①步骤一:

  方法1. 将编译生成的四个lib库库拷贝到“*:\Program Files\Microsoft Visual Studio 10.0\VC\lib”下面

  方法2. 将编译生成的四个lib库库拷贝到当前工程的cpp文件下

  方法3. 将编译生成的四个lib库作为全局库的形式添进工程

②步骤二:

  方法1. [菜单]“项目->属性->配置属性->连接器->输入->附加依赖项”里填写

      “libUsageEnvironment.lib;libliveMedia.lib;libgroupsock.lib;libBasicUsageEnvironment.lib;Ws2_32.lib”

  再次温馨提醒:VS2010中,多个lib之间需要用分号或者回车隔开,用空格行不通,切记!信不信由你了,我在这个地方又折腾了一会了,青春不在啊~

  方法2.  pragma 方式  

#pragma comment (lib, "Ws2_32.lib")
#pragma comment (lib, "libBasicUsageEnvironment.lib")
#pragma comment (lib, "libgroupsock.lib")
#pragma comment (lib, "libliveMedia.lib")
#pragma comment (lib, "libUsageEnvironment.lib")

2  添加头文件

说明:如果采用方式二编译的,那么此步骤可以省去

①步骤一:将所有的.h文件放到一起,如myLive555Header里面,再添加include

②步骤二:

  方法1. “项目->属性->配置属性->C/C++->常规->附加包含目录”

  方法2. “工具->选项->项目和解决方案->C++ 目录”,选择对应平台,然后添加所需“包括文件”目录(此法VS2010不通)

 

3  测试代码

  直接用testProgs里面的例子,我用的是testOnDemandRTSPServer.cpp,测试成功,如下图

 

 


Ⅴ 测试live555服务器

方式一:(利用ffplay.exe播放)

1 把媒体文件放到和live555MediaServer.exe同一目录

2 运行live555MediaServer.exe,弹出的dos框里面有地址,如下图

3 客户端,dos下进入到ffplay所在文件夹下,然后输入如下命令

    ffplay.exe rtsp://10.120.2.18/<媒体文件名>

  弹出视频播放画面,如下图

 

方式二:(直接vlc中播放网络流)

1 把媒体文件放到和live555MediaServer.exe同一目录

2 打开vlc plaer,打开网络串流,输入rtsp,如下图

3 点播放,开始播放,如下图

 

 

from:http://www.cnblogs.com/skyseraph/archive/2012/04/11/2442840.html

时间: 2024-10-31 19:20:52

【流媒體】live555—VS2010 下live555编译、使用及测试的相关文章

流媒體】jrtplib—VS2010下RTP开源协议库JRTPLIB3.9.1编译

一.JRTPLIB简介 老外用C++编写的开源RTP协议库,用来进行实时数据传输,可以运行在 Windows.Linux. FreeBSD.Solaris.Unix和VxWorks 等多种操作系统上,主页为:http://research.edm.uhasselt.be/~jori/page/index.php?n=Main.HomePage   二.相关下载 jrtplib: http://research.edm.uhasselt.be/~jori/page/index.php?n=CS.J

cuda-CUDA在VS2010下编译出错,无法解析的外部命令

问题描述 CUDA在VS2010下编译出错,无法解析的外部命令 这个是我在网上找的一个例子,没出现红下标,,但是ctrl+F5就有这么多错误,包含头文件的SDK的lib和toolkit的lib路径都添加了,,,不知道为什么出错,,最近才开始学CUDA,请大家多多指教,, 解决方案 可能是Path 路經問題喔 解决方案二: 你对应的lib库文件有没有在工程中设置上.然后就是路径正确

亲测VS2010纯静态编译QT4.8.2,实现VS2010编译调试Qt程序

      下载源代码,注意一定是源码压缩包如qt-everywhere-opensource-src-4.8.2.zip,不是Qt发布的已编译的不同版本的标准库如qt-win-opensource-4.8.0-vs2010.exe,这些版本都只是动态编译的,不是我们所需要的.只有用源码包才能做真正的纯静态编译,如果用Qt官网已编译的标准库.exe文件进行编译,有可能出现各种错误,而且编译后的文件巨大,我当时就在这里绕了很大的弯子,请童鞋们注意啦!!可能有些老鸟会笑话,但我本着最严肃的态度告诉菜

VC6下DLL,VS2010下用,运行调试异常。

问题描述 VC6下DLL,VS2010下用,运行调试异常. VC6下开发的DLL,在VC6下开发应用程序可以使用前述DLL,工程转换到VS2010之后也可以使用,但是在VS2010下直接使用前述DLL,编译可以通过,但是运行调试时报内存访问异常.请问大侠,该如何解决? 解决方案 两个可能性,一个是本来程序就有内存的问题,但是vc2010对内存的检查更严格,所以问题得以暴露. 另一个可能是单字节双字节的问题,或者一些结构体长度定义不同,你内存分配硬编码了长度,而不是用sizeof求值,导致内存分配

vs2010下调试程序,出现“abc.dll”未使用调试信息生成二进制文件,怎样解决?

问题描述 vs2010下调试程序,出现"abc.dll"未使用调试信息生成二进制文件,怎样解决? 有好几个dll文件都出现这样的问题,然后编译不通过.怎么办? 解决方案 删除掉bin obj目录重新编译.你的pdb文件和你的exe不匹配造成的. 解决方案二: rebuild 你的整个工程试试 解决方案三: 清理工程,然后重新编译下试试 解决方案四: 就是 release版本的意思吧,区别于 可以调试的debug版本改成Debug模式,再重新编译看看. 解决方案五: http://www

Win7+vs2010下安装boost_1_46_1库

一.boost库分类: (1)不需要编译库:any.array.asio.conversion.crc.bind/mem_fn.enable_if.function.lambda.mpl.smart_ptr... (2)需要编译的库:date_time.filesystem.function_types.graph.iostreams.math.mpi.program_options.python.regex.serialization.signals.system.test.thread.wa

VS2010下创建静态链接库和动态链接库

下面介绍一下用VS2010如何创建静态链接库和动态链接库,并测试创建的库. 1.静态链接库 打开VS2010,新建一个项目,选择win32项目,点击确定,选择静态库这个选项,预编译头文件可选可不选. 在这个空项目中,添加一个.h文件和一个.cpp文件.名字我们起为static.h和static.cpp static.h文件: [cpp] view plaincopy #ifndef LIB_H   #define LIB_H      extern "C" int sum(int a,

win7 编译 openssl-win7(64位)下如何编译openssl

问题描述 win7(64位)下如何编译openssl 如题,win7下如何编译openssl啊?总是报缺少各种.h,很头大-先报缺少windows.h后来报缺少stdlib.h,再后来卡在uplink.c里面报各种缺少错误- 解决方案 https://software.intel.com/zh-cn/blogs/2013/12/22/windows-openssl 解决方案二: win7在64位系统下编译opensslOpenSSL编译(Win764位VS2010)win7 64位系统+vs20

freerdp windows-freerdp代码在windows下的编译XP系统不适用

问题描述 freerdp代码在windows下的编译XP系统不适用 我在freerdp下载了源码,用cmake生成了VS2010的代码,经过编译成功后,生成的wfreerdp.exe在win7 win8 里可用,在XP里显示无法确定程序输入点....在kernel.dll上. 求有类似编译经验的同行,前辈指导. Q13148994 解决方案 这应该是代码兼容问题吧,不支持XP,XP太老了,微软都停止更新了 解决方案二: 使用VS2008编译试试,