一、源代码的下载:
1. 从官网下载最新版本,下载地址:http://www.live555.com/liveMedia/public/,选择live555-latest.tar.gz下载。此时的版本为2018.04.25
下载后解压,可以看到如下文件:
下载好源代码后开始编译。
编译环境为:win10 64位+Visual Studio 2015
二、创建工程
1. 新建win32控制台应用程序,项目名称为BasicUsageEnvironment,解决方案名称为live555,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/86477ffd39fe9b4d57bc47dc9bb6c754.png)
2. 点击确定,按照下图进行配置:
3. 添加新项目,选择win32控制台项目,项目名称为UsageEnvironment,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/56a29b17b26e0ac69741b04a99036885.png)
4. 点击确定和下一步,按下图配置:
![](https://i-blog.csdnimg.cn/blog_migrate/d6003fd1d89a423f567d54c61399927a.png)
5. 重复上面的步骤,添加groupsock 、liveMedia项目。
6. 添加mediaServer工程,并按如下配置:
7. 五个工程均创建完毕,添加后的解决方案结构图如下:
三、添加源文件到工程
1. 打开源代码目录,将BasicUsageEnvironment、UsageEnvironment、groupsock、mediaServer、liveMedia目录下的include目录、cpp文件和hh文件拷贝到上述创建的对应的工程目录下。BasicUsageEnvironment拷贝后的效果如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/2fc02fa041009ee352a37eea1c0166a7.png)
2. 接着就是将这些文件添加进对应项目,将每个工程下的cpp添加到源文件筛选器下,头文件则添加到头文件筛选器下。添加后工程结构图:
![](https://i-blog.csdnimg.cn/blog_migrate/63f1efae114bebc04616436640df121a.png)
3. 添加依赖头文件。在属性->C/C++->常规->附加包含目录填写需要包含的头文件路径
- ..\BasicUsageEnvironment\include
- ..\groupsock\include
- ..\liveMedia\include
- ..\UsageEnvironment\include
BasicUsageEnvironment添加后效果如下图,其他4个工程项目重复操作即可。
![](https://i-blog.csdnimg.cn/blog_migrate/fa1ccfb4b59f7025094a29ce019708b2.png)
添加完毕后,即可编译生成对应的lib。
四、编译项目
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
如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/a12566e664e1365e955ab00c8a893c93.png)
错误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库文件,如下:
![](https://i-blog.csdnimg.cn/blog_migrate/b2796fb16f5826f3d70c57cde2e357d4.png)
2. 为MediaServer添加依赖库。
在MediaServer的ive555MediaServer.cpp添加如下代码:
- #pragma comment (lib, "Ws2_32.lib")
- #pragma comment (lib, "../Debug/BasicUsageEnvironment.lib")
- #pragma comment (lib, "../Debug/groupsock.lib")
- #pragma comment (lib, "../Debug/liveMedia.lib")
- #pragma comment (lib, "../Debug/UsageEnvironment.lib")
3. 将mediaServer项目设置为启动项目,编译运行该项目,运行结果如下:
![](https://i-blog.csdnimg.cn/blog_migrate/e370be3930a9eebd93de01e65deb442a.png)
五、程序测试:使用VLC测试LIVE555服务器
1. 将test.264文件放到mediaServer文件夹下。运行程序,此时,RTSP服务器已经开始运行,等待来自客户端的请求。test.264文件可以在这里下载。
2. 打开网络串流,输入本机ip+录像文件名。如rtsp://192.168.110.241/test.264,如下:
![](https://i-blog.csdnimg.cn/blog_migrate/ff807524199658c029f923fdab14542e.png)
若不知道本机IP,可以打开开始---附件---命令提示符,输入ipconfig命令进行查看本机IP。如下:
3. 播放效果如下:
六、编译openRTSP
1、添加新项目,选择win32控制台项目,项目名称为openRTSP。
2、点击确定和下一步,按下图配置:
3、从testProgs目录中复制openRTSP.cpp、playCommon.cpp、playCommon.hh到openRTSP目录中,然后把这三个文件加入到源文件中。如下图所示:
4. 为openRTSP添加依赖库。
在openRTSP的playCommon.cpp中添加如下代码:
- #pragma comment (lib, "Ws2_32.lib")
- #pragma comment (lib, "../Debug/BasicUsageEnvironment.lib")
- #pragma comment (lib, "../Debug/groupsock.lib")
- #pragma comment (lib, "../Debug/liveMedia.lib")
- #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,成功后会把获取得到的码流保存到当前目录下。
参考:https://blog.csdn.net/hjl240/article/details/48159243,
说明:这个是按上面地址按照VS2015重新编译和多出了一个错误。同时增加openRTSP的编译。