VS2013编译Live555

Live555 Media Server是一个RTSP服务端程序,它支持Stream多种媒体格式文件,具体如下:

  • MPEG Transport Stream file(.ts)
  • Matroska file(.mkv)
  • WebM file(.webm)
  • Ogg file(.ogg, .ogv, .opus)
  • MPEG-1 or 2 Program Stream file(.mpg)
  • MPEG-4 Video Elementary Stream file(.m4e)
  • H.264 Video Elementary Stream file(.264)
  • H.265 Video Elementary Stream file(.265)
  • VOB video+audio file(.vob)
  • DV video file(.dv)
  • MPEG-1 or 2 (including layer III) audio file(.mp3)
  • WAV(PCM) audio file(.wav)
  • AMR audio file(.amr)
  • AC-3 audio file(.ac3)
  • AAC(ADTS format) audio file(.aac)

所串出的流支持通过标准RTSP/RTP媒体客户端进行接收或播放,如:

Notes:

  • 服务端可并行传输同个流
  • 默认情况下,服务端通过RTP/UDP packets传输流,但如果发起客户端使用RTSP,则服务端可通过TCP传输RTP/RTCP packets进行串流(这在需要穿透防火墙时尤其有用)
  • 部分非标准RTSP客户端如Amino,会请求原始UDP流而不是标准RTP流。尽管如此,服务端仍然会进行匹配,从而提供所需串流服务。

获取 Live555 Media Server

已编译可执行文件

现已对如下平台进行预编译支持:

源码编译

src
doc

这里我们不使用官方文档中说明进行Windows平台编译,一来是实际操作过程中容易出错,二来VS编译便于后面的源码分析及调试。

1. 下载源码

打开src链接中对应源码,下载下图中任一文件:

逐层解压(推荐使用开源软件7-Zip)后获得如下文件夹:

2. 源码概述

进入“live”文件夹,可看到目录结构如下,由于使用VS进行编译,其他文件(config*)无关联,所以这里只关注几个文件夹:

结合官方文档说明,可对各文件夹总结如下:

  • groupsock
    静态库,封装了network interfaces和sockets。举例而言,Groupsock类中封装了一个收发组播数据包的socket。

  • liveMedia
    静态库,定义了一系列类簇,根类为Medium,这些类支持了多种媒体类型和编解码器。

  • WindowsAudioInputDevice
    静态库,实现了liveMedia中的AudioInputDevice虚基类,可为Windows程序提供从输入设备中读取PCM audio samples的功能。

  • UsageEnvironment
    静态库,内部主要有如下几个虚基类

    • TaskScheduler
      为DelayedTask、socket后台操作处理、事件event提供调度支持
    • HashTable
      定义通用hash表的接口,供其他代码使用
    • UsageEnvironment
      集成TaskScheduler、groupsock、liveMedia等模块功能,添加Result、Error消息机制,从而提供使用环境。
  • BasicUsageEnvironment
    静态库,由于UsageEnvironment中仅给出虚基类定义,为了能够真正地运行,所以从UsageEnvironment继承并实现了BasicUsageEnvironment类。它用于实现易用的命令行程序,其中,Read events和delayed operations通过select()循环进行支持。

  • mediaServer
    可执行文件,通过逻辑集成上述库所提供的的功能,提供串流服务。


3. 编译过程

经过前面的介绍,相信对live555有了大致的了解,下面就逐步进行真正的live555MediaServer编译。

3.1 建立Projects

首先建立控制台空项目live555MediaServer(名称可自定):

依次建立库空项目 groupsock, liveMedia, UsageEnvironment, BasicEnvironment, WindowsAudioInputDevice:

建立完成后,应该共有如下图所示的6个项目:

3.2 补全项目信息

静态库中以UsageEnvironment为例,其余4个可参照即可。

UsageEnvironment

首先将源码live文件夹中同名子文件夹内容完整拷贝至VS中UsageEnvironment项目对应文件夹中。

然后再VS项目上右键添加文件(*.cpp)至项目中:

此时尝试直接编译,发现如下错误信息:


从错误信息中可以看到,原因是无法查找到头文件所在位置,因此需要添加对应文件所在路径至“包含目录”内。


其他库可能依赖的头文件也不同,一种偷懒的方式是将如下目录全部添加至每个项目的“包含目录”中。

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

如提示部分安全性error,则可在“预处理器定义”中定义对应宏。

_CRT_SECURE_NO_WARNINGS    
_WINSOCK_DEPRECATED_NO_WARNINGS

再次编译后通过。

live555MediaServer

同上述方式,添加文件,配置目录。

由于是可执行文件,且使用到其他库函数,因此需额外配置库文件信息。

至此,所有Debug版本编译完成。

4. 测试编译结果

拷贝bipbop-gear1-all.ts至live555MediaServer.exe同一目录下,双击运行live555MediaServer文件。

以VLC客户端为例,输入MediaServer运行后命令行输出中的rstp地址前缀。

正常播放结果如下:

5.后记

粗通编译原理后编译思路上并无太大困难,需要注意的是应结合官方文档进行预先理解。
后续会陆续更新源码解析部分,所有文章中,如有疑虑或发现错误,欢迎指出。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容