【转载】Windows10系统中用VS2019编译live555

原博文地址:
Windows10系统中用VS2019编译live555


一、Win10(64位)系统中,首先下载live555源码

live555下载地址:http://www.live555.com/liveMedia/public/

其中264文件夹下是264格式的测试文件,点击【live555-latest.tar.gz】进行下载,下载的是一个压缩包,解压:

 

这里给出live555压缩文件的百度网盘下载链接:

链接:https://pan.baidu.com/s/1axLGSAlOhFMtOg_NiQTd0g 
提取码:mkhu 

 二、在VS2019中创建 BasicUsageEnvironment、UsageEnvironment、groupsock、liveMedia4个项目:

2.1 打开VS2019,选择【创建新项目】:

2.2 在 语言处选择 C++,选择【Windows 桌面向导】,单击【下一步】:

2.3.1 输入项目名称 BasicUsageEnvironment,解决方案名称可以任意填,这里填写MyLive555,点击【创建】:

2.3.2 在弹出的Windows桌面项目窗口中的 应用程序类型中 选择 【静态库(.lib)】,其他选项 中 勾选【空项目】,点击【确定】:

2.3.3 过程如下图:

2.3.4 创建结果在【解决方案资源管理器】中,如下图所示:

2.4 添加 UsageEnvironment 项目:

2.4.1 选择【文件】 --【添加】--【新建项目】:

2.4.2 同样选择【Windows桌面向导】 ,点击【下一步】:

2.4.3  项目名称输入 UsageEnvironment ,点击【创建】:

2.4.4 在弹出的Windows桌面向导 中的 应用程序类型中 选择 【静态库(.lib)】,其他选项 中 勾选【空项目】,点击【确定】:

2.4.5 创建之后的结果如下图:

2.5 用同样的方法 添加 groupsock 项目,在最后弹出的Windows桌面向导 中的 应用程序类型中 选择 【静态库(.lib)】,其他选项 中 勾选【空项目】:

2.6 用同样的方法 添加 liveMedia 项目,在最后弹出的Windows桌面向导 中的 应用程序类型中 选择 【静态库(.lib)】,其他选项 中 勾选【空项目】:

2.7 结果如下图:

至此,在MyLive555解决方案下有4个项目,分别是 BasicUsageEnvironment、UsageEnvironment、groupsock、liveMedia。

三、在VS2019中创建 mediaServer项目:

3.1 同样的方法,在VC2019中依次点击【文件】--【添加】--【新建项目】,选择【Windows桌面向导】,项目名称 填写mediaServer,点击【创建】按钮,在弹出的 Windows桌面项目中,应用程序类型 选择 【控制台应用程序(.exe)】,其他选项 勾选 【空项目】,点击【确定】按钮:

3.2 结果如下图所示:

现在 在 解决方案'MyLive555' 下共有5个项目,与下载的源码中的库文件名相对应:

四、将源文件加入工程:

4.1 将 下载下来的BasicUsageEnvironment 中的源文件加入vS2019中对应的BasicUsageEnvironment工程中:

4.1.1 首先查看在下载的Live555源码中的 BasicUsageEnvironment 下的一些文件:

include中的文件: 

 

4.1.2 在VS2019中的 BasicUsageEnvironment 项目处单击鼠标右键,选择 【在文件资源管理器中打开文件夹】:

4.1.3 【在文件资源管理器中打开文件夹】的结果如下图:

 

4.1.4 将 4.1.1中  BasicUsageEnvironment 目录下的include目录、cpp文件、c文件、.hh和.h文件拷贝到4.1.3中打开的工程目录下:

 

复制好后的  BasicUsageEnvironment工程目录文件夹如上图。

4.2 用同样的方法将UsageEnvironment、groupsock、liveMedia、mediaServer目录下的include目录、cpp文件、c文件、.hh和.h文件拷贝到对应的工程目录下:

 

 

liveMedia下的方法:liveMedia下的文件较多,复制过程中先在 下载的liveMedia文件夹中Ctrl+A全部选中文件,再按住Ctrl键点击一下4个文件,

这样就把剩余的文件全部选中,再进行复制操作。 

五、 将每个工程中复制好的文件添加进对应的工程中:

