首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

主流流媒体服务器介绍

FMS是一个完全基于软件环境的多媒体实时通讯环境,代表了当前实时通讯领域内的发展的方向,并且,其自身也融合了大量的新特色,用于创建下一代通讯应用程序 简而言之,Adobe的FMS是一个多媒体应用平台,在这个平台上,可以实现多媒体流的点播、直播、交互等多种应用,由于Adobe公司在网络多媒体应用上的雄厚实力,以及Adobe Flash Player在网络上应用的广泛性,因此,FMS成为诸多多媒体应用的服务器端主要应用平台。如Youtube、tudou等。FMS是一个应用平台,同时更是一个二次开发平台,在这个平台上,可以实现多种网络多媒体内容的传播和交互应用。支持协议:RTMP、RTMPT、RTMPE、RTMPS、RTMFP都是FMS支持的协议。使用FMS可以捕获(甚至录制)用户客户端的视频和音频流。信息通过FMS使用Real-TimeMessaging Protocol (RTMP)协议被传递到客户端(用户计算机上的Flash Player)。当一个Flash影片应用程序要使用 FMS时,Flash Player就连接到服务器,这样就在客户端Flash Player和FMS之间提供了往复的源源不断的信息流,称为network stream(网络流)。其他的用户也可以同时连接到相同的FMS接收信息、更新数据以及音频和视频,这些都是“网络流”。FMS的功能平台由两部分组成:服务器提供通讯方式;Flash影片应用程序(SWF文件)提供终端用户界面。

02
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Go语言实现的流媒体服务器开发框架

    市面上的流媒体服务器不可谓不多,从本人的第一份工作起,就一直接触和研究了形形色色的流媒体服务器,从最早的FCS(全称Flash Communication Server),后来改名为FMS(全称Flash Media Server),到Red5(java语言开发),到CrtmpServer(C++开发),让我对流媒体服务器的基本原理有了深刻的认识。当时本人痴迷C#,于是乎在业余时间对crtmpServer的代码进行移植,用C#仿照着写了一遍取名为csharprtmp,并且适当的增强了一些功能,于是对rtmp协议了如指掌。后来Adobe推出了RTMFP协议,是一种p2p协议,十分节省带宽。我就又开始研究一款名为OpenRTMFP的开源项目,后来该项目改名为MonaServer。我在起基础上进行了扩展,实现了一些例如录制flv,shareObject等原本FMS有的功能。后开发出了HTML5直播技术(现在命名为Jessibuca,尚未开源),采用的传输协议就是WebSocket传输裸的视频流的方式,属于私有协议。而Server当时就使用的MonaServer。但当时遇到一个问题,C++的内存泄漏问题,这个一直没有很好的解决。遂决定放弃使用MonaServer转而使用srs,而srs要用一个很简单的go写的小程序将http-flv转换成WebSocket的Flv来适配我的Jessibuca,感觉最好能直接修改srs来实现这个功能。对srs的源码研究了一小段时间后放弃了,因为C++代码过于难写,容易出现bug。后来转而使用golang写的gortmp作为server,同样对其进行了扩展,而且进展十分顺利,golang的开发效率令人惊叹,而且其协程的特性很完美的处理了流媒体服务器的并发的场景。所以使用golang写的流媒体服务器项目很多,github上随便一搜就有很多,比如livego、joy4等。期间还接触到一位使用Node.js实现的流媒体服务器Node Media Server,我也和作者交流了许多,收益良多。

    02

    C++实现RTMP协议发送H.264编码及AAC编码的直播软件开发音视频

    RTMP(Real Time Messaging Protocol)是专门用来传输音视频数据的流媒体协议,最初由Macromedia 公司创建,后来归Adobe公司所有,是一种私有协议,主要用来联系Flash Player和RtmpServer,如FMS, Red5, crtmpserver等。RTMP协议可用于实现直播、点播应用,通过FMLE(Flash Media Live Encoder)推送音视频数据至RtmpServer,可实现摄像头实时直播。不过,毕竟FMLE应用范围有限,想要把它嵌入到自己的程序中,还是要自己来实现RTMP协议的推送。本人实现了一个RTMPLiveEncoder,通过采集摄像头视频和麦克风音频,并进行H.264和AAC编码,然后发送到FMS和crtmpserver上,实现实时直播,可以通过flash player正常观看,目前效果良好,延迟时间在2秒左右。本文就介绍一下RTMPLiveEncoder的主要思路和关键点,以期对需要这方面技术的朋友有所帮助。

    02

    C++实现RTMP协议发送H.264编码及AAC编码的音视频,摄像头直播

    RTMP(Real Time Messaging Protocol)是专门用来传输音视频数据的流媒体协议,最初由Macromedia 公司创建,后来归Adobe公司所有,是一种私有协议,主要用来联系Flash Player和RtmpServer,如FMS, Red5, crtmpserver等。RTMP协议可用于实现直播、点播应用,通过FMLE(Flash Media Live Encoder)推送音视频数据至RtmpServer,可实现摄像头实时直播。不过,毕竟FMLE应用范围有限,想要把它嵌入到自己的程序中,还是要自己来实现RTMP协议的推送。本人实现了一个RTMPLiveEncoder,通过采集摄像头视频和麦克风音频,并进行H.264和AAC编码,然后发送到FMS和crtmpserver上,实现实时直播,可以通过flash player正常观看,目前效果良好,延迟时间在2秒左右。本文就介绍一下RTMPLiveEncoder的主要思路和关键点,以期对需要这方面技术的朋友有所帮助。

    05

    crtmpserver系列(二):搭建简易流媒体直播系统

    我们在第一章的时候已经简要说明了crtmpserver,crtmpserver是一个由C++语言编写的开源的RTMP流媒体服务器,与其对应的商业产品自然是Adobe公司的FMS。与FMS相比,从功能上来说crtmpserver只能称为FMS的简化版本,其功能并没有FMS那么完善甚至是远远没有达到。其与flash player的兼容性自然也比不上官方的FMS了。但是crtmpserver提供了最常见的RTMP实现。作为开源的高性能RTMP流媒体服务器,不仅可以用在x86平台的linux服务器,windows服务器,还可以被用在arm等嵌入式平台上。crtmpserver的代码结构良好,类的继承体系清楚,代码效率高。是学习RTMP协议和服务器端编程的好例子。

    00
    领券