Win7(Windows 7)下用VS2013(Visual Studio 2013)编译live555

转自:http://blog.csdn.net/caoshangpa/article/details/53200527

一.live555简介

live555是一个为流媒体提供解决方案的跨平台C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP、RTSP、SIP等的支持。live555能在Linux,Mac OS X,Windows和QNX等多个平台编译和运行。目前,它被用于流化、接收和处理MPEG、H.264、H.265、H.263+、DV等视频,以及MPEG(MP3的编码)、AAC、PCM等音频。由于良好的扩展性,live555可轻松支持其他的音视频编码格式,相关功能已经被添加到多款流行的播放器中,比如说VLC和MPlayer。

更多介绍详见官网:http://www.live555.com/


二.下载

下载链接:http://www.live555.com/liveMedia/public/

已经更新到了2016.11.06



三.编译

这里http://www.live555.com/liveMedia/#config-windows有编译步骤。

1.解压到E:\live555

2.修改E:\live555\win32config文件,将文件中的TOOLS32=  c:\Program Files\DevStudio\Vc改为你的VS2013路径,我改成了TOOLS32=  C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC

3.cd到E:\live555,执行genWindowsMakefiles,会在E:\live555的每个子文件夹中生成后缀为.mak的MakeFiles文件,该文件能被VS打开

4.用VS2013打开各个子文件夹中的*.mak文件,此时会发现VS2013根本就不能打开*.mak文件,google后发现只有VC6.0才能直接打开*.mak文件,此后版本的VS只能用命令行来编译。So,没必要继续看下去了。

现在直接新建VS2013工程,将源文件添加进去,然后再进行编译。这种方法虽然繁琐,但是便于调试。

在E:\live555中共有8个子文件夹,如下所示:


其中其中BasicUsageEnvironment、groupsock、liveMedia、UsageEnvironment、WindowsAudioInputDevice是基础类库,以静态库的形式存在,testProgs则主要存放一些测试代码,mediaServer则是服务器的主程序,以一个可执行文件形式存在。

UsageEnvironment:UsageEnvironment和TaskScheduler类用于调度延迟事件、给异步读事件分配句柄、输出错误或警告消息。HashTable类定义了通用哈希表接口,该接口被源码的其他部分使用。这些类是抽象类,需要去继承并实现。

groupsock:这个库的类封装了网络接口和套接字,需要注意的是,Groupsock封装了发送或接收主播报文的操作。

liveMedia:这个库定义了以Medium类为根的树状层级类,封装了大量流媒体类型和编码。

BasicUsageEnvironment:这个类是UsageEnvironment的一个实现类。

testProgs:一些测试程序。

WindowsAudioInputDevice:这个库是liveMedia中抽象类AudioInputDevice的实现,能在Windows上从输入设备读取PCM音频采样。

mediaServer:服务器主程序。

proxyServer:代理服务器,以一个可执行文件形式存在。

1.新建一个空白解决方案


像该解决方案中添加7个Win32控制台项目(不包括例子),其中5个静态库如下设置,选择静态库,并且不勾选预编译头。


两个可执行程序如下设置,选择控制台应用程序,并且勾选空项目。


添加完成后,解决方案如下图所示:


然后就是向各个项目中添加源代码,注意源代码一定别遗漏,否则静态库虽然编译可能通过,但是调用时会出现链接错误。此时直接编译肯定是编不过的,相关的头文件和库文件没有添加。

这里以编译BasicUsageEnvironment和mediaServer为例,其他的操作类似。

2.BasicUsageEnvironment编译


为了防止类似error C4996: '_snprintf': This function or variable may be unsafe的错误,7个项目中都要在预处理定义中加入_CRT_SECURE_NO_DEPRECATE和_WINSOCK_DEPRECATED_NO_WARNINGS


3.mediaServer编译

等5个静态库编译成功后(WindowsAudioInputDevice暂时没用到,可以先不用编译),就可以编译mediaServer了。



这里以Debug配置来演示,Release步骤一样。5个静态库默认被编译到E:\live555\live555project\Debug,像上图设置可以加入库目录。


注意别忘了添加Ws2_32.lib,不然的话,会出现一大堆Socket相关的链接错误。编译成功的mediaServer也在E:\live555\live555project\Debug中。

4.mediaServer运行


控制台中打印出客户端访问时使用的URL地址格式和live555支持的文件类型。


四.测试

这里需要特别注意一点,当通过IDE运行mediaServer时,live555推送的是项目工作目录中的视频或音频。工作目录也就是和*.vcxproj同级的目录,即E:\live555\live555project\mediaServer,此时视频应该放在这个目录下。当双击mediaServer.exe运行时,视频理所当然的和mediaServer.exe放在一个目录,即E:\live555\live555project\Debug。

测试视频:480320.264

客户端:vlc-2.2.4-win32

操作步骤:



如果URL地址不对(视频名字错了或其他原因),会出现如下提示:


需要说明的是mediaServer只实现读取本地文件推送到客户端的点播功能,实际应用中往往需要实时采集影视频数据,并打包成RTSP流推送出去,即直播。此时,可以继承live555的相关类,实现从内存中读取数据并推送。详见下篇:

通过live555实现H264 RTSP直播(Windows版)


live555源码+VS2013工程+480320.264下载链接:见http://blog.csdn.net/caoshangpa/article/details/53169297的评论

参考链接:http://blog.csdn.net/lf8289/article/details/7785898

猜你喜欢

转载自blog.csdn.net/dancing_night/article/details/72911282