首先将每个工程下的 include下的头文件 添加到 头文件筛选器下,再将 .cpp、.c、.hh 和 .h  文件 添加到 源文件筛选器下。

5.1 对 BasicUsageEnvironment 工程进行的操作:

5.1.1 在VS2019中 BasicUsageEnvironment 工程下面的 【头文件】处单击右键,选择【添加】-->【现有项】:

5.1.2 选择之前复制过来的 BasicUsageEnvironment 文件夹下 的 include文件夹下的所有文件,点击【添加】:

5.1.3 这样对应的头文件就被添加进来了;

 

5.1.4 对在VS2019中 BasicUsageEnvironment 工程下面的 【源文件】处单击右键,选择【添加】-->【现有项】:

5.1.5 选择 之前复制过来的 BasicUsageEnvironment 文件夹下 除了include文件夹下、 .vcxproj、 .filters和  .user文件之外的 所有 .cpp、.c、.hh 和 .h  文件,点击【添加】:

5.1.6 VS2019中BasicUsageEnvironment项目添加完毕后的结果如下图:

5.2 按照同样的方法 将其他4个工程 复制好的文件添加进对应的工程中:

liveMedia中 添加的项目较多,可参考4.2中的liveMedia下的方法。

mediaServer下没有include目录,直接选择.hh文件添加进头文件,.cpp文件添加进源文件,如上图所示。

六、为每个项目添加依赖头文件(这只是其中的一种参考方法):

6.1 以BasicUsageEnvironment项目为例:

6.1.1 在vs2019中的BasicUsageEnvironment项目处单击鼠标右键,选择【属性】:

6.1.2 在BasicUsageEnvironment属性页的 【配置属性】--【常规】--【输出目录】中填写

$(SolutionDir)$(Configuration)\lib\
    

未修改前默认的输出目录是

$(SolutionDir)$(Configuration)\
    

 结果如下图所示:

(注意)这里的lib文件夹会在后来第七步的Debug过程中在Debug文件夹下自动生成,这样填写完全是为了最后mediaServer的属性页的【链接器】--【常规】--【附加库目录】中方便。

通过点击【输出目录】右侧对应的 倒三角按钮选择<编辑...>,可以看到对应的输出目录:

6.1.3 在BasicUsageEnvironment属性页的【C/C++】--【常规】--【附加库目录】中输入:

..\BasicUsageEnvironment\include;..\groupsock\include;..\liveMedia\include;..\UsageEnvironment\include
    

(将这4个全部包含只是为了方便,相互之间的关系可以不用考虑了)

结果:

6.1.4 点击【附加包含目录】那行 最右侧的 倒三角型按钮,选择<编辑...>:

6.1.5 在弹出的 附加包含目录面板中  勾选 从父级或项目默认设置继承:

连续点击【确定】返回即可 。

6.2 采用同样的方法将剩余的UsageEnvironment、groupsock和liveMedia这3个项目进行设置:UsageEnvironment项目:

 

6.3 groupsock项目:

 

6.4 liveMedia项目:

6.5.1 mediaServer项目中的属性页的 【配置属性】--【常规】--【输出目录】不用改写,默认即可:

6.5.2 mediaServer项目中的属性页的 【C/C++】--【常规】--【附加包含目录】中同样输入

..\BasicUsageEnvironment\include;..\groupsock\include;..\liveMedia\include;..\UsageEnvironment\include
    

6.5.3 别忘记 勾选 从父级或项目默认设置继承:

6.5.4 从mediaServer属性页的【链接器】--【常规】--【附加库目录】填入

$(SolutionDir)$(Configuration)\lib\
    

这个目录就是前面4个工程设置的【配置属性】 --【常规】--【输出目录】,同样别忘记 勾选 从父级或项目默认设置继承:

6.5.5 从mediaServer属性页的【链接器】--【常规】--【输入】填入


    
  1. UsageEnvironment. lib
  2. liveMedia. lib
  3. groupsock. lib
  4. BasicUsageEnvironment. lib
  5. Ws2_32. lib

一定要有Ws2_32.lib,否则编译生成时会报错,依次点击【确定】 返回即可。

七、分别编译生成 :

先编译 BasicUsageEnvironment、groupsock、liveMedia、UsageEnvironment 这四个工程,最后再编译 mediaServer 这个工程,注意是 mediaServer是最后再编译的。

