Win10下用VS2017编译live555
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相关推荐
- windows10系统VS2017编译live555
需要编译live555的源码,win10系统,使用VS2017 1. 下载源码 下载地址: http://www.live555.com/liveMedia/public/ 下载内容: live555 ...
- 2019编译ffepeg vs_如何在windows10下使用vs2017编译最新版本的FFmpeg和ffplay
该文章描述了如何在windows10 64位系统下面编译出FFmpeg的库及其自带的ffplay播放器,而且全部采用最新的版本,这样我们可以在vs2017的ide下调试ffplay,能使我们更容易学习 ...
- Windows下用vs2017编译和配置libcurl库(手把手教,适合新人)
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 libcurl是什么? libcurl主要功能就是用不同的协议连接和沟通不同的服务器~也就是相当 ...
- Win10 下 ProtoBuf 安装编译以及在 C++ 中的用法
ProtoBuf Protocol Buffer ( protoBuf 或 PB )是 google 的一种数据交换的格式,它独立于语言,独立于平台. google 提供了多种语言的实现:java.c ...
- win10下使用vs2015编译支持xp系统的libcurl
在我的一篇博客中写了编译libcurl的,那种方式编译的curl动态库在win7到win10上可以使用,但是在xp系统里就不能使用了,接下来讲解一种方法可以在xp系统里使用cur. 1 编译opens ...
- win10下的VS2017安装MPI
VS2017的MPI安装,最初出现了"无法打开原文件的错误",后来废了点时间才解决.以下是我正确安装的步骤. 1.官网下载MPI 官网链接: DownLoads. 选择 MS-MP ...
- Live555 —— vs2017编译“Live555 Live555 Media Server“源码
简介 Live555是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了标准流媒体传输,是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RT ...
- 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_ ...
- win10+python3.66+vs2017+cuda9.2下运行tensorflow版的faster-Rcnn编译训练
win10+python3.66+vs2017+cuda9.2下运行tensorflow版的faster-Rcnn 配置Faster-RCNN(网上找的的都是基于python3.5的,不支持py3.6 ...
最新文章
- 动手学深度学习(二)
- java 近似值 循环次数,java题求解
- win7桌面图片不显示缩略图问题
- 《Web Hacking 101》中的链接整理
- 分享两条关于Eclipse Perl插件EPIC的tips吧~
- JavaScript的String对象使用
- 【JZOJ4790】【NOIP2016提高A组模拟9.21】选数问题
- springMVC helloworld入门
- 线性代数1.51.5Cramer法则/克莱姆法则
- 计算机创新创业2000字,创新创业论文范文 创新创业方面硕士毕业论文范文2000字...
- mysql 加序号以及成绩单排名的几种实现方式
- python resultful APi
- 微信小程序之图片压缩
- 记一次路由器频繁掉线问题的分析、解决与发展
- 基于GeForce GT 730显卡的Pytorch-GPU环境及Spyder配置
- 各种肤质补水六大误区 - 生活至上,美容至尚!
- Layui hint: is not a valid module
- 推荐系统与深度学习(一)——FM模型原理
- TMSI 重配置流程
- 不是那个层次的人,也便没机会领略…