20210221231021534.png

一、简介:

live555是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP、RTSP、SIP等的支持。Live555实现了对多种音视频编码格式的音视频数据的流化、接收和处理等支持。

推荐一个特别好用的微信公众号:码客资源网   里面以百度云下载链接分享的方式,可以免费获得各种编程教学视频,以及各类编程软件的安装教程等。感觉还是不错的,推荐大家!


二、学前准备:

1、建议在开始live555学习之前,先花10分钟去这个教程里学习一下RTSP/RTP/RTCP/SDP协议的内容,学完再来分析live555的源码将会事半功倍:https://blog.csdn.net/Chiang2018/article/details/101689168

2、live555源码下载地址:http://www.live555.com/liveMedia/public/  选择live555-latest.tar.gz下载。

图片.png

三、VS2015编译与测试Live555

源码下载后,进行解压,可以看到如下文件:

下载好源代码后开始编译。编译环境为:win10 64位+Visual Studio 2015

1、创建工程

1.      新建win32控制台应用程序,项目名称为BasicUsageEnvironment,解决方案名称为live555,如下图:


2.      点击确定,按照下图进行配置:


3.      添加新项目,选择win32控制台项目,项目名称为UsageEnvironment,如下图:

4.      点击确定和下一步,按下图配置:

5.      重复上面的步骤,添加groupsock 、liveMedia项目。

6.      添加mediaServer工程,并按如下配置:


7.      五个工程均创建完毕,添加后的解决方案结构图如下:


2、添加源文件到工程

1.      打开源代码目录,将BasicUsageEnvironment、UsageEnvironment、groupsock、mediaServer、liveMedia目录下的include目录、cpp文件和hh文件拷贝到上述创建的对应的工程目录下。BasicUsageEnvironment拷贝后的效果如下图:


2.      接着就是将这些文件添加进对应项目,将每个工程下的cpp添加到源文件筛选器下,头文件则添加到头文件筛选器下。添加后工程结构图:


3.      添加依赖头文件。在属性->C/C++->常规->附加包含目录填写需要包含的头文件路径

BasicUsageEnvironment添加后效果如下图,其他4个工程项目重复操作即可。

添加完毕后,即可编译生成对应的lib。

3、编译项目

1.      分别编译UsageEnvironment、groupsock、liveMedia、BasicUsageEnvironment这4个项目。编译过程中,会出现如下错误:

错误 1       error C4996: ‘_snprintf’:This function or variable may be unsafe. Consider using _snprintf_s instead. Todisable deprecation, use _CRT_SECURE_NO_WARNINGS.

错误是说 使用这个_snprintf函数不安全。

解决这个错误的方法是:更改预处理定义:

项目->属性->配置属性->C/C++ ->预处理器 -> 预处理器定义,增加:

 _CRT_SECURE_NO_DEPRECATE

  如下图:

错误2 warning C4996: 'gethostbyname': Use getaddrinfo() or GetAddrInfoW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API


解决这个错误的方法是:

更改预处理定义:

项目->属性->配置属性->C/C++ ->预处理器 -> 预处理器定义,增加:

  _WINSOCK_DEPRECATED_NO_WARNINGS


这2个错误解决后,分别编译4个项目,编译完成之后在Debug目录下会生成4个项目的lib库文件,如下:


2.      为MediaServer添加依赖库。

在MediaServer的ive555MediaServer.cpp添加如下代码:


[cpp] view plain copy

  1. #pragma comment (lib, "Ws2_32.lib")   

  2. #pragma comment (lib, "../Debug/BasicUsageEnvironment.lib")  

  3. #pragma comment (lib, "../Debug/groupsock.lib")  

  4. #pragma comment (lib, "../Debug/liveMedia.lib")  

  5. #pragma comment (lib, "../Debug/UsageEnvironment.lib")  



3.      将mediaServer项目设置为启动项目,编译运行该项目,运行结果如下:


4、程序测试:使用VLC测试LIVE555服务器

1.      将test.264文件放到mediaServer文件夹下。运行程序,此时,RTSP服务器已经开始运行,等待来自客户端的请求。test.264文件可以在这里下载。

2.      打开网络串流,输入本机ip+录像文件名。如rtsp://192.168.110.241/test.264,如下:


若不知道本机IP,可以打开开始---附件---命令提示符,输入ipconfig命令进行查看本机IP。如下:


3.      播放效果如下:


5、编译openRTSP

1、添加新项目,选择win32控制台项目,项目名称为openRTSP。


2、点击确定和下一步,按下图配置:

3、从testProgs目录中复制openRTSP.cpp、playCommon.cpp、playCommon.hh到openRTSP目录中,然后把这三个文件加入到源文件中。如下图所示:

 


4.      为openRTSP添加依赖库。

在openRTSP的playCommon.cpp中添加如下代码:


[cpp] view plain copy

  1. #pragma comment (lib, "Ws2_32.lib")   

  2. #pragma comment (lib, "../Debug/BasicUsageEnvironment.lib")  

  3. #pragma comment (lib, "../Debug/groupsock.lib")  

  4. #pragma comment (lib, "../Debug/liveMedia.lib")  

  5. #pragma comment (lib, "../Debug/UsageEnvironment.lib")  


5、添加依赖头文件。在属性->C/C++->常规->附加包含目录填写需要包含的头文件路径,如下图所示:

6、编译该项目,会在debug目录中,生成openRTSP.exe。

7、在CMD行模式下运行openRTSP.exe, 例如:openRTSP.exe rtsp://xx.xx.xx.xx:554/tc0.264,成功后会把获取得到的码流保存到当前目录下。