Win7下使用VS2013编译live555

一.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。

更多介绍详见官网:LIVE555.COM

二.下载

下载链接:Index of /liveMedia/public

已经更新到了2016.11.06

三.编译

这里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 --- vs2010编译_maplele20的博客-CSDN博客

------------------------------------------------------分割线---------------------------------------------------------------

Win10下用VS2017编译live555

当前live555已经更新到了2022.04.26

源码目录结构和六年前相比没有变化,用VS2017编译的方法也和VS2013一样,其实用Qt Creator来编译也很方便,文末是pro文件
这里突然更新一下,是因为去年做了个基于libVLC的视频播放器,现在想看看live555的源码,要看当然看最新的源码啦,顺便更新下这篇博文

live555\BasicUsageEnvironment\BasicUsageEnvironment.pro

TARGET = BasicUsageEnvironment
TEMPLATE = lib
CONFIG += staticlibcontains(QT_ARCH, i386) {
DESTDIR = ../out/win32
} else {
DESTDIR = ../out/x64
}DEFINES += _CRT_SECURE_NO_DEPRECATE \_WINSOCK_DEPRECATED_NO_WARNINGSINCLUDEPATH += $$PWD/include \$$PWD/../groupsock/include \$$PWD/../liveMedia/include \$$PWD/../UsageEnvironment/includeHEADERS += $$PWD/include/*.hhSOURCES += $$PWD/*.cpp

live555\groupsock\groupsock.pro

TARGET = groupsock
TEMPLATE = lib
CONFIG += staticlibcontains(QT_ARCH, i386) {
DESTDIR = ../out/win32
} else {
DESTDIR = ../out/x64
}DEFINES += _CRT_SECURE_NO_DEPRECATE \_WINSOCK_DEPRECATED_NO_WARNINGS \NO_GETIFADDRSINCLUDEPATH += $$PWD/include \$$PWD/../BasicUsageEnvironment/include \$$PWD/../liveMedia/include \$$PWD/../UsageEnvironment/includeHEADERS += $$PWD/include/*.hhSOURCES += $$PWD/*.cpp \$$PWD/*.c

live555\liveMedia\liveMedia.pro

TARGET = liveMedia
TEMPLATE = lib
CONFIG += staticlibcontains(QT_ARCH, i386) {
DESTDIR = ../out/win32
} else {
DESTDIR = ../out/x64
}DEFINES += _CRT_SECURE_NO_DEPRECATE \_WINSOCK_DEPRECATED_NO_WARNINGS \NO_OPENSSLmacx {
DEFINES += LOCALE_NOT_USED
}INCLUDEPATH += $$PWD/include \$$PWD/../BasicUsageEnvironment/include \$$PWD/../groupsock/include \$$PWD/../UsageEnvironment/includeHEADERS += $$PWD/include/*.hh \$$PWD/*.hhSOURCES += $$PWD/*.cpp \$$PWD/*.c

live555\UsageEnvironment\UsageEnvironment.pro

TARGET = UsageEnvironment
TEMPLATE = lib
CONFIG += staticlibcontains(QT_ARCH, i386) {
DESTDIR = ../out/win32
} else {
DESTDIR = ../out/x64
}DEFINES += _CRT_SECURE_NO_DEPRECATE \_WINSOCK_DEPRECATED_NO_WARNINGSINCLUDEPATH += $$PWD/include \$$PWD/../BasicUsageEnvironment/include \$$PWD/../groupsock/include \$$PWD/../liveMedia/includeHEADERS += $$PWD/include/*.hhSOURCES += $$PWD/*.cpp

live555\live555.pro

TEMPLATE = subdirs
CONFIG  += orderedSUBDIRS += \$$PWD/BasicUsageEnvironment \$$PWD/groupsock \$$PWD/liveMedia \$$PWD/UsageEnvironment 

直接打开live555.pro就可以编译生成静态库,最后贴下mediaServer的pro文件

live555\mediaServer.pro

QT -= gui
TARGET = mediaServer
TEMPLATE = appCONFIG += c++11 console
CONFIG -= app_bundleDEFINES += _CRT_SECURE_NO_DEPRECATE \_WINSOCK_DEPRECATED_NO_WARNINGS \NO_OPENSSLINCLUDEPATH += $$PWD/BasicUsageEnvironment/include \$$PWD/groupsock/include \$$PWD/liveMedia/include \$$PWD/UsageEnvironment/includeHEADERS += $$PWD/mediaServer/*.hh \SOURCES += $$PWD/mediaServer/*.cpp \LIBS +=  Ws2_32.libcontains(QT_ARCH, i386) {
DESTDIR = out/win32
LIBS +=  $$PWD/out/win32/BasicUsageEnvironment.lib \$$PWD/out/win32/groupsock.lib \$$PWD/out/win32/liveMedia.lib \$$PWD/out/win32/UsageEnvironment.lib
} else {
DESTDIR = out/x64
LIBS +=  $$PWD/out/x64/BasicUsageEnvironment.lib \$$PWD/out/x64/groupsock.lib \$$PWD/out/x64/liveMedia.lib \$$PWD/out/x64/UsageEnvironment.lib
}

原文链接:https://blog.csdn.net/caoshangpa/article/details/53169297

Win10下用VS2017编译live555相关推荐

  1. windows10系统VS2017编译live555

    需要编译live555的源码,win10系统,使用VS2017 1. 下载源码 下载地址: http://www.live555.com/liveMedia/public/ 下载内容: live555 ...

  2. 2019编译ffepeg vs_如何在windows10下使用vs2017编译最新版本的FFmpeg和ffplay

    该文章描述了如何在windows10 64位系统下面编译出FFmpeg的库及其自带的ffplay播放器,而且全部采用最新的版本,这样我们可以在vs2017的ide下调试ffplay,能使我们更容易学习 ...

  3. Windows下用vs2017编译和配置libcurl库(手把手教,适合新人)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 libcurl是什么? libcurl主要功能就是用不同的协议连接和沟通不同的服务器~也就是相当 ...

  4. Win10 下 ProtoBuf 安装编译以及在 C++ 中的用法

    ProtoBuf Protocol Buffer ( protoBuf 或 PB )是 google 的一种数据交换的格式,它独立于语言,独立于平台. google 提供了多种语言的实现:java.c ...

  5. win10下使用vs2015编译支持xp系统的libcurl

    在我的一篇博客中写了编译libcurl的,那种方式编译的curl动态库在win7到win10上可以使用,但是在xp系统里就不能使用了,接下来讲解一种方法可以在xp系统里使用cur. 1 编译opens ...

  6. win10下的VS2017安装MPI

    VS2017的MPI安装,最初出现了"无法打开原文件的错误",后来废了点时间才解决.以下是我正确安装的步骤. 1.官网下载MPI 官网链接: DownLoads. 选择 MS-MP ...

  7. Live555 —— vs2017编译“Live555 Live555 Media Server“源码

    简介      Live555是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了标准流媒体传输,是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RT ...

  8. mingw版本下qt与HTML,QT5.10开发(2) 在Windows 10下使用MinGW编译 静态Qt 5.10 release版 详细过程...

    Qt建议安装动态链接Dbug版和编译安装静态链接release版 前提: 先安装动态链接Dbug版,方法:QT5.10开发(1)安装QT5.10 地址:http://blog.csdn.net/qq_ ...

  9. win10+python3.66+vs2017+cuda9.2下运行tensorflow版的faster-Rcnn编译训练

    win10+python3.66+vs2017+cuda9.2下运行tensorflow版的faster-Rcnn 配置Faster-RCNN(网上找的的都是基于python3.5的,不支持py3.6 ...

最新文章

  1. 动手学深度学习(二)
  2. java 近似值 循环次数,java题求解
  3. win7桌面图片不显示缩略图问题
  4. 《Web Hacking 101》中的链接整理
  5. 分享两条关于Eclipse Perl插件EPIC的tips吧~
  6. JavaScript的String对象使用
  7. 【JZOJ4790】【NOIP2016提高A组模拟9.21】选数问题
  8. springMVC helloworld入门
  9. 线性代数1.51.5Cramer法则/克莱姆法则
  10. 计算机创新创业2000字,创新创业论文范文 创新创业方面硕士毕业论文范文2000字...
  11. mysql 加序号以及成绩单排名的几种实现方式
  12. python resultful APi
  13. 微信小程序之图片压缩
  14. 记一次路由器频繁掉线问题的分析、解决与发展
  15. 基于GeForce GT 730显卡的Pytorch-GPU环境及Spyder配置
  16. 各种肤质补水六大误区 - 生活至上,美容至尚!
  17. Layui hint: is not a valid module
  18. 推荐系统与深度学习(一)——FM模型原理
  19. TMSI 重配置流程
  20. 不是那个层次的人,也便没机会领略…

热门文章

  1. 城市热点认证计费系统应用
  2. 统一认证管理系统(单点登录系统)sso 浅谈
  3. html canvas颜色渐变色,HTML5-画布(canvas)效果之-渐变色
  4. 电影级动态图片制作PS动作
  5. 《身边的礼仪》视频全文
  6. Latex基本语法总结
  7. 灰度图像压缩 DP算法 位运算详解
  8. 《致盛夏的七封情书》------------ 第二篇《初雨》
  9. 全球最好听的50首英文歌
  10. 2022新版云进销存系统ERP销售库存仓库员工管理系统源码