新RTMFP流媒体服务器 MonaServer 源码编译安装

MonaServer 源码编译安装

MonaServer 是Cumulus这个项目衍生出来的新项目,前身Cumulus在github中注明了Cumulus已经比较老,希望使用最新的RTMFP的server的话可以尝试MonaServer,跟着github中的引导,就到了MonaServer的项目目录中,看了看Readme之类的说明文档后,发现MonaServer所支持的功能还是比较多的:

点击(此处)折叠或打开

  1. 1. RTMP 常见的流媒体直播,实时性相对来说还可以
  2. 2. RTMFP 常见的p2p的流媒体直播,实时性相对来说还可以
  3. 3. RTMPE 加密RTMP数据
  4. 4. WebSocket HTML5最近比较火的基于HTTP的Socket通信
  5. 5. HTTP HTTP传输的FLV直播,就是HDL或者HLV

MonaServer的编译要求相对来说比较简单,环境需求也比较简单,依赖包:

点击(此处)折叠或打开

  1. 1. SSL库
  2. 2. LUA库

依赖环境:

点击(此处)折叠或打开

  1. GCC 4.8.x +

CentOS Linux 6.5 默认的编译器是4.4.7 编译的话会提示libstdc++支持的错误,所以需要升级GCC编译器。

我是用的源码编译的GCC,所以,可以再http:/gcc.gnu.org中找到对应的源码包,在gcc对应下载目录的里面可以找到gmp、mpfr、mpc的对应的文件,编译安装即可;

统一编译方法:

点击(此处)折叠或打开

  1. ./configure –prefix=/usr –libdir=/usr/lib64;make;make install

接下来编译gcc

点击(此处)折叠或打开

  1. mkdir build;../configure;make;make install

编译安装完GCC之后,在MonaServer目录中直接编译即可:

点击(此处)折叠或打开

  1. make;make install

编译完成之后,会在MonaServer目录下面看到MonaServer子目录,里面生成了一个MonaServer应用程序,

点击(此处)折叠或打开

  1. [root@www MonaServer]# pwd
  2. /root/MonaServer/MonaServer
  3. [root@www MonaServer]# ls
  4. logs Makefile MonaServer MonaServer.vcxproj MonaServer.vcxproj.filters sources tmp www
  5. [root@www MonaServer]#

以及www目录,

需要注意的是,如果想使用rtmp,需要先在www目录下建立一个目录,以确保可以正常推流,如果想省略这一步,可以修改代码来完成灵活的支持。

点击(此处)折叠或打开

  1. [root@www MonaServer]# mkdir www/myapp
  2. [root@www MonaServer]# ls www
  3. myapp
  4. [root@www MonaServer]#

通过使用推流工具来进行测试,可以使用OBS或者FMLE:

然后点击Connect,及可看到MonaServer输出的log:

点击(此处)折叠或打开

  1. [root@www MonaServer]# ./MonaServer
  2. Mona/Protocols.h[68] RTMFP server started on 0.0.0.0:1935 (UDP)
  3. Mona/Protocols.h[68] RTMP server started on 0.0.0.0:1935 (TCP)
  4. Mona/Protocols.h[68] HTTP server started on 0.0.0.0:80 (TCP)
  5. Mona/Protocols.h[68] RTSP server started on 0.0.0.0:554 (TCP)
  6. sources/Server.cpp[137] 1 clients

可以看到log中多出来一条sources/Server.cpp[137] 1 clients

这个时候点Start,可以看到输出的log:

点击(此处)折叠或打开

  1. sources/FlashMainStream.cpp[162] Method 'releaseStream' not found on application /myapp
  2. sources/FlashMainStream.cpp[162] Method 'FCPublish' not found on application /myapp
  3. sources/Publication.cpp[97] Publication gosun started
  4. sources/Publication.cpp[256] Write gosun publication properties
  5. sources/FlashStream.cpp[195] Message 'onFI' unknown on stream 1
  6. sources/FlashStream.cpp[195] Message 'onFI' unknown on stream 1
  7. sources/FlashStream.cpp[195] Message 'onFI' unknown on stream 1

这时说明流已经推至MonaServer了,可以通过播放器进行播放确认:

当播放器连接上来时,会看到log如下:

