
我们一开始的想法很简单把行内每个月必开的经营分析会从线下搬到线上。真正动手之后才发现金融行业里的会议直播根本不是一个直播软件能搞定的。后来我们基于EasyDSS做了一套智能会议管理系统把所有会议相关能力收敛到一体化视频平台上才算是把“开会”这件事捋顺了。这篇文章就把我们在选型、架构、部署、压测过程中的经验和踩坑记录整理出来给正在做类似事情的同行一个参考。先交代一下业务背景。我们服务的是一家业务网点多、人员分散的金融机构除了总部的例会还有大量分支机构的晨会、合规培训、新品发布会等多方协作场景。这些场景的共同点是既要有清晰稳定的低延迟直播又需要事后回看和留存还要能管住观看权限、防止内容外泄。传统的MCU视频会议系统在这些场合里很笨重而单纯用商业直播SaaS又过不了内部安全审查于是我们选择用开源流媒体方案二次开发EasyDSS就是整个架构中最关键的一环。这篇文章不是产品说明书。我会从痛点、架构、实施、安全和故障复盘五个方面把整套系统的设计逻辑和实战过程讲透尤其是EasyDSS在会议管理中真正起作用的位置以及那些不是文档上会明确写出来的坑。1. 金融会议场景里传统MCU和直播工具解决不了什么1.1 先说说开会的人到底需要什么金融行业的分支机构会议真实诉求比表面看到的复杂很多。管理层要的是一场能稳定收看、不中断的全行直播组织部门要的是会前预约、会中管控、会后自动出回放合规部门要的是全程留痕、谁看了、何时看、看了多久都能查一线员工要的是手机或者网页打开就能看不需要装一堆专用插件。这些需求如果拆开看每一块都能找到现成工具直播平台能解决观看云会议能解决双向交互网盘能解决回放存储。但合在一起就出问题了。行内常用的视频会议MCU设备价格高不说扩容还要买license商业直播SaaS的数据存储在外面过不了信息安全评审。更关键的是会议不是只有一个十五分钟的报告经常是一整天的培训上午有四场并行下午有三场回放还要根据不同的参会人设置不同的观看范围这些都是传统工具直接忽略的。1.2 EasyDSS在方案里真正扮演的角色EasyDSS是一个一体化视频平台核心能力是把各种来源的视频流接入进来做协议转换、转码、录制、分发。放在这次项目里它的定位非常清晰先把会议终端的视频信号汇进来再做统一输出把直播和点播能力标准化让上层的智能会议管理系统通过API进行调度。这样说可能还是有点抽象。举一个最简单的例子总部会议室有一台录播主机它输出一路RTSP流。传统做法是这路流只能给硬件终端看或者一个人通过某个播放器看。通过EasyDSS把这路RTSP流拉上来转成HTTP-FLV和HLS会议室里的人可以用电视端大屏看电脑可以打开浏览器看手机扫码也能看所有人看到的是同一套画面延迟差别不超过两秒。这就解决了接入端碎片化的问题。1.3 “一体化”不能只是把功能堆在一起我们在做系统规划的时候内部讨论了很久什么才叫“一体化视频平台”。后来定了三条硬标准。第一所有会议相关的能力必须通过统一接口串联起来。会前预约时系统自动在EasyDSS创建对应频道并配置好录制计划会中开会时用户不需要碰任何流媒体后台会后回放时系统直接从归档存储调取录像关联到会议记录上。第二直播、回放、转码、权限校验必须在同一套底层完成而不是靠多个系统拼凑。只要涉及跨系统跳转就会出问题。用户不可能先打开视频系统看直播再跳到另一个系统看回放。第三所有操作都有审计日志。谁创建了会议谁修改了播放地址谁拉取了回放链接都要有记录。金融行业对数据安全的内控要求很高如果没有审计平台做了再多也白搭。这三条标准决定了我们后来整个架构的方向也是EasyDSS集成工作里最重要的一条原则让视频平台做视频的事让上层系统做业务的事中间用API把两头绑定好。2. 把EasyDSS放入会议系统整体架构与关键联动设计2.1 核心组件与数据流转整套系统从下往上看可以分为四层。层级组件职责接入层录播主机、会议终端、摄像头、PC推流软件输出RTSP/RTMP视频源流媒体层EasyDSS集群拉流、转码、录制、分发、鉴权回调业务层智能会议管理后台预约、审批、频道管理、观看码生成、审计终端层电脑网页、手机App、小程序、大屏电视观看直播、点播回放视频流的走向是单向的会议终端把画面推给EasyDSSEasyDSS统一拉流后做转码然后根据前端请求协议分发出去。业务数据和流媒体数据是分开的。会议管理平台的数据库里记录的是“会议名称、时间、参会范围、关联频道ID、录像路径”不直接处理视频流真正的视频内容留在EasyDSS和存储服务器上。这样分工业务维护和视频运维互不干扰出了问题也容易定位是业务端还是流媒体端。2.2 为什么选用RTMP/HTTP-FLV/HLS混合分发金融行业内部网络环境很杂。同一场会议总部领导在内网用大屏观看支行同事可能通过4G手机看还有一些退休员工在家通过外网访问。同一个视频流想让这么多终端都流畅观看只选一个协议是不现实的。我们最终确定的分发策略是推流端统一使用RTMP。会议终端硬件对RTMP支持普遍很好推流稳定关键帧间隔可控。内网实时观看使用HTTP-FLV。延迟可以控制在1到3秒Web端播放不用装插件兼容性好。外网/手机端实时观看优先使用HLS。虽然会有5到10秒延迟但在弱网环境下更不容易卡顿手机浏览器和微信内嵌页面都能直接播放。回看点播统一使用HLS加MP4文件下载。HLS适合在线播放MP4供给需要下载存档的同事使用。这套混合分发的好处是在延迟和稳定性之间找到一个平衡点。如果全场都走HLS内网汇报时的连麦互动体验就太差如果全场都走HTTP-FLV外网弱网环境又会不断缓冲。EasyDSS比较省心的地方在于它支持把一路输入流同时转成FLV和HLS不需要我们为每个协议准备一套独立源站。2.3 会议管理端与流媒体服务的联动设计会议管理平台和EasyDSS之间的联动不是简单的页面跳转而是通过RESTful API完成的自动化编排。拿一场标准的“全行合规培训直播”举例。培训管理员在系统后台创建会议填写时间、主讲人、参会部门并勾选“需要录制回放”。后端在会议开始前10分钟自动调用EasyDSS的接口创建一个频道设定好视频源地址、转码档位和录制开关。同时生成一个带权限的播放地址和二维码。整个过程中管理员完全不需要进入流媒体后台操作。这里贴一段当时我们调用EasyDSS创建频道的核心请求体方便大家理解POST /api/v1/channel/create { name: 20250710-complaince-training-001, source_url: rtmp://192.168.10.20:1935/live/meeting_room_a, source_type: rtmp, transcode: { video_codec: h264, audio_codec: aac, preset: medium }, record: { enabled: true, format: mp4, storage_path: /data/easydss/record/20250710/complaince/ }, auth_callback: https://meeting.example.com/api/easydss/auth }会议开始后EasyDSS会按计划拉流、转码、录制。如果会议源意外断掉EasyDSS通过回调通知业务平台业务平台在首页弹出告警运维人员能第一时间处理。会议结束后系统调用关闭频道的接口把录制文件从临时目录转移到归档存储并在会议记录里自动生成回看链接回看的有效期也可以在后台灵活配置。这套联动逻辑看着不复杂但非常关键。它让流媒体真正变成了会议系统里的一个服务组件而不是一个独立的系统。会议管理平台由此具备了“全生命周期管理”的能力从会议预约到会后归档所有数据都在一条链路上走完。3. 落地配置中踩过的协议、转码与录像细节3.1 频道创建与拉流参数的最佳实践EasyDSS创建频道时有几个参数特别容易踩坑我们一开始就吃过亏。第一个是拉流超时和重连策略。会议源设备如果出现几秒钟的网络抖动EasyDSS如果立刻判定断流就会停止拉流会议直播就会黑屏。后来我们把超时阈值调到了10秒重连间隔设成3秒一次连续重试5次后如果还失败再回调业务侧告警。这个配置在面对硬件设备偶尔出现的瞬时抖动时非常好用不会因为小抖动直接中断整场直播。第二个是GOP关键帧间隔问题。推流端设备如果GOP设置过大比如8秒甚至10秒一个关键帧观看端在进入直播时就会长时间黑屏等待下一个关键帧到达后才能出画面。我们后来要求所有会议终端把GOP强制设置为2秒重要会议全部配置为1秒。虽然码率略微增加了但进入直播的速度和切换画面的流畅度明显提升。第三个是音频编码格式。会议室设备的音频输出五花八门但推给EasyDSS时尽量统一为AAC。最开始有一路设备默认输出G.711音频转成HLS后手机端就是无声排查了很久才确认是音频编码兼容性问题。统一音频编码为AAC、采样率保持44100后所有终端的播放体验都正常了。3.2 转码档位的取舍与服务器资源估算金融行业的会议室画面大多以PPT、Excel、人脸为主运动幅度不大这和体育直播完全不一样。我们最初用的是三路转码1080P、720P、480P。后来发现1080P档位使用率很低反而占用了大量CPU资源。经过统计大多数观看终端屏幕分辨率在1080P左右但真正需要拉满码率的场景非常少。最终的档位策略是档位分辨率视频码率用途主码流1920x10803-4Mbps大屏、会议室硬件副码流11280x7201.5-2MbpsWeb端、手机端默认副码流2720x4800.8-1Mbps弱网、移动网络兜底这个配置在画质和资源消耗之间比较均衡。按我们20路会议同时进行的峰值场景估算单路1080P转码大约占用2个CPU核心两路副码流转码再加2个核心20路并发就需要80核心左右。好在不是每个频道都需要实时转码如果源端本身就是720P输出就没有必要硬撑三档。EasyDSS支持直接在播放地址中指定不同转码档位资源不足时宁可牺牲副码流也要保证主码流稳定。带宽方面也要提前算清楚。20路会议同时直播每路输出平均码率约2Mbps20路就是40Mbps的带宽如果每路再有50个人同时观看观看侧也要按码率叠加。我们当时给流媒体所在的网段预留了万兆网络核心交换机做了限速策略避免视频流量把业务系统带宽挤垮。3.3 会议录像与回看目录的设计录像功能是金融会议里比直播还要重要的能力。特别是合规培训和股东大会回看存档是硬性要求。EasyDSS支持录制MP4存储路径、分段时长、文件命名都可以自定义。我们当时按“机构/日期/会议ID/频道ID”的目录结构落地当天所有录像都会自动归到对应会议的目录下第二天凌晨统一转存到NAS并建立索引。文件命名我们强烈建议包含会议ID和开始时间比如20250710_complaince_001_093000.mp4。如果只按默认时间戳命名后期海量回放文件检索会让你无比痛苦。尤其是金融行业一次培训可能要保存很多年没有清晰命名归档和调阅会变得非常低效。还有一个细节是录像分段。EasyDSS可以按设置的时间自动切割文件比如每2小时一段。这个能力在超长会议中非常必要一方面避免单个文件过大导致播放器加载缓慢另一方面即使会议中途出现故障已经生成的录像文件也能保住。我们经历过一次整场会议录到3小时结果源设备死机如果全程只写一个MP4文件损坏概率会非常高分段录制后至少前边的段落是好的。4. 金融级稳定与安全权限、加密、容灾的落地清单4.1 内外网隔离与会话鉴权金融行业对系统访问边界特别敏感。我们在部署时将EasyDSS放在了内网视频专网区域对外完全不直接暴露端口。所有外部播放请求先到达统一的反向代理层由代理层校验token通过后再把请求转发给EasyDSS。播放鉴权我们采用的是“一次性token 有效期”机制。会议管理后台根据会议ID生成一个带签名的播放地址地址中携带token、有效时间和观看人信息哈希。EasyDSS通过鉴权回调地址请求业务后台做二次校验用户点击播放链接请求到达代理层代理层解析出token调用会议管理后台的校验接口后台校验token签名、有效期、会议是否在允许观看名单内校验通过后代理层才放行请求并在回应头里加入当前用户的临时会话信息。这样做的好处是即使有人抓到播放地址没有合法token也无法直接观看并且token过了会议时间就会失效。权限收回也很方便在后台把参会人状态改为“不可观看”后下一次播放请求就会直接拒绝无需重启服务。4.2 视频流加密与防录屏策略视频流在公网上传输时我们统一要求走HTTPS/WSS协议避免视频内容被中间人抓包解析。播放器与代理层之间建立的是TLS加密链路代理层再以内部HTTP协议与EasyDSS通信。这样既能保证链路安全又不会让EasyDSS本身承担过多的TLS加解密压力性能损失可控。防内部泄露不能只靠加密。我们对重要的会议开启了画面水印水印内容包含观看人的工号、姓名和当前日期。水印通过转码模块实时叠加不同人看到的画面水印位置和内容是一样的但足够让事后追溯视频泄露源头。最开始我们担心转码叠加水印会影响实时性实测下来对于720P和1080P档位单路CPU增加不到10%属于完全可接受的范围。另外对高敏感会议我们设置了“禁止下载回放”的属性后台只提供在线播放链接同时把播放链接的有效期缩短到会议结束后三天。这样做虽然牺牲了一点点便利性但可以有效防止重要的内部会议录像被批量下载后二次传播。4.3 多节点容灾与故障切换经验单点部署在金融生产环境里是不可接受的。我们最终采用了主备双节点架构两台服务器跑相同的EasyDSS服务业务域名绑定在VIP上由keepalived做故障探测和VIP漂移。正常情况下会议源设备只会把视频流推给主节点主节点同步录制备节点处于待命状态实时监控主节点的心跳。一旦主节点宕机或网络不可达VIP自动漂移到备节点同时会议管理后台发现推送地址失效后自动把频道的源地址切到备节点。这时候源设备已经推给主节点的流会中断我们就在会议终端加了一个双地址推流当主地址连接失败时自动切到备地址保证视频流不中断。这里要特别提醒备节点不能只空跑我们让备节点也保持对主节点录制文件的实时同步或者至少同步最近一个小时的录像文件。否则就算节点切换成功会后的录像文件仍然是残缺的。我们在切换测试中验证过双推加VIP漂移可以在30秒内恢复直播录像文件最多丢失几十秒可以通过源端自动重推补齐。5. 压测数据与真实故障排查复盘5.1 并发播放压力测试结果上线前我们做了三轮压力测试重点是确认单台EasyDSS在峰值并发下的表现。测试环境是两台物理机CPU为32核内存128GB万兆网卡。模拟客户端用脚本不断请求HTTP-FLV流每分钟增加100路播放直到服务出现明显卡顿。测试结果如下并发播放数CPU使用率内存占用表现100路18%9GB画面正常300路40%14GB画面正常500路62%21GB播放启动稍慢800路86%33GB偶有缓冲CPU成为瓶颈1000路95%41GB播放卡顿明显不再接受新连接这里的关键指标不只是并发本身还有观看端的码率。测试时我们统一用的2Mbps副码流800路就是1600Mbps的峰值带宽万兆网卡还有余量说明瓶颈主要在CPU和分发转发能力。如果实际业务中并发超过这个数最有效的方式是加节点做负载均衡而不是单机硬扛。5.2 高延迟和花屏的根因排查上线后遇到最多的一个问题是部分支行同事反馈直播延迟越来越大从开始的3秒一路涨到十几秒。我们一开始怀疑是EasyDSS缓存区设置过大后来排查日志发现问题出在HTTP-FLV的TCP拥塞控制。当观看端网络不好时播放器会反复请求数据EasyDSS为了尽量填满缓冲会把发送队列不断拉长最终导致所有频道延迟一起增大。解决办法是在会议管理端对每路频道的FLV播放设置一个缓冲阈值超过阈值后丢弃部分过期视频帧优先保证实时性。同时我们把鞭长莫及的HLS切片时长从10秒调到了6秒回放延迟可控在10秒以内。调优后全行直播延迟稳定在3到5秒只有极少数的弱网终端会退到HLS。花屏问题也遇到过。一次重要会议中部分电脑观看画面出现绿色马赛克非常影响体验。排查发现是推流端的硬件编码器在画面内容变化剧烈时关键帧间隔产生了漂移从设置的2秒变成了4到5秒导致播放端解码失败。后来我们在会议前检查清单中加了一项用ffprobe确认源流关键帧间隔和编码参数不符合要求的终端禁止入会。5.3 日常运维与监控指标建议流媒体平台和普通Web系统的运维思路不太一样第一原则是“流不能断”。我们最终用Prometheus加Grafana搭了一套监控看板重点盯四个指标每路频道的拉流状态是否连续5分钟没有数据在线播放人数与带宽占用用于判断是否需要扩容CPU、内存、磁盘IO和网络流量尤其是转码进程的资源消耗录制文件完整性每隔10分钟检查一次正在录制文件的大小是否在增长。EasyDSS本身会提供一些状态API包括在线频道数、拉流码率、播放并发数。我们写了一个小脚本每分钟轮询这些API回传到Prometheus然后在Grafana上统一展示。这样做最大的好处是直播卡顿和源端断流能第一时间发现业务人员不会比运维更早知道故障。除此之外我们每周做一次“无人演练”在非会议时段让系统自动创建测试频道拉一路测试流确认播放、录制、回调、回放全流程都正常。这个方法很土但真的能发现问题尤其是临近重大会议前我们都会提前一天跑一次完整验证。整套系统上线到现在我最深的体会是EasyDSS这类一体化视频平台的价值不在于某个单一功能有多强而在于它能被上层业务系统快速编排真正融入会议流程。如果只是把它当成一个直播工具用那和用普通的直播SaaS没有区别把它做成会议管理系统的视频底座才算把金融行业协作这件事理顺了。