【流媒體】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
【流媒體】live555—VS2010 下live555编译、使用及测试的更多相关文章
- 【流媒體】live555—VS2008 下live555编译、使用及测试
[流媒體]live555—VS22008 下live555编译.使用及测试 Ⅰ live555简介 Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如R ...
- [转]【流媒體】H264—MP4格式及在MP4文件中提取H264的SPS、PPS及码流
[流媒體]H264—MP4格式及在MP4文件中提取H264的SPS.PPS及码流 SkySeraph Apr 1st 2012 Email:skyseraph00@163.com 一.MP4格式基本 ...
- 流媒體】jrtplib—VS2010下RTP开源协议库JRTPLIB3.9.1编译
一.JRTPLIB简介 老外用C++编写的开源RTP协议库,用来进行实时数据传输,可以运行在 Windows.Linux. FreeBSD.Solaris.Unix和VxWorks 等多种操作系统上, ...
- 在VS2010下编译和使用tesseract_ocr识别验证码
对于自动识别验证码,使用trsseract是个不错的选择,有兴趣的的朋友可以试试. 编译tesseract 官网提供了vs2008的编译说明和工程,但在vs2010下的编译时基本相同的,因此我使用的方 ...
- VS2010 下编译 cocos2d-x-2.1.4
在VS2010 下编译 cocos2d-x-2.1.4 首先感谢 cocos2d-x 团队为我们做出这么好的跨平台框架,让我们这些码农省了很多时间,事半功倍. 里沃特最近在编译 win32 版本的 ...
- ACE在windows下的编译及配置(VS2010)
ACE在windows下的编译及配置(VS2010) 分类: -[小西南]- 2013-08-06 16:17 2354人阅读 评论( ...
- 在vs2010下编译boost
1. 解压缩后,运行bootstrap.bat批处理文件,得到bjam.exe; 2. 在vs2010下编译boost boost最新版本已经支持vs2010,然而直接下载编译会发现一堆bug: 首先 ...
- LIVE555研究之三:LIVE555基础
LIVE555基础 LIVE555是为流媒体提供解决方式的跨平台C++开源项目.从今天起我们将正式開始深入LIVE555代码. 一.各库简要介绍 LIVE555下包括LiveMedia.UsageEn ...
- 【视频开发】【Live555】通过live555实现H264 RTSP直播
前面的文章中介绍了<H264视频通过RTMP流直播>,下面将介绍一下如何将H264实时视频通过RTSP直播. 实现思路是将视频流发送给live555, 由live555来实现H264数据流 ...
随机推荐
- WAF安恒
http://wenku.baidu.com/view/c242927f581b6bd97e19ea1a.html?from=search
- HDU 3507 Print Article(斜率优化DP)
题目链接 题意 : 一篇文章有n个单词,如果每行打印k个单词,那这行的花费是,问你怎么安排能够得到最小花费,输出最小花费. 思路 : 一开始想的简单了以为是背包,后来才知道是斜率优化DP,然后看了网上 ...
- hdu 4465 Candy 数学
思路:易知结果为 ∑(n-k)*C(n+k,k)*(p^(n+1)*q^k+q^(n+1)*p^k). 注意不能直接算,注意点技巧!!!看代码 代码如下: #include<iostream&g ...
- hdu 4430 Yukari's Birthday
思路: 分析知道1<=r<40:所以可以枚举r,之后再二分k. 代码如下: #include<iostream> #include<stdio.h> #includ ...
- moto xt800 刷机到2.2.2
老机器啊,原来2.1的系统大多数软件都不能装sbf刷机包+工具+教程下载地址:http://u.115.com/file/bhdlwl2x 刷完之后如果RSD Lite显示刷机结果为失败,不要担心,手 ...
- 李洪强iOS开发之Foundation框架—结构体
Foundation框架—结构体 一.基本知识 Foundation—基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框 ...
- 卓京---java基础2
2.数据类型 基本类型: 整型: byte字节型 8位(bit) -2^7~2^7-1(-128~127) 0000 0000 short短整型 16位 -2^15~2^15-1(-32768 ...
- 输出进程相关联的环境变量信息(使用GetEnvironmentStrings取得信息,然后使用StringCchCopyN和StringCchPrintf保证字符串不会越界)
void DumpEnvironmentStrings() { #define MAX_ENVIRONMENT_NAME_LENGTH (128) #define MAX_ENVIRONMEN ...
- 如何在Android应用程序中使用传感器模拟器SensorSimulator
原文地址; 如何在Android应用程序中使用传感器模拟器 - 移动平台应用软件开发技术 - 博客频道 - CSDN.NET http://blog.csdn.net/pku_android/arti ...
- 77. Combinations
题目: Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. For ex ...