Windows下Live555的编译及VS工程创建

0 前言

最近在学习Live555开源代码,这是一个跨平台的C++开源项目,网上也有很多相关的编译教程和源码分析文章,本文主要针对Live555在Windows下的编译以及VS工程创建过程进行总结与分享。

1 Live555简介

Live555是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP、RTSP、SIP等的支持。
Live555实现了对多种音视频编码格式的音视频数据的流化、接收和处理等支持,包括MPEG、H265、H264、H.263+、DV、JPEG视频和多种音频编码。同时由于良好的设计,Live555非常容易扩展对其它格式的支持。
目前,Live555已经被用于多款播放器的流媒体播放功能的实现,如VLC(VideoLan)、MPlayer。
源码目录结构如下:

Windows下Live555的编译及VS工程创建_第1张图片
Live555源码目录结构

2 在Windows上使用makefile编译Live555

  1. 下载Live555源码。
  2. 修改win32config中的TOOLS32和LINK_OPTS_0两个选项,如下所示:
# 本机Visual Studio安装目录,以VS2010为例
TOOLS32=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC
# msvcirt.lib在Visul C++2003开始就不支持了
LINK_OPTS_0=$(linkdebug)msvcrt.lib
  1. 修改groupsock/makefile.head,
INCLUDES = -Iinclude -I../UsageEnvironment/include
修改为
INCLUDES = -Iinclude -I../UsageEnvironment/include -DNO_STRSTREAM
  1. 运行genWindowsMakefiles.cmd生成VS能够编译的*.mak文件
  2. 编写批处理文件,将以下代码保存为live\compile.bat
call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"
cd liveMedia
nmake /B -f liveMedia.mak
cd ../groupsock
nmake /B -f groupsock.mak
cd ../UsageEnvironment
nmake /B -f UsageEnvironment.mak
cd ../BasicUsageEnvironment
nmake /B -f BasicUsageEnvironment.mak
cd ../testProgs
nmake /B -f testProgs.mak
cd ../mediaServer
nmake /B -f mediaServer.mak
cd ../proxyServer
nmake /B -f proxyServer.mak
cd ../WindowsAudioInputDevice
nmake /B -f WindowsAudioInputDevice.mak

注意:目前的VS已不支持直接打开Makefile文件并转化成sln。需要使用nmake命令行进行编译。

  1. 在命令行下运行compile.bat文件,编译过程会在命令行中显示,最后会在各个源码目录下生成对应的lib或exe文件。

3 生成VS2010解决方案

3.1 添加四个基本库并编译

  1. 新建4个empty project: BasicUsageEnvironment,GroupSock,LiveMedia,UsageEnvironment。
  2. 复制源文件到对应的工程目录下,以BasicUsageEnvironment为例,复制后目录结构如下:


    Windows下Live555的编译及VS工程创建_第2张图片
    BasicUsageEnvironment工程文件目录
  3. 添加文件到工程,方法:add->Existing Item,快捷键:Shift+Alt+A
  4. 根据.mak文件中的INCLUDES属性修改每个工程的头文件引用,方法:Project->Properties->Configuration Properties->VC++ Directories->Include Directories,属性界面如下图所示:
    Windows下Live555的编译及VS工程创建_第3张图片
    头文件包含目录
# BasicUsageEnvironment   
$(SolutionDir)BasicUsageEnvironment\include;
$(SolutionDir)UsageEnvironment\include;
$(SolutionDir)GroupSock\include;
$(IncludePath)
# GroupSock
$(SolutionDir)GroupSock\include;
$(SolutionDir)UsageEnvironment\include;
$(IncludePath)
# LiveMedia
$(SolutionDir)LiveMedia\include;
$(SolutionDir)UsageEnvironment\include;
$(SolutionDir)GroupSock\include;
$(IncludePath)
# UsageEnvironment
$(SolutionDir)UsageEnvironment\include;
$(SolutionDir)GroupSock\include;
$(IncludePath)

注意,$(IncludePath)对应的就是Include Directories属性页中左下角的Inherit from parent or project defaults勾选后的结果,主要包含了IDE默认的Include头文件,去除后会导致无法找到系统的头文件而编译报错。

  1. 修改工程输出文件类型,方法:Project->Properties->Configuration Properties->General->Configuration Type,界面如下:
    Windows下Live555的编译及VS工程创建_第4张图片
    输出文件类型
  2. 设置工程输出目录,尽量通用,便于输出文件的管理与移植,个人习惯如下:
file type Output Directory
lib $(SolutionDir)\Output\Lib(Debug)
dll $(SolutionDir)\Output\Bin(Debug)
exe $(SolutionDir)\Output\Bin(Debug)
pdb $(SolutionDir)\Output\Pdb(Debug)

3.2 添加可执行文件工程(MediaServer)并运行

  1. 新建1个empty project: MediaServer。
  2. 复制源文件到MediaServer工程目录。
  3. 添加源文件到MediaServer工程。
  4. 设置头文件引用目录,如下:
# MediaServer
$(SolutionDir)BasicUsageEnvironment\include;
$(SolutionDir)LiveMedia\include;
$(SolutionDir)UsageEnvironment\include;
$(SolutionDir)GroupSock\include;
$(IncludePath)
  1. 设置Linker目录,方法:Project->Properties->Configuration Properties->Linker->General->Additional Library Directories,界面如下:
    Windows下Live555的编译及VS工程创建_第5张图片
    lib静态依赖库目录
# Debug
$(SolutionDir)\Output\LibDebug;
%(AdditionalLibraryDirectories)
# Release
$(SolutionDir)\Output\Lib;
%(AdditionalLibraryDirectories)
  1. 添加lib静态依赖库,方法:Project->Properties->Configuration Properties->Linker->Input->Additional Dependencies,界面如下:
    Windows下Live555的编译及VS工程创建_第6张图片
    lib静态依赖库文件
UsageEnvironment.lib
liveMedia.lib
groupsock.lib
BasicUsageEnvironment.lib
Ws2_32.lib
  1. 设置MediaServer为启动工程,方法:右键MediaServer工程->Set as StartUp Project
  2. 运行结果如下图:


    Windows下Live555的编译及VS工程创建_第7张图片
    MediaServer运行截图

3.3 流媒体播放测试

  1. 将测试文件(如test.264)拷贝到MediaServer.exe同级目录。

  2. 运行MediaServer.exe。

  3. 打开VLC播放器,媒体->打开网络串流(Ctrl+N),输入rtsp,如下图所示:

    Windows下Live555的编译及VS工程创建_第8张图片
    打开网络串流

  4. 点击“播放”,运行结果如下所示:


    Windows下Live555的编译及VS工程创建_第9张图片
    播放截图

你可能感兴趣的:(Windows下Live555的编译及VS工程创建)