live555搭建流媒体服务器1--live555概述

来源:互联网 发布:淘宝招募分销商 编辑:程序博客网 时间:2024/06/05 18:11

Live555搭建流媒体服务器1--概述

1. Live555概述

    我知道的用于流媒体服务器上的开源库有DSS(Darwin Streaming Server)和Live555;其中DSS是苹果公司的一个开源项目,当然用在了苹果公司自己的多媒体播放器(QuickTime)上,性能上是比较好的。这里我自己没有做深入的研究DSS,是从国内对流媒体服务器开发比较资深的Babosa在一篇博客《用live555做本地视频采集转发,附源码》上介绍的,Babosa分别作了基于live555和DSS的转发服务器,对比后发现DSS在架构以及性能方面较live555略胜一筹。但是DSS的更新速度很慢,在DSS的主页上大家就可以发现,目前只有6.0.3及以前的5.5.5版本,而4年前大家就可以发现在一些博客上介绍了DSS的这些版本,所以可以说4年来没有什么版本上的多大改进。但是live555的主页上就不一样了,大家可以发现每隔几个月作者就会更新,作者比较负责。所以我选择从Live555先入手。
     Live555的缔造者是Ross Finlayson,他在1995年的时候在美国加利福利亚州的山景城(硅谷的主要组成部分)开了家针对流媒体基础软件方面的网络技术和咨询公司LIVE555.COM,在作者的主页上可以知道他还是一个地道资深骑行爱好者。LIVE555 Media Server是他们公司的一个主要部分,我重点研究的也是LIVE555 Media Server和LIVE555 Proxy Server
    参考LIVE555 Media Server的主页,它实现了对标准流媒体传输协议如:RTP/RTCP、RTSP、SIP等的支持,也实现了对多种音频视频编码格式的音视频数据的流化、接受和处理,包括MPEG-TS、MPEG-1、MPEG-2、MPEG-4、H.264、H.265、DV、WAV、AAC等等。已经在VLC和MPlayer等流媒体播放器上应用。Live555支持跨平台,是C++编写。

2. Live555源码获取及其编译

     Live555的源码发布是以LIVE555 Streaming Media发布的,其中就包括了mediaServer和proxyServer等,在下载页面上下载一个.tar.gz的包(有两个,而windows下应该是下载解压后有live文件夹的那个)。在官网主页上介绍的是用自带的genWindowsMakefiles生成.mak的问价,然后再用nmake编译(*所讲内容均在windows系统下)。这种方法我自认为比较麻烦,而且nmake也比较老了,现在都用IDE直接编译了。所以我推荐第二种方法,建立VS工程直接编译,这样可以更加方便自己调试修改分析源码。这里参考博客《live555—VS2010/VS2013 下live555编译、使用及测试》以及自己的实践过程做如下介绍。我的环境是VS2010+Win7(32位),源码为live.2014.11.01.tar.gz
(1)建立一个解决方案,然后在解决方案中添加四个静态库项目
(2)将源码中的对应文件下的内容复制到解决方案的各个对应的lib项目下;
(3)在VS解决方案中的各个lib项目中添加对应的cpp文件,在添加liveMedia项目中的时候会发现在cpp文件中含有一些.hh文件,也添加到项目中;添加后的效果图:其中hh文件应该是15个;

(4)添加头文件,这里没有像cpp那样添加到lib项目中,是设置路径后直接调用的。这样可以尽可能保持live555库的原始性,即不去修改这些基础的头文件,在下次更新新版本后可以直接换掉。但是如果作者需要去尽可能的修改live555,那么也可以把这些头文件像添加cpp文件那样加入到lib项目中。我采用的相对路径,对每个lib项目都加入四个文件夹中的头文件工程->属性->配置属性->C/C++->常规->附加包含目录;输入..\BasicUsageEnvironment\include;..\groupsock\include;..\liveMedia\include;..\UsageEnvironment\include;之所以加入四个文件中,是因为BasicUsageEnvironment项目中的cpp也会用到UsageEnvironment中的头文件,所以直接的办法是四个都加入。
(5)设置输入目录,项目-》属性-》常规-》输出目录,debug模式下时的输出目录我设置为..\lib\Debug;在release模式下时我的输出目录设置为..\lib\Release;四个项目中都是这么设置的。
(6)结果在lib的Debug文件夹和Release文件夹下分别生成四个项目的lib BasicUsageEnvironment.lib、groupsock.lib、UsageEnvironment.lib、liveMedia.lib
0 0