在vs2019中对应的项目处单击鼠标右键,选择【生成】:

生成过程中:

7.1 BasicUsageEnvironment生成成功:

 

7.2 groupsock遇到问题:

 主要有2个错误和1个警告:

错误1:

error C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.See online help for details.
    

错误2: 

error C4996: 'gethostbyname': Use getaddrinfo() or GetAddrInfoW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
    

警告1: 

\source\repos\MyLive555\groupsock\GroupsockHelper.cpp(840): warning C4244: “=”: 从“time_t”转换到“long”,可能丢失数据
    

改正错误的方法:更改预处理定义:

VS2019中groupsock处单击鼠标右键,选择【属性】,【C/C++】-->【预处理器】-->【预处理器定义】中增加:


    
  1. _CRT_SECURE_NO_WARNINGS
  2. _WINSOCK_DEPRECATED_NO_WARNINGS

依次单击【确定】,返回即可。对于警告,暂时还无法处理 。

在VS2019中groupsock工程处单击鼠标右键选择【重新生成】:发现生成成功,但是警告还是存在。

7.3 liveMedia遇到问题: 也有错误和警告,采用与7.2同样的方法解决:

 生成成功:

但是2个警告还在:

C:\Users\Wenxi\source\repos\MyLive555\liveMedia\H264or5VideoStreamFramer.cpp(670): warning C4018: “<”: 有符号/无符号不匹配
    
C:\Users\Wenxi\source\repos\MyLive555\liveMedia\OggFileSink.cpp(228): warning C4334: “<<”: 32 位移位的结果被隐式转换为 64 位(是否希望进行 64 位移位?)
    

 7.4 UsageEnvironment生成成功:

7.5 mediaServer生成遇到2个错误:

在mediaServer【属性】,【C/C++】-->【预处理器】-->【预处理器定义】中增加:

_CRT_SECURE_NO_WARNINGS
    

重新生成成功:

 

八、测试:

8.1 在VS2019中mediaServer项目处单击鼠标右键,选择【设为启动项目】:

8.2 重新生成mediaServer:

8.3 在VS2019中,按下键盘中的F5 开始调试,可以看到弹出的mediaServer.exe命令行窗口:

8.4 在VS2019的【解决方案资源管理器】 中的 mediaServer工程处 单击鼠标右键,选择 【在文件资源管理器中打开文件夹】,

将测试文件 test.264 复制到打开的文件夹中:

 test.264可在第一部分提到的llive555官网下载,现给出h264文件的百度网盘下载链接:

链接:https://pan.baidu.com/s/1lA37_sKzoTacYZE31xWpIw 
提取码:mqe1 
8.5 打开VLC播放器,选择【媒体】--【打开网络串流】,在【网络】下面的请输入网络URL中输入8.3步骤mediaServer.exe命令行窗口中的第4行 的格式 ,rtsp://192.168.1.6/<filename>,在这里输入 rtsp://192.168.1.6/test.264

rtsp://192.168.1.6/<filename>的意思:前面表示rtsp协议,中间的是ip地址,后面的是文件名称,

VLC播放器可在VLC官网上下载,现给出百度网盘下载链接:

链接:https://pan.baidu.com/s/1DjwmGHr6hZ-Ecun_A0itAA 
提取码:u5yp 

点击【播放】 ,结果如下图:可以正常播放测试文件test.264。

 8.6 关掉VLC播放器,关掉mediaServer.exe窗口,在VS2019输出中:显示有异常,暂时还无法处理。

0x752EC632 处(位于 mediaServer.exe 中)引发的异常: Microsoft C++ 异常: int,位于内存位置 0x009CCA4C 处。
    

 9.参考:

https://blog.youkuaiyun.com/qq_29350001/article/details/77962082

https://blog.youkuaiyun.com/lbc2100/article/details/80744888

https://blog.youkuaiyun.com/rznice/article/details/51657593 

https://www.jianshu.com/p/c48ecd92c692

注意: BasicUsageEnvironment、groupsock、liveMedia、UsageEnvironment这4个工程的属性 中的【配置属性】--【常规】--【项目默认值】--【配置类型】中的 都是 静态库(.lib)

</article>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值