0
点赞
收藏
分享

微信扫一扫

win10 vs2019编译live555

niboac 2022-04-23 阅读 49
音视频c++

1.背景

最近在做音视频方面的工作,需要用到live555,准备了解一下其运行的流程,故下载其源码并编译之。

2.源码下载

下载网址:下载网址

网站中提供各个日期的live555源码的压缩包。

我下载的是最新版本。

源码结构介绍

解压之后的目录结构:

 主要使用其中的四个目录, 分别对应 Live555 的四个库:

  • UsageEnvironment 目录:生成的静态库为 libUsageEnvironment.lib, 这个库主要包含一些基本数据结构以及工具类的定义。
  • groupsock 目录,生成的静态库为 libgroupsock.lib, 这个库主要包含网络相关类的定义和实现
  • liveMedia 目录, 生成的静态库为 libliveMedia.lib, 这个库包含了 Live555 核心功能的实现
  • BasicUsageEnvironment 目录, 生成的静态库为 libBasicUsageEnvironment.lib, 这个库主要包含对 UsageEnvironment 库中一些类的实现
  • mediaServer 目 录 中 包 含 Live555 流 媒 体 服 务 器 的 标 准 示 例 程 序 , 运 行live555MediaServer.exe 后出现如下界面:在 mediaServer 目录中放入你的媒体文件, 如 test.mp3, 在 VLC 播放器中选择“媒体”-“打开网络串流”, 然后输入 rtsp://127.0.0.1:8554/test.mp3 就可以播放刚才的 mp3 文件了。
  • proxyServer 目录中是 live555 实现的代理服务器的例子程序, 这个程序可以从其他的流媒体服务器(如支持 RTSP 的摄像机) 取实时的视频流然后转发给多个 RTSP 客户端, 这个程序很有用, 可以转发摄像机的实时视频流。
  • testProgs 目录中包含很多的测试例子程序。

搭建编译环境及编译

网上有很多编译live555的博客,可以参考,我就不重复造轮子了。我参考的是这篇,非常详细,Windows10系统中用VS2019编译live555_Rustone的博客-CSDN博客_vs2019编译

安装这篇博客的步骤,也不能完全编译成功,下面依次列出我在编译过程中遇到的问题及解决方法

  • 无法打开包括文件: “ifaddrs.h”、无法打开包括文件: “openssl/ssl.h”、error C4996: 'fileno'这三个问题参考:

fatal error C1083: 无法打开包括文件: “ifaddrs.h”: No such file or directory_houge101的博客-CSDN博客_ifaddrs头文件

  • 找不到OpenSSL

       这里特别说明下这个问题,其下载地址:http://slproweb.com/product/Win32OpenSSL.html。需要下载完整版,而不是Light版,下载可能会很慢。下载完成之后安装,下一步、下一步即可,重点是安装完成之后将OpenSSL目录拷贝到解决方案目录下,比如我的解决方案目录为:D:\code\live555\live555_learn\live555_learn,如下图

需要的OpenSSL文件如下图,主要是.h文件和库文件,

 

  • 无法解析的外部符号 _BIO_new_socket参考:

https://blog.csdn.net/qq_34732729/article/details/104185103

 另外注意:如果需要调试的话,需要将启动项目改到要调试的那个项目上,不然会报“lib不是有效的win32应用程序”的错误。即这里我们要调试的是mediaServer,就要将启动项目改到mediaServer上,Windows10系统中用VS2019编译live555_Rustone的博客-CSDN博客_vs2019编译这篇文章的最后也有讲。

演示-使用编译好的mediaServer推流

我们打开编译好的mediaServer.exe文件,如下图。

原生的live555支持这些格式的推流,常见的MP4格式并不在其中,live555是可以扩展MP4的,我们这里使用的方法是 使用FFmpeg将MP4格式转化为264格式。

在有外部请求播放视频的情况下,meidiaServer可以将同目录下的的视频推出去, 仅列出的那些格式的视频哦,其他不支持的格式是不能推的。

下面我们就来准备一个.264的视频,FFmpeg的安装自己在网上搜吧。

准备一个mp4视频,我的视频是test.MP4,复制到ffmpeg.exe目录下,并在ffmpeg.exe目录下打开cmd,

 

输入 ffmpeg -i test.mp4 -codec libx264 -bsf: h264_mp4toannexb -f h264 test.264

可以看到生成了一个test.264文件。

然后将test.264复制到mediaServer.exe文件所有目录,打开mediaServer.exe,

它告诉了我们收流的地址,即rtsp://192.168.22.41/文件名,我这里用的文件是test.264,所以我test视频的收流地址是:rtsp://192.168.22.41/test.264。

然后打开VLC,输入这个收流地址

 

于是就可以看到视频了,

 

编译一个rtspclient

在解决方案下创建一个client项目,在下载好的源码目录中找到testRTSPClient.cpp复制到client项目目录下--》导入到VS--》配置属性,和创建mediaServer项目相同的方法,参考meidiaServer的方法,这里就不贴详细步骤了。

 做完配置之后,点击生成,不出意外有出现一堆问题,还是参考mediaServer,这些问题在生成mediaServer都有遇到,上面都有记录的。

解决完这些问题之后,点击重新生成,成功,开心。

在输出目录可以看到client.exe

运行一下:

打开mediaServer,在该目录下打开命令行,输入client rtsp://192.168.56.1/test.264,就可以收到流了。rtsp://192.168.56.1/test.264是我的流地址。

 

 

举报

相关推荐

0 条评论