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++->常规->附加包含目录填写需要包含的头文件路径(推荐)
- ..\BasicUsageEnvironment\include
- ..\groupsock\include
- ..\liveMedia\include
- ..\UsageEnvironment\include
BasicUsageEnvironment添加后效果如下图:
添加完毕后,即可编译生成对应lib。
4. 为MediaServer添加依赖库。
MediaServer需要依赖上述工程生成的lib,所以需要将以上生成的lib拷贝到MediaServer工程目录下。有种方式:
一、使用#pragma
在MediaServer的ive555MediaServer.cpp添加如下代码:
- #pragma comment (lib, "Ws2_32.lib")
- #pragma comment (lib, "BasicUsageEnvironment.lib")
- #pragma comment (lib, "groupsock.lib")
- #pragma comment (lib, "liveMedia.lib")
- #pragma comment (lib, "UsageEnvironment.lib")
二、项目->属性->配置属性->连接器->输入->附加依赖项
- UsageEnvironment.lib;
- liveMedia.lib;
- groupsock.lib;
- BasicUsageEnvironment.lib;
- Ws2_32.lib
此后即可成功编译并生成MediaServer.exe。
运行后的效果如下图:
5. 使用VLC测试LIVE555服务器。
此时RTSP服务器已经开始运行,等待来自客户端的请求。可以使用VLC作为客户端进行测试。
一、准备一个录像文件, 如aa.264,放在MediaServer.exe同一目录。(没有录像文件,点此处)。
二、 打开网络串流,输入本机ip+录像文件名。如rtsp://192.168.0.106/aa.264
三、播放效果
Live555研究之一 源代码编译的更多相关文章
- Live555研究之中的一个 源码编译
Live555研究之中的一个 源代码编译 Live555 是一个为流媒体提供解决方式的跨平台的C++开源项目,它 ...
- Win7+VS2010:mysql 源代码编译与调试
win7+vs2010源代码编译mysql 近期因为在实习,工作重点在于一些数据库的开发,为了更好的理解数据库的实现机制.眼下萌生了要研究一下mysql数据库源代码的想法.那么好吧,说干就干.首先我们 ...
- Windows下从源代码编译Skia
在PPAPI里面画图,能够结合第三方的图形库.比方Cairo.Skia. Google Chrome.Chromium和Android都使用Skia作为画图引擎.我也来试试Skia,先过编译关. fo ...
- 源代码编译安装Python3.5.2
由于没有找到Python3.5的rpm安装包,因此进行源代码编译安装 1.下载Python3.5.2 [root@seastar ~]# cd /usr/local/src [root@seastar ...
- Android 6.0 源代码编译实践
http://www.judymax.com/archives/1087 Android 6.0 源代码编译实践 https://mirrors.tuna.tsinghua.edu.cn/help/A ...
- Nginx+Php-fpm+MySQL+Redis源代码编译安装指南
说明:本教程主要包括以下三个部分: 1. 源代码编译安装Nginx 2. 源代码编译安装php以及mysql.redis扩展模块 3. 配置虚拟主机 文中所涉及安装包程序均提供下载链接,欢迎使用 运行 ...
- 3DSlicer源代码编译过程vs2008+windows xp [转]
一 下载QT源代码编译 1. 简述 在 Windows2000/xp/vista 下,安装 VS2008, QT 4.7.2 :并在 VS2008上建立 QT 的集成开发环境,利用 VS2008 ...
- 官方发布的新版本Qt已经不支持XP了,要自己从源代码编译
官方发布的新版本Qt已经不支持XP了,要自己从源代码编译,编译选项里有个-target项,用来提供XP支持的,编译时加上-target xp就可以了 http://www.qtcn.org/bbs/r ...
- Ubuntu通过源代码编译安装Octave 4.0
本教程/笔记,意在指导在Ubuntu及其它Linux系统上怎样通过源代码安装Octave. Octave简单介绍 Octave是GNU旗下取代matlab的数学工具软件,语法与matlab高度兼容.而 ...
随机推荐
- VScode小白简介
前言 现在使用Vscode编码的人越来越多,凭借着免费,开源,轻量,跨平台的特点收货了一大批忠实粉丝 最近因项目需要开始使用Vscode,但不知为何,感觉有点力不从心,不知道该怎么用 首先想到去官 ...
- Ubuntu操作基本快捷键
* 打开主菜单 = Alt + F1* 运行 = Alt + F2* 显示桌面 = Ctrl + Alt + d* 最小化当前窗口 = Alt + F9* 最大化当前窗口 = Alt + F10* 关 ...
- unity渲染优化
https://blog.csdn.net/yudianxia/article/details/79339103 https://blog.csdn.net/e295166319/article/de ...
- JAVA高级编程(数据源datasource)
数据源:通过jdbc连接数据库,多建立几条连接放在数据源里面.可以设置数据源的最大连接数,同时活跃的连接数,最少空闲的连接数,能够同时接收处理的连接数等等. dbcp数据源 需要的jar包: comm ...
- C#调用Win32 的API函数--User32.dll ----转载
Win32的API函数是微软自己的东西,可以直接在C#中直接调用,在做WinForm时还是很有帮助的.有时候我们之直接调用Win32 的API,可以很高效的实现想要的效果. using System; ...
- flutter 启动时一直Resolving dependencies...
原因:国内网无法从Google获取资源,貌似搭了梯子也没用 修改flutter sdk Path/packages/flutter_tools/gradle/flutter.gradle这个文件,使用 ...
- ASM ClassReader failed to parse class file
ASM ClassReader failed to parse class file - probably due to a new Java class file version that isn' ...
- ch8 CSS 3列(等高文本列)
css 3可以创建等高文本列,通过column-count.column-width.column-gap属性实现.假设标记如下: <h1>Socrates</h1> < ...
- Vim学习1移动光标
vim adventure上面做了大量练习,是个好软件只是需要收费 HJKLWBE 首先HJKL分别是移动上下左右的 H:光标左移 J:下移 K:上移 L:右移 W:跳转到下一个单词的第一个字,注意是 ...
- 「NOIP2013」华容道
传送门 Luogu 解题思路 预支一点东西: 这题其实有着更为思维的图模型,还十分考验码力,不简单啊 这居然是联赛题 讲正解: 显然我们对于一种合法方案,空格子肯定是一直围绕着特定棋子反复横跳的. 所 ...