本教程将带你从零开始,了解 FMS/AMS 的基本概念、架构,并动手实践一个简单的“Hello World”级视频点播和直播应用。

目录
- 第一部分:Flash Media Server 是什么?
- 1 核心功能
-
典型应用场景
- 3 FMS vs. Web 服务器
- 第二部分:环境搭建
- 1 下载与安装
- 2 启动与管理服务器
- 3 目录结构解析
- 第三部分:核心概念
- 1 应用
- 2 实例
- 3 流
- 4 共享对象
- 5 远程过程调用
- 第四部分:实战演练
- 1 准备工作:客户端 (Flash) 和服务器端
- 2 实例一:简单的 VOD (点播) 应用
- 3 实例二:简单的 Live (直播) 应用
- 4 实例三:使用 Shared Object (共享对象) 实现简单的聊天室
- 第五部分:进阶与资源
- 1 服务器端 ActionScript (AS) 详解
- 2 安全性
- 3 监控与日志
- 第六部分:未来与替代方案
第一部分:Flash Media Server 是什么?
FMS 是一个功能强大的媒体服务器,专门为处理实时音视频流、数据同步和富媒体应用而设计,它运行在服务器端,与客户端的 Adobe Flash Player 或 AIR 应用程序进行通信。
1 核心功能
- 实时媒体流:
- 直播: 将摄像头/麦克风的实时视频或音频流推送到服务器,再分发给多个观众,低延迟,通常在 1-3 秒。
- 点播: 将预先录制好的视频或音频文件(如 .flv, .mp4, .f4v)流式传输给客户端,支持拖动、暂停、快进等操作。
- 数据同步:
- 共享对象: 允许多个客户端实时共享数据,当一个客户端修改了共享对象中的数据,所有连接到该共享对象的客户端都会立即收到更新,这是实现在线游戏、实时白板、聊天室等应用的核心。
- 远程过程调用: 客户端可以像调用本地函数一样,调用服务器端定义的函数,并可以接收返回值,这使得客户端可以请求服务器执行特定任务(如查询数据库、进行复杂计算)。
- 录制与回放: 可以将直播流实时录制到服务器上,形成新的点播文件供后续回放。
- 内容保护: 提供数字版权管理功能,可以加密媒体内容,防止非法下载和盗播。
- 负载均衡: 支持多个 FMS 服务器组成集群,以应对高并发用户访问。
2 典型应用场景
- 在线教育平台: 直播授课、课程回放、在线答疑。
- 视频网站: 高清视频点播、大型活动直播。
- 在线游戏: 实时排行榜、多人同步、虚拟物品交易。
- 企业通信: 视频会议、网络研讨会。
- 社交媒体: 实时视频分享、互动直播。
3 FMS vs. Web 服务器
| 特性 | Flash Media Server (FMS) | 传统 Web 服务器 (如 Apache, Nginx) |
|---|---|---|
| 核心协议 | RTMP, RTMPS (专用的实时协议) | HTTP, HTTPS (通用超文本传输协议) |
| 连接方式 | 持久长连接 | 短连接,请求-响应模式 |
| 数据传输 | 低延迟、双向、实时流 | 高延迟、单向、文件下载 |
| 主要用途 | 实时音视频、数据同步 | 静态/动态网页、文件下载、API |
Web 服务器擅长“分发内容”,而 FMS 擅长“实时互动”。
第二部分:环境搭建
1 下载与安装
- 下载:
- 访问 Adobe 官网,搜索 "Adobe Media Server"。
- 你可能需要登录 Adobe 账户,官方提供 30 天的免费试用版。
- 下载适用于你操作系统(Windows 或 Linux)的安装包。
- 安装:
- Windows: 运行安装程序
ams-5.0.1-windows.exe,按照向导一步步操作,安装路径建议使用默认的C:\Program Files\Adobe\Adobe Media Server 5。 - Linux: 解压下载的
.tar.gz文件到指定目录,然后运行安装脚本./install。
- Windows: 运行安装程序
2 启动与管理服务器
- 启动服务:
- Windows: 开始菜单 -> Adobe -> Adobe Media Server 5 -> Start Adobe Media Server 5。
- Linux: 在终端中进入安装目录的
server文件夹,执行./amsctl start。
- 管理控制台:
- 打开浏览器,访问
http://localhost:1111(默认端口)。 - 使用安装时设置的 管理员用户名和密码 登录。
- 在控制台里,你可以:
- 查看服务器状态(连接数、带宽、CPU/内存使用率)。
- 管理应用程序。
- 查看实时连接日志。
- 停止/重启服务。
- 打开浏览器,访问
3 目录结构解析
安装后,理解核心目录很重要,通常位于 C:\Program Files\Adobe\Adobe Media Server 5\ (Windows) 或 /opt/ams/ (Linux)。

applications/: 最重要的目录,每个 FMS 应用程序都在这里有一个对应的子文件夹,你的应用叫myVodApp,你就要在这里创建myVodApp文件夹。conf/: 服务器配置文件,最重要的文件是ams.ini,用于修改服务器端口、日志级别等。logs/: 服务器日志文件,排查问题的首要去处。server/: 服务器核心执行文件。webroot/: 存放静态文件的地方,如 HTML、CSS、JavaScript,客户端的.swf文件通常也放在这里,以便通过 HTTP 加载。
第三部分:核心概念
在写代码前,必须理解这几个核心概念。
1 应用
FMS 上的所有功能都运行在“应用程序”中,你可以把它想象成一个独立的沙盒环境,每个应用都有一个唯一的名字,通过 rtmp://server_ip/app_name 来访问。rtmp://localhost/myLiveApp。
2 实例
一个应用可以有多个“实例”,实例是应用程序内部的一个逻辑单元,用于隔离不同组的用户或数据,默认情况下,所有用户都连接到 _definst_ (default instance) 实例,完整的连接路径是 rtmp://server_ip/app_name/instance_name。rtmp://localhost/myLiveApp/_definst_。
3 流
媒体数据在 FMS 中的传输单元,有两种流:

- 发布流: 从客户端到服务器的流,用于上传直播内容或录制文件。
- 播放流: 从服务器到客户端的流,用于点播或观看直播。
流的命名通常遵循 app_name/instance_name/stream_name 的格式,myLiveApp/_definst_/my_camera_stream。
4 共享对象
一个存储在服务器上的数据容器,可以被多个客户端实时共享,就像一个在服务器端运行的“数据库”。
- 持久化共享对象: 数据会保存在服务器上,即使所有客户端断开连接,数据也不会丢失,重启应用后,数据依然存在。
- 非持久化共享对象: 数据只在所有客户端都连接时存在,一旦所有客户端断开,数据就被清空。
5 远程过程调用
允许客户端代码直接调用服务器端定义的函数,并可以传递参数和接收返回值,这使得客户端可以请求服务器执行复杂逻辑,比如连接数据库、验证用户信息
