文档章节

在windows使用vs2008编译live555

雷霄骅
 雷霄骅
发布于 2014/08/16 13:48
字数 766
阅读 106
收藏 0

1.live555源代码简介
liveMedia项目的源代码包括四个基本的库,各种测试代码以及IVE555 Media Server。

四个基本的库分别是UsageEnvironment&TaskScheduler,groupsock,liveMedia,BasicUsageEnvironment。

UsageEnvironment 和TaskScheduler类用于事件的调度,实现异步读取事件的句柄的设置以及错误信息的输出。另外,还有一个HashTable类定义了一个通用的 hash表,其它代码要用到这个表。这些都是抽象类,在应用程序中基于这些类实现自己的子类。

groupsock类是对网络接口的封装,用于收发数据包。正如名字本身,Groupsock主要是面向多播数据的收发的,它也同时支持单播数据的收发。Groupsock定义了两个构造函数
    Groupsock(UsageEnvironment& env, struct in_addr const& groupAddr,
              Port port, u_int8_t ttl);
    Groupsock(UsageEnvironment& env, struct in_addr const& groupAddr,
              struct in_addr const& sourceFilterAddr,
              Port port);
前 者是用于SIM(source-independent multicast)组,后者用于SSM(source-specific multicast)组。groupsock库中的Helper例程提供了读写socket等函数,并且屏蔽了不同的操作系统之间的区别,这是在 GroupsockHelper.cpp文件中实现的。

liveMedia库中有一系列类,基类是Medium,这些类针对不同的流媒体类型和编码。

各种测试代码在testProgram目录下,比如openRTSP等,这些代码有助于理解liveMedia的应用。

LIVE555 Media Server是一个纯粹的RTSP服务器。支持多种格式的媒体文件:

      * TS流文件,扩展名ts。
      * PS流文件,扩展名mpg。
      * MPEG-4视频基本流文件,扩展名m4e。
      * MP3文件,扩展名mp3。
      * WAV文件(PCM),扩展名wav。
      * AMR音频文件,扩展名.amr。
      * AAC文件,ADTS格式,扩展名aac。
2.在windows下编译live555
  (1).下载live555,http://www.live555.com/
    (2). 编辑 win32config,TOOLS32=C:\Program Files\Microsoft Visual Studio 9.0\VC
        即保证这个路径是你的Vs2008 路径。 
    (3). 编辑"LINK_OPTS_0 = $(linkdebug) msvcirt.lib" in win32config to "LINK_OPTS_0 = $(linkdebug) msvcrt.lib",由于编译器所要LINK的运行库不一样了
    (4). 修改groupsock/makefile.head,替换"INCLUDES = -Iinclude -I../UsageEnvironment/include" 为"INCLUDES = -Iinclude -I../UsageEnvironment/include -DNO_STRSTREAM".
    (5). 运行genWindowsMakefiles.cmd 生成VS能够编译的*.mak文件
    (6). 将以下内容保存为live/compile.bat

call "C:\Program Files\Microsoft Visual Studio 9\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



有关这一点来说,建议把vs2008的编译环境加入到环境变量中,那么以后需用命令行编译程序都可行了,可以参考http://blog.chinaunix.net/u3/94873/showart_1907792.html的前部分设置VS2008的环境设置。
    (7). 在命令行下运行compile.bat,就会看到很多编译过程出现在CMD中了。

以上的编译并不是DEBUG模式,要调试时,应先在win32config加入一行"NODEBUG=1"

进行编译后,可以在要调试的程序路径下输入如:C:\works\VCCode\video\live555-latest\live\testProgs>devenv openRTSP.exe,这样就会把相关的调试环境搭建起来进行调试了。


原文地址:http://blog.chinaunix.net/uid-506080-id-2110629.html

本文转载自:http://blog.csdn.net/leixiaohua1020/article/details/12751625

共有 人打赏支持
雷霄骅
粉丝 205
博文 419
码字总数 2129
作品 4
朝阳
程序员
私信 提问
Android中实时视频传输(摄像头实时视频传输)解决方案

1、使用FFMpeg进行视频采集,使用Live555进行RTP传输,使用VideoView进行播放。 csdn提到:重载FrameSource,写一个服务类,可以从FrameSource的派生类读取帧数据,转发给live555. 评价:本方...

元来元去
2014/02/26
0
0
Windows 64位下 PostgreSQL的编译

首先本文是根据权宗亮先生的 Windows 平台编译PostgreSQL 进而完成的,特此说明。 由于编译Windows下64位的PostgreSQL(下面简称PG),所需的依赖包,大部分无法直接使用,所以这里着重讲一下...

PGSmith
2013/07/29
0
3
Windows下 编译Blender2.6

编译方法参考官方教程:http://wiki.blender.org/index.php/Dev:Doc/Building_Blender/Windows 本次编译的环境和准备的软件如下: Windows 7 64bit VS2008 SP1(注意,必须是VS2008,其他版本...

guoliang
2014/03/15
0
0
在VS2008(VC9)中如何正确编译Ogre 1.7.2

首先,我们要准备好相关的安装包: 1、ogre sdk:目前ogre的SDK版本为1.7.2,我们可以从官方网下载windows安装程序:http://www.ogre3d.org/download/sdk 这里有许多版本,我选择的是在VS200...

ryany
2012/02/26
0
0
win 64位系统安装带有c编写的python模块出现ValueError: [u'path']解决

关于win 64位机器安装Scrapy的问题:http://steamforge.net/wiki/index.php/HowtoInstallScrapyin64-bitWindows_7 在安装Scrapy是要安装一系列的依赖模块, 出现问题: 1、error: Unable to ...

Nob
2014/09/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

rabbitmq

灰暗
27分钟前
0
0
Flink

flink HA部署 flink搭建,采用分布式部署方式,分别为A,B,C三个节点。其中A为master;A,B,C为worker。 本文使用的用户是hadoop用户(自己新建) 先决条件 Java 1.8.x or higher scala 自己使用...

-九天-
54分钟前
2
0
数据中台和传统数仓的区别

中台系统把业务层同性的算法能力,服务能力,业务能力高度集成,有效组织 ,动态规划。更好的帮助上层业务。 今天就让我们看看关于数据中台的问答吧。 1 Q : 什么是数据中台? A : 数据中台是...

hblt-j
55分钟前
4
0
Java在什么时候会出现内存泄漏

在Java中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个特点,首先,这些对象是可达的,即在有向图中,存在通路可以与其相连;其次,这些对象是无用的,即程序以后不会再使用这些对...

群星纪元
59分钟前
2
0
android 打开摄像头

private SurfaceHolder mHolder; private SurfaceView mSurfaceView; private Camera mCamera; mSurfaceView = (SurfaceView) this.findViewById(R.id.camsurfaceView1); mHolder = mSurface......

jingshishengxu
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部