• 【流媒體】live555—VS2010/VS2013 下live555编译、使用及测试



    【流媒體】live555—VS2010 /VS2013 下live555编译、使用及测试

    SkySeraph Apr 11st 2012

    Email:skyseraph00@163.com 



    更多精彩请直接访问SkySeraph个人站点www.skyseraph.com 

    流媒体系列: http://skyseraph.com/2012/04/11/Media/流媒体专题/ 

    Ⅰ live555简介

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

      该项目的源代码包括四个基本的库,各种测试代码以及IVE555 Media Server。四个基本的库分别是UsageEnvironment&TaskScheduler,groupsock,liveMedia,BasicUsageEnvironment。


    Ⅱ 下载

    live555源码http://www.live555.com/(官网)

     


    Ⅲ 编译步骤

    方法一(Win7下命令方式)

    综述:利用genWindowsMakefiles.cmd生成VS可用的makefile

    修改win32config。打开live\win32config文件,修改如下

    TOOLS32 = c:\Program Files\DevStudio\Vc

    TOOLS32 =  E:\Program   Files\Microsoft Visual Studio 10.0\VC

    将TOOLS32修改为你的VS2010路径

    LINK_OPTS_0   =        $(linkdebug) msvcirt.lib

    LINK_OPTS_0   =   $(linkdebug)  msvcrt.lib

    编译器索要的LINK运行库不同,原本以为可以改为msvcrt100.lib,但没找着

    新增Makefile设定。打开live\groupsock\Makefile.head,修改如下

    INCLUDES =   -Iinclude -I../UsageEnvironment/include

    INCLUDES =   -Iinclude -I../UsageEnvironment/include   -DNO_STRSTREAM

    建立makefile

      方法:运行live\genWindowsMakefiles.cmd,生成VS能够编译的*.mak文件

    建立build.bat命令

      新建live\complie.bat,并添加内容如下:

    call "E:\Program Files\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

    开始编译:(命令行下)执行complie.bat

    编译结果

    6-1  在对应的文件下,如下图

    生成与cpp文件对应的obj文件(Object File中间代码文件,源文件complie生成,在linux下为o文件

    生成lib库: libBasicUsageEnvironment.lib、libgroupsock.lib、libUsageEnvironment.lib、libliveMedia.lib

    6-2 在对应的文件下,如下图:生成对应的obj文件和exe文件

    :若要用VS2010对代码进行调试跟踪,那么编译时需要做相应修改,修改方法如下:

      方法一:修改*.mak文件下的NODEBUG 。不带DEBUG,NODEBUG=1(默认);带DEBUG,DEBUG=1

      方法二:在win32config加入一行 "NODEBUG=1" (不推荐)

     

    方法二(Win7+VS2010方式)

      如果需要自己调试修改源码,采用编译器的方式会更好些,这种方式也更利于源码分析,步骤如下:

    综述:分别为每个库单独编译生成lib

     

    新建解决方案和lib工程,分别如下:

    E:\My Document\Visual Studio 2010\Projects\myLive555\BasicUsageEnvironment
    E:\My Document\Visual Studio 2010\Projects\myLive555\liveMedia
    E:\My Document\Visual Studio 2010\Projects\myLive555\groupsock
    E:\My Document\Visual Studio 2010\Projects\myLive555\BasicUsageEnvironment

      完整解决方案的结构如下图

    添加头文件

      方法1:采用全局包含方式(绝对路径)。需要添加的include文件包括

    E:\My Document\Visual Studio 2010\Projects\myLive555\BasicUsageEnvironment\include
    E:\My Document\Visual Studio 2010\Projects\myLive555\liveMedia\include
    E:\My Document\Visual Studio 2010\Projects\myLive555\groupsock\include
    E:\My Document\Visual Studio 2010\Projects\myLive555\BasicUsageEnvironment\include

      方法2:采用局部(当前工程)包含方式(相对路径)。推荐

      描述工程->属性->配置属性->C/C++->常规->附加包含目录

    ..\BasicUsageEnvironment\include
    ..\groupsock\include
    ..\liveMedia\include
    ..\UsageEnvironment\include

     

    3  添加文件

        在上述lib工程中添加对应的所有的cpp文件。

    4  设置工程的输出目录

      路径:E:\My Document\Visual Studio 2010\Projects\myLive555\lib

      方法:项目-》属性-》常规-》输出目录

    5  编译解决方案

      结果:在lib目录下生成 BasicUsageEnvironment.lib、groupsock.lib、UsageEnvironment.lib、liveMedia.lib

     

    下载编译好的live555(lib和头文件)

      方式一,环境为Win7,包含编译好的live555、提取的4libmyLive555Header和截图下载猛击

      方式二环境win7+VS2010,包含整个工程,下载猛击

     


    Ⅳ 使用实例

    1   添加库

    ①步骤一:

      方法1. 将编译生成的四个lib库库拷贝到“*:\Program Files\Microsoft Visual Studio 10.0\VC\lib”下面

      方法2. 将编译生成的四个lib库库拷贝到当前工程的cpp文件下

      方法3. 将编译生成的四个lib库作为全局库的形式添进工程

    ②步骤二

      方法1. [菜单]“项目->属性->配置属性->连接器->输入->附加依赖项”里填写

          “libUsageEnvironment.lib;libliveMedia.lib;libgroupsock.lib;libBasicUsageEnvironment.lib;Ws2_32.lib

      再次温馨提醒VS2010中,多个lib之间需要用分号或者回车隔开,用空格行不通,切记!信不信由你了,我在这个地方又折腾了一会了,青春不在啊~

      方法2.  pragma 方式  

    #pragma comment (lib, "Ws2_32.lib")  
    #pragma comment (lib, "libBasicUsageEnvironment.lib")
    #pragma comment (lib, "libgroupsock.lib")
    #pragma comment (lib, "libliveMedia.lib")
    #pragma comment (lib, "libUsageEnvironment.lib")


    添加头文件

    说明:如果采用方式二编译的,那么此步骤可以省去

    ①步骤一:将所有的.h文件放到一起,myLive555Header里面,再添加include

    ②步骤二

      方法1. “项目->属性->配置属性->C/C++->常规->附加包含目录”

      方法2. “工具->选项->项目和解决方案->C++ 目录”,选择对应平台,然后添加所需“包括文件”目录(此法VS2010不通)

     

    3  测试代码

      直接用testProgs里面的例子,我用的是testOnDemandRTSPServer.cpp,测试成功,如下图

     

     


    Ⅴ 测试live555服务器

    方式一:(利用ffplay.exe播放)

    1 把媒体文件放到和live555MediaServer.exe同一目录

    2 运行live555MediaServer.exe,弹出的dos框里面有地址,如下图

    3 客户端,dos下进入到ffplay所在文件夹下,然后输入如下命令

        ffplay.exe rtsp://10.120.2.18/<媒体文件名>

      弹出视频播放画面,如下图

     

    方式二:(直接vlc中播放网络流)

    1 把媒体文件放到和live555MediaServer.exe同一目录

    2 打开vlc plaer,打开网络串流,输入rtsp,如下图

    3 点播放,开始播放,如下图

     


    2014/5/20 新增 VS2013下编译的最新live555(live555.2014.5.14版)完整工程

    下载地址:http://download.csdn.net/detail/zgzhaobo/7376487


    《本篇完》 謝謝閱讀!


    作者:skyseraph
    出处:http://www.cnblogs.com/skyseraph/
    更多精彩请直接访问SkySeraph个人站点:http://skyseraph.com//
    Email/GTalk: zgzhaobo@gmail.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    意见汇总
    软件工程团队项目第一次Sprint评审
    《Gogoing》Alpha版使用说明
    5月21日冲刺结束
    5月17日--5月20日站立会议
    5月12日--5月16站立会议
    山药蛋团队每日站立会议
    山药蛋团队成员一周冲刺详细计划表
    站立会议 第十天
    站立会议 第九天
  • 原文地址:https://www.cnblogs.com/skyseraph/p/2442840.html
Copyright © 2020-2023  润新知