点击(此处)折叠或打开

  1. sources/FlashStream.cpp[195] Message 'onFI' unknown on stream 1
  2. sources/FlashStream.cpp[209] setBufferTime 1000ms on stream 0
  3. sources/Listener.cpp[211] Properties sent to one listener of gosun publicaition
  4. sources/FlashStream.cpp[209] setBufferTime 1000ms on stream 1
  5. sources/FlashStream.cpp[195] Message 'onFI' unknown on stream 1
  6. sources/FlashStream.cpp[195] Message 'onFI' unknown on stream 1
  7. sources/Server.cpp[137] 2 clients
  8. sources/FlashStream.cpp[195] Message 'onFI' unknown on stream 1
  9. sources/FlashStream.cpp[195] Message 'onFI' unknown on stream 1
  10. sources/Listener.cpp[164] H264 codec infos sent to one listener of gosun publication
  11. sources/FlashStream.cpp[195] Message 'onFI' unknown on stream 1
  12. sources/FlashStream.cpp[195] Message 'onFI' unknown on stream 1

RTMP的播放功能是支持了,那么RTMP转HTTP的功能如何,同时也可以验证:

HTTP的功能同样可以,看一下server部分的log:

点击(此处)折叠或打开

  1. sources/FlashStream.cpp[195] Message 'onFI' unknown on stream 1
  2. sources/Listener.cpp[211] Properties sent to one listener of gosun publicaition
  3. sources/Writer.cpp[57] writeMedia method not supported by this protocol for 03 type
  4. sources/FlashStream.cpp[195] Message 'onFI' unknown on stream 1
  5. sources/FlashStream.cpp[195] Message 'onFI' unknown on stream 1
  6. sources/Server.cpp[137] 2 clients
  7. sources/FlashStream.cpp[195] Message 'onFI' unknown on stream 1
  8. sources/FlashStream.cpp[195] Message 'onFI' unknown on stream 1
  9. sources/FlashStream.cpp[195] Message 'onFI' unknown on stream 1
  10. sources/Listener.cpp[164] H264 codec infos sent to one listener of gosun publication
  11. sources/FlashStream.cpp[195] Message 'onFI' unknown on stream 1
  12. sources/FlashStream.cpp[195] Message 'onFI' unknown on stream 1
  13. sources/FlashStream.cpp[195] Message 'onFI' unknown on stream 1

从此RTMP与HTTP的直播输出功能已经验证完毕,这是最基本的功能

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏文武兼修ing——机器学习与IC设计

SystemC入门笔记

SystemC为C++的一个库,因此C++的特性在SystemC中均可以使用,数据类型同理,除了C++中的数据类型外,SystemC也有一些自己的数据类型,如下...

30130
来自专栏CWIKIUS

Java 主要特性 原

在 Java 中,所有的都是对象。正式因为 Java 基于对象模型,所以 Java 更加容易进行扩展。

14940
来自专栏Python爬虫与数据挖掘

Windows下安装Scrapy方法及常见安装问题总结——Scrapy安装教程

这几天,很多朋友在群里问Scrapy安装的问题,其实问题方面都差不多,今天小编给大家整理一下Scrapy的安装教程,希望日后其他的小伙伴在安装的时候不再六神无主...

10520
来自专栏TheOneGIS空间站

LeetCode-Palindromic Substrings

Given a string, your task is to count how many palindromic substrings in this st...

12170
来自专栏TheOneGIS空间站

LeetCode-Longest Palindromic Subsequence

这是LeetCode的第516道题目:516. Longest Palindromic Subsequence。

12550
来自专栏钱塘小甲子的博客

MeanShift算法C++解析(四)

之前的MeanShift算法只是一个大致的算法,没有任何附加的功能哦。现在还是从程序本身理解算法吧,等真的理解透了理论在来扯一下整个MeanShift 的无参...

15120
来自专栏大块小屋-技术

由浅入深学习单例模式

首先想到的是,利用局部static对象特性,产生全局唯一的对象。但是如何来避免更多的对象被实例化出来呢。

11570
来自专栏腾讯技术工程官方号的专栏

大牛书单 | 春节特辑

? 导读:读书,伴随技术人的一生。技术人通过读书增长见闻、精进技术,提升人生境界。18年农历春节,我们特别邀请腾讯安全平台部总经理coolc、腾讯优图实验室主...

29380
来自专栏钱塘小甲子的博客

MeanShift算法C++解析(三)

最后是最重要的核心啦,就是MeanShift_Tracking这个函数。同样的,我们先来看看这个函数的内部变量。

13340
来自专栏javathings

为什么 Java 中的局部变量必须要初始化?

Java 中的变量分为类变量,成员变量和局部变量,分别位于 JVM 的方法区、堆内存和栈内存中。类变量和成员变量都可以在类首次加载和类初始化时,给出默认值,但是...

70610

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励