Live555研究之一 源代码编译

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

从今天开始我们将一起学习live555源码,第一步就是学习编译live555源码。虽然网上有不少已经配置好的工程,但自己动手编译却有另外一番乐趣。

  Live555源代码包括四个基本的库,分别是UsageEnvironmentr、groupsock、liveMedia、BasicUsageEnvironment。Media Server(服务器程序)和各种测试代码。
  
本文使用vc2010编译环境。

一、获得live555源码
    1. live555官网http://www.live555.com/
    2. 从csdn下载获得http://download.csdn.net/detail/ithzhang/7654535

解压后的源码如下图所示:

包括上述四个库和mediaServer服务器程序,以及其他的测试代码。

二、创建工程

1. 打开vc2010,创建win32控制台应用程序,项目名称为BasicUsageEnvironment,指定新解决方案的位置,解决方案名称live555,如下图:

2.点击确定,在此后的下一步配置中,按下图配置:
             

3.添加新建项目,选择win32控制台项目,项目名称为UsageEnvironment。
  

4.点击确定和下一步后,按下图配置

5. 重复3的步骤,添加groupsock 、liveMedia项目。

6. 添加mediaServer工程,并按如下配置:

7. 五个工程均创建完毕,添加后的解决方案结构图如下:
                                       

三、将源文件加入工程

1. 打开源码目录,将BasicUsageEnvironment、UsageEnvironment、groupsock、mediaServer、liveMedia目录下的include目录和cpp文件拷贝到上述创建的对应的工程目录下。BasicUsageEnvironment拷贝后的效果如下图:


       2、接着就是将这些文件添加进对应项目,将每个工程下的cpp添加到源文件筛选器下,头文件则添加到头文件筛选器下。添加后工程结构图:
                                          

3.添加依赖头文件

方法一、把该项目需要的其他库的头文件拷贝到该工程的include目录下。
      方法二、在属性->C/C++->常规->附加包含目录填写需要包含的头文件路径(推荐)

[cpp] view plaincopy

  1. ..\BasicUsageEnvironment\include
  2. ..\groupsock\include
  3. ..\liveMedia\include
  4. ..\UsageEnvironment\include

BasicUsageEnvironment添加后效果如下图:

添加完毕后,即可编译生成对应lib。

4. 为MediaServer添加依赖库。
        MediaServer需要依赖上述工程生成的lib,所以需要将以上生成的lib拷贝到MediaServer工程目录下。有种方式:
       一、使用#pragma
         在MediaServer的ive555MediaServer.cpp添加如下代码:

[cpp] view plaincopy

  1. #pragma comment (lib, "Ws2_32.lib")
  2. #pragma comment (lib, "BasicUsageEnvironment.lib")
  3. #pragma comment (lib, "groupsock.lib")
  4. #pragma comment (lib, "liveMedia.lib")
  5. #pragma comment (lib, "UsageEnvironment.lib")

二、项目->属性->配置属性->连接器->输入->附加依赖项

[cpp] view plaincopy

  1. UsageEnvironment.lib;
  2. liveMedia.lib;
  3. groupsock.lib;
  4. BasicUsageEnvironment.lib;
  5. Ws2_32.lib

此后即可成功编译并生成MediaServer.exe。

运行后的效果如下图:

5. 使用VLC测试LIVE555服务器。
    此时RTSP服务器已经开始运行,等待来自客户端的请求。可以使用VLC作为客户端进行测试。
     一、准备一个录像文件, 如aa.264,放在MediaServer.exe同一目录。(没有录像文件,点此处)。

二、 打开网络串流,输入本机ip+录像文件名。如rtsp://192.168.0.106/aa.264

三、播放效果
       

时间: 2024-10-16 14:42:56

Live555研究之一 源代码编译的相关文章

Live555学习之一 源代码编译

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

3. Gradle源代码编译以及源代码分析

一. Gradle简介 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具.它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置.---来源于百度 对于自己而言,作为一个Android程序员,我自己使用就是用它来编译android程序,以前用ant,现在用gradle. 但是个人觉得在android studio gradle属性又多又乱,不知道总共有哪些属性:同时对于框架,自己也不喜欢黑盒使用它,总觉得心里没

Windows下从源代码编译Skia

在PPAPI里面画图,能够结合第三方的图形库.比方Cairo.Skia. Google Chrome.Chromium和Android都使用Skia作为画图引擎.我也来试试Skia,先过编译关. foruok原创.如需转载请关注foruok的微信订阅号"程序视界"联系foruok. CEF编译出的Skia不可单独用 Chromium使用Skia.Windows下从源代码编译CEF说明了怎么编译CEF,它会捎带着编译Chromium.里面有Skia,但它编译出来的skia_library

Win7+VS2010:mysql 源代码编译与调试

win7+vs2010源代码编译mysql 近期因为在实习,工作重点在于一些数据库的开发,为了更好的理解数据库的实现机制.眼下萌生了要研究一下mysql数据库源代码的想法.那么好吧,说干就干.首先我们须要实现对源代码的编译.这里我们选择win7+VS2010来实现,可是试了非常多次都失败了.这是我多次配置环境时遇到的问题,各种博客文章总是不太全然,或者说没有说明一些遇到的问题的解决方式,这可能跟详细的操作系统和环境有关.本文就说说我安装的情况. 1. 准备工作 (1)OS:win7 旗舰版 64

Ubuntu通过源代码编译安装Octave 4.0

本教程/笔记,意在指导在Ubuntu及其它Linux系统上怎样通过源代码安装Octave. Octave简单介绍 Octave是GNU旗下取代matlab的数学工具软件,语法与matlab高度兼容.而且支持一些独有的更清晰更符合Linux社区习惯的语法. 尽管在一些详细工具包和部分特性.效率上不如matlab.可是对于一般用户,它是matlab的一个有效的合法的免费的替代工具. 3.8版本号之前官方没有GUI界面,这无疑是它在普及方面的一个重大阻碍,让想使用GUI,必须下载第三方的工具(如qto

源代码编译MYSQL5.6 环境下的MHA+KEEPALIVED的安装和维护

前    言 摘   要 MHA 是当 master 出现故障,挑选一个 slave 作为新的 master 并构建成新的 主从架构的管理工具.从 master 出现故障到构建成新的主从架构时间是 10-30 秒.在 master 出现故障时可能会出现 slave 同步的数据不一致的现象,此工具 可以自动应用差异的中继日志到其他 slave 上保证数据的一致性. 一.Mha 优点 1.M aster crash 时可以快速的进行故障切换. 9-12 秒内可以检测到 master 故障, 7-10

Jenkins 源代码编译

最近一直想写一个关于 Jenkins 管理的 InelliJ 插件,但是尝试很多次总是在登录认证上面失败,各种办法都不起作用,而且官方的文档含糊不清,就动起了从源代码编译在开发环境中进行调试. 废话少说,下面开始说明 Jenkins 的编译过程. 环境准备 首先,JDK 环境是必须的了,而且要设置好 JAVA_HOME 环境变量,因为 Maven 会使用到,我这里使用的是最新的 Java 8 1.8.0_112. 然后需要的就是 Maven 了,我这里使用的是 3.3.9 由于要使用 Git 来

Storm-0.9.2-incubating源代码编译打包

近期遇到一些同学询问Storm-0.9.2-incubating源代码编译打包的问题,现将编译步骤说明例如以下: 1.凝视掉project各pom文件里关于maven插件(maven-gpg-plugin)的内容,目的是规避错误: 当然,该错误也能够忽略,即能够不进行上述凝视操作 2.在project根文件夹下运行maven命令: mvn clean compile package -P dist -Dmaven.test.skip=true 3.进入文件夹:storm-dist/binary,

3DSlicer源代码编译过程vs2008+windows xp [转]

一 下载QT源代码编译 1.  简述   在 Windows2000/xp/vista 下,安装 VS2008, QT 4.7.2 :并在 VS2008上建立 QT 的集成开发环境,利用 VS2008 开发环境开发,调试 QT 程序:2. 所需程序   VS2008以及VS2008Sp1                                  //  VS2008 的安装程序:   qt-everywhere-opensource-src-4.7.4.tar.gz          /