美文网首页技术干货程序员
Windows下Live555的编译及VS工程创建

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

作者: 小猪啊呜 | 来源:发表于2017-04-03 17:16 被阅读0次

    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。
    源码目录结构如下:

    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为例,复制后目录结构如下:


      BasicUsageEnvironment工程文件目录
    3. 添加文件到工程,方法:add->Existing Item,快捷键:Shift+Alt+A
    4. 根据.mak文件中的INCLUDES属性修改每个工程的头文件引用,方法:Project->Properties->Configuration Properties->VC++ Directories->Include Directories,属性界面如下图所示:
      头文件包含目录
    # 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,界面如下:
      输出文件类型
    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,界面如下:
      lib静态依赖库目录
    # Debug
    $(SolutionDir)\Output\LibDebug;
    %(AdditionalLibraryDirectories)
    # Release
    $(SolutionDir)\Output\Lib;
    %(AdditionalLibraryDirectories)
    
    1. 添加lib静态依赖库,方法:Project->Properties->Configuration Properties->Linker->Input->Additional Dependencies,界面如下:
      lib静态依赖库文件
    UsageEnvironment.lib
    liveMedia.lib
    groupsock.lib
    BasicUsageEnvironment.lib
    Ws2_32.lib
    
    1. 设置MediaServer为启动工程,方法:右键MediaServer工程->Set as StartUp Project
    2. 运行结果如下图:


      MediaServer运行截图

    3.3 流媒体播放测试

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

    2. 运行MediaServer.exe。

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

      打开网络串流
    4. 点击“播放”,运行结果如下所示:


      播放截图

    相关文章

      网友评论

        本文标题:Windows下Live555的编译及VS工程创建

        本文链接:https://www.haomeiwen.com/subject/vhkoottx.html