# 音视频部署维护手册

北京致远互联软件股份有限公司 2025年4月

# 前言

本手册对音视频独立服务的安装及维护相关事宜进行说明。

如对安装维护手册中相关问题存在疑问,请与致远互联的客户服务人员联系。

维度 支持范围
当前服务名称 音视频服务
适用服务器环境 Windows Server、Linux、信创操作系统
所需依赖 需要提前部署协同管理服务

# 修订记录

修订内容 修订时间
重新梳理音视频单机部署手册章节及内容,确保结构易读、易懂 2025-4-20

# 环境准备

# 概要说明

  • 取协同版本一致的音视频安装程序部署;
  • 使用音视频必须部署独立的音视频服务;
  • 音视频服务支持单机和集群两种部署方式
  • 依赖音视频视频转码等组件,安装程序内置
  • 依赖OpenJDK8,非信创安装程序内置,信创联系操作系统厂商预装OpenJDK8(小版本号参考非信创)
  • 依赖中间件,采用Springboot微服务模型,非信创与信创均是安装程序内置开源中间件

# 音视频单机模式

  • 资源成本需求低
  • 依赖Web服务(如Nginx)进行反向代理,如协同也使用Nginx,则可复用同一个NG
  • 客户端需要访问音视频服务

1725035641612.png

# 音视频集群模式

  • 满足高性能、具备高可用的要求,至少需要2台音视频服务器
  • 依赖Web服务(如Nginx)进行反向代理,如协同也使用Nginx,则可复用同一个NG
  • 客户端需要访问音视频服务

1725035679894.png

# 端口互通要求

如下是音视频服务对外用到的默认端口:

端口服务 http默认端口 端口互通要求
音视频服务端口 6080 需要被Nginx访问(Nginx==>>>音视频:6080)
Nginx音视频代理端口 86 需要被客户端访问(客户端==>>>Nginx音视频代理:86)
协同服务应用端口 80 需要被Nginx音视频访问==>>>http://协同服务
共享目录服务(NG与音视频分离部署场景) - 需要被Nginx、音视频服务远程访问,读写

# 服务器配置参考

音视频所需配置不高,主要用来做视频转码,如果需要更快的转码效率,可以视情况扩大配置。

在线用户数 微服务名称 非信创单节点配置推荐 信创单节点配置推荐
0~10000 音视频 CPU4核以上/内存8G以上/硬盘320G CPU4核以上/内存12G以上/硬盘320G

注意:

  • 音视频集群节点需要2台,每台节点服务器的配置与单机配置一致

# 操作系统相关准备

启动安装程序之前环境检查项: 在进行安装升级前,确保服务器环境配置符合要求,如不符合,安装程序无法继续运行。

1、检查当前是否为支持的操作系统类型

2、检查是否64位

3、检查cpu内存是否达到最低配置要求8c16g

4、检查虚拟内存是否不低于10240M

5、检查磁盘可用空间是否不低于100G

6、检查网卡速率是否符合基线要求1000M

7、已部署各项服务内存之和,加上即将安装的产品内存配置(默认4G)不得超过物理内存80%

8、当前服务器可用内存不得低于物理内存60%

9、Linux系统,ulimit -a检查open files和max user processes都不得低于60000

如当前系统配置较低,程序仅用作个人或演示使用,可酌情修改按照程序SeeyonInstall/inst/check.yml配置文件,降低环境检查基线

# Linux/信创操作系统初始准备

如音视频采用Linux/信创操作系统部署,需要做如下初始准备:

安装基本的命令组件:

安装部署前,先确保当前系统已经安装了最基础的命令,(能连接互联网服务器)可执行如下语句做预装:

如服务器无法连接互联网,请要求操作系统厂商预装必要的命令组件

# Red Hat系列(如CentOS),使用yum命令安装,如当前系统提示yum不可用,则尝试使用apt
sudo yum update -y
sudo yum install tar curl telnet vim unzip -y

# 基于Debian的系统(如Ubuntu)使用apt预装组件
sudo apt update -y
sudo apt upgrade -y
sudo apt install tar curl telnet vim unzip -y

# 基于欧拉openEuler、龙蜥Anolis OS等系统使用dnf安装
sudo dnf update -y
sudo dnf install tar curl telnet vim unzip -y

安装图形命令组件:

确保当前系统安装了必要的字体、图形组件,否则会影响后续程序使用:

# Red Hat系列(如CentOS),使用yum命令安装,如当前系统提示yum不可用,则尝试使用apt
sudo yum install freetype libX11 libXrender libXtst libXi fontconfig -y

# 基于Debian的系统(如Ubuntu)使用apt预装组件
sudo apt install libfreetype6 libx11-6 libxrender1 libxtst6 libxi6 fonts-config -y

# 基于欧拉openEuler、龙蜥Anolis OS等系统使用dnf安装
sudo dnf install freetype libX11 libXrender libXtst libXi fontconfig -y

在进行安装部署前,先按照如下配置优化Linux相关系统参数:

修改Linux内核参数:

1、通过 vim /etc/sysctl.conf 命令在文件末尾添加:

net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_window_scaling = 0
net.ipv4.tcp_sack = 0
net.ipv4.tcp_timestamps = 0

2、然后执行命令重启网络服务:

service network restart

# 如上一条命令不可用,可能是不同Linux发行版差异,尝试换一个命令重启
systemctl restart NetworkManager

3、通过 vim /etc/rc.d/rc.local 命令在文件末尾添加:

echo "30">/proc/sys/net/ipv4/tcp_fin_timeout
echo "1800">/proc/sys/net/ipv4/tcp_keepalive_time
echo "0">/proc/sys/net/ipv4/tcp_window_scaling
echo "0">/proc/sys/net/ipv4/tcp_sack
echo "0">/proc/sys/net/ipv4/tcp_timestamps

修改Linux最大进程数最大文件打开数:

通过 vim /etc/security/limits.conf 命令编辑此文件添加以下内容

# open files  (-n)
* soft nofile 65535
* hard nofile 65535
# max user processes  (-u)
* soft nproc 65535
* hard nproc 65535

以上配置完成后,执行reboot重启操作系统,随后通过 ulimit -a 命令检查open files和max user processes是否都变成65535,如未生效,则将*改成root,再次重启测试是否生效:

# 如果调整配置并且重启操作系统之后以上配置未生效,当前是root设置,则将*改成root即可生效
root soft nofile 65535
root hard nofile 65535
root soft nproc 65535
root hard nproc 65535

# 音视频单机部署X86

# X86安装程序准备

X86环境(Windows或Linux)从商务公布的对应版本安装程序下载地址下载名为“IndependentService.zip”的文件,此文件是X86环境扩展服务安装程序。

1744350274906.png

服务器直接解压IndependentService.zip,解压后的目录中“SeeyonMediaserviceInstall”就是音视频安装程序

  • SeeyonMediaserviceInstall.bat适用于Windows服务器安装音视频
  • SeeyonMediaserviceInstall.sh适用于Linux服务器安装音视频

1744987786929.png

如音视频在Linux服务器安装,则将IndependentService.zip上传到服务器,再进行解压,解压后对整个目录赋予可执行权限:

mkdir /data
# 解压安装程序
unzip 1.IndependentService -d /data
# 对扩展服务安装目录赋予可执行权限
chmod -R 777 /data/1.IndependentService
# 查看解压后的程序目录
cd /data/1.IndependentService/
ls

如音视频在Windows服务器安装,建议服务器杀毒软件将安装程序设置为信任目录,避免安装部署时误报。

如音视频在Linux下部署,必须参考【Linux操作系统初始准备】章节对所有音视频服务器参数进行调优,以获得更好的性能。

# X86单机安装部署步骤

第一步,启动音视频安装程序:

  • Windows服务器直接双击运行SeeyonMediaserviceInstall.bat
  • Linux服务器,使用命令启动运行SeeyonMediaserviceInstall.sh

程序启动第一步会进行环境校验,当前服务器环境不满足安装要求会拒绝安装,先将不通过项进行调整后再继续,详细检查项见【启动安装程序之前环境检查项】章节说明。

1744355474037.png

第二步,阅读许可协议,无异议选择“接受”并“下一步”

第三步,选择产品的安装目录,选择“下一步”

  • Windows系统下安装目录建议更改到非系统盘符
  • Linux建议安装在空间较大的盘符下,比如安装在/data/Seeyon/Mediaservice

1744988211153.png

第四步,依次点击下一步,直至完成安装:

1744988347359.png

第五步,安装完成后,找到音视频程序目录,Windows和Linux正常情况都包含如下文件,如检查文件无误,则确定部署完成:

安装后的nginx目录仅含配置,不含程序

1744988449603.png

# 音视频单机部署(信创)

信创环境从商务公布的对应版本安装程序下载地址下载名为“XinChuang.zip”的文件,此文件是信创环境相关服务安装程序。

1736391654206.png

将XinChuang.zip上传到信创系统,并解压XinChuang包,解压后,Mediaservice目录就是音视频的程序根目录:

unzip 2.V9.0SP1_XinChuang.zip

1744988552285.png

Mediaservice音视频程序免安装,建议解压后放置到规划的目录方便管理,比如参考X86统一放置到/data/Seeyon目录:

mkdir -p /data/Seeyon
# 音视频程序迁移到规划好的目录
mv Mediaservice /data/Seeyon/

安装后的nginx目录仅含配置,不含程序

1744988706680.png

不同芯片可执行程序配置

ffmpegbin/ffmpeg.linux_arm、ffmpeg.linux_mips64

若为ARM芯片,将ffmpeg.linux_arm修改为ffmpeg.linux,覆盖已存在的文件。

若为MIPS芯片,将ffmpeg.linux_mips64修改为ffmpeg.linux,覆盖已存在的文件。

准备JDK:Mediaservice音视频免安装版本不带JDK,需要自行准备。将JDK8上传到自定义路径,比如usr/local/jdk,随后修改Mediaservice/config/jvm.properties文件中的search_java参数,设置成JDK下的bin/java运行路径:

cd /data/Seeyon/Mediaservice/config
vim jvm.properties

注意路径地址指向jdk根目录:

1744988775327.png

以上完成后,信创免安装版本就准备完成,下一步就是进行配置。

# 音视频Web服务部署配置

音视频服务涉及多个上下文路由,故需要Nginx之类的Web服务进行上下文代理。

可以将Nginx部署在音视频本机,也可以独立部署Nginx(或复用协同应用的Nginx)。详细安装部署步骤可以参照Nginx相关离线文档部署,或参考在线文档部署:《Nginx源码编译安装》 https://open.seeyoncloud.com/#/faq/vuepressFile/v1/share?url=Z2ptZkplPjI6Njk=

# Nginx与音视频集中部署配置

Nginx部署后,修改nginx.conf文件内容,修改方法可以参考音视频程序下的Mediaservice/nginx/conf/nginx.conf模板。

此模板适用于音视频服务本机部署Nginx场景:

1745027652975.png

注意:如果OA使用https进行访问,音视频也需要配置成https。参考标准的NG配置方法,将server{}代码改成ssl监听,并放置音视频所需证书即可:

# 音视频https改用ssl示例
server {
        listen       8443 ssl;    #设置为ssl端口
        server_name  localhost;
		#ssl/server.crt和ssl/server.key为证书路径
		ssl_certificate ssl/server.crt;        
        ssl_certificate_key ssl/server.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        charset utf-8;
    	
    	忽略若干其它配置
}

# Nginx与音视频分离部署配置

Nginx支持与音视频分离部署,比如直接复用协同或其它应用服务的前置Nginx。音视频集群也需要分离配置。

音视频的NG配置模板可拷贝音视频程序下的Mediaservice/nginx/conf/nginx.conf模板的server{}区块代码,再做调整。

注意:

  • 音视频Nginx配置默认监听86端口,可自定义调整
  • 音视频Nginx的/media需要访问音视频服务:6080端口
  • 音视频Nginx的/auth需要访问协同服务地址,proxy_pass直接配置协同的负载地址,支持http(https)
  • 音视频Nginx的/playalias参数配置音视频缓冲文件地址,分离部署必须配置成共享目录。alias参数需要与音视频程序Mediaservice/config/application.properties中的media_path对应(追加/media
  • 如果协同采用https,则音视频的Nginx配置也必须调整成https
	# 统一维护音视频地址(支持单机、集群)
	upstream seeyon_media_cluster{
		server 192.168.94.138:6080 max_fails=300 fail_timeout=30s;
    }

	# 音视频服务配置,使用server{}代码块管理
    server {
        listen       86;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }
        location /media {
            client_max_body_size 20m;
            # 转发到远程音视频微服务
            proxy_pass http://seeyon_media_cluster;
            # 设置 header 的 host 包含 host 及 port
            proxy_set_header Host $host:$server_port;
            # 设置 header 的客户端 IP 为实际 IP
            proxy_set_header X-Real-IP $remote_addr;
            # 设置 header 的协议为实际使用的协议
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            # 关闭 redirect
            # proxy_redirect     off;
            # 设置超时时间
            proxy_connect_timeout 600;
            proxy_read_timeout 600;
            proxy_send_timeout 600;
        }
        location /play {
            # 跨域处理
            add_header Access-Control-Allow-Origin * always;
            add_header Access-Control-Allow-Headers X-Requested-With;
            add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
            # 如果不需要权限校验注释掉这行
            auth_request /auth;
        	# 配置音视频文件目录,分离部署则配置音视频共享目录地址
            alias /mnt/share/mediaroot/media;
            expires -1;  
        }
        location = /auth {
            if ($request_uri ~ (ts|jpg|OK)) {
                return 200;
            }
        	# 这里配置协同负载地址下的具体rest请求
            proxy_pass http://192.168.94.136:80/seeyon/rest/media/verify;
            proxy_pass_request_body off;
            proxy_set_header Content-Length "";
            proxy_set_header X-Original-URI $request_uri;
            proxy_set_header User-Agent    $http_user_agent;
            proxy_set_header X-Real-IP        $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

注意:如果OA使用https进行访问,音视频也需要配置成https。参考标准的NG配置方法,将server{}代码改成ssl监听,并放置音视频所需证书即可:

# 音视频https改用ssl示例
server {
        listen       8443 ssl;    #设置为ssl端口
        server_name  localhost;
		#ssl/server.crt和ssl/server.key为证书路径
		ssl_certificate ssl/server.crt;        
        ssl_certificate_key ssl/server.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        charset utf-8;
    	
    	忽略若干其它配置
}

# 音视频单机配置运维

无论是X86还是信创系统,无论是图形化安装还是免安装程序,配置步骤均一样,参考本章节操作。

# 单机配置步骤

在音视频单机已经安装完成前提下,进行协同与音视频的配置:

第一步,登录协同获取服务注册码:确保协同服务启动,登录协同系统管理员后台,进入"音视频服务配置"界面,查看并记录服务注册码:

1745030949766.png

第二步,音视频配置注册码。

若未安装S1,需要手工进行注册码配置:将注册码配置在音视频服务程序目录Mediaservice/config/application.properties文件中,并调整其他配置参数:

  • regist.code: 注册码,需要与系统管理员账号中的服务注册码保持一致,将第一步服务注册码拷贝到此处
  • server.ip:音视频服务器的 ip地址,与协同分离部署需要设置实际ip,如10.5.5.160
  • a8.server.url:协同服务的访问地址,注意带应用上下文/seeyon,需要确保音视频服务器能访问到协同服务(协同集群则是负载地址)
  • server.port:音视频服务的端口,默认6080, 音视频服务6080端口必须让协同应用服务器可以访问
  • server.url:音视频服务外网地址,如有外网需求需要配置
  • media.authorizedIps:音视频服务信任的ip地址,填写协同服务的ip地址,多个地址逗号隔开,127.0.0.1勿删。
  • media_path:音视频服务存储音视频文件的目录,默认在音视频程序mediaroot目录下。如果采用集群或与Nginx分离部署,则将其设置为共享目录地址。此配置对应Nginx的/playalias参数(追加/media目录)。

Windows系统通过文本工具修改保存,Linux系统可通过vim修改保存。

1745031532002.png

特别注意:如NG和音视频分离部署,需要修改media.path路径为共享目录,确保音视频和NG都能读写此共享目录:

1745042876212.png

1745042919374.png

若已安装S1,可在S1的"服务启停配置"中,进行音视频配置:

img

img

# 单机音视频服务启停

启动前注意事项:

1、需要先确保协同服务处于运行状态,再启动音视频服务,启动音视频服务时会向协同服务发送请求

2、音视频服务和协同服务有端口互通要求,详细见 【默认端口互通】 章节,如未开通端口访问权限,会导致音视频不可用。

启动方法一: 可以使用S1启动音视频服务(一定要在协同服务启动完成后才可以启动音视频)

启动方法二: 可以使用音视频程序目录Mediaservice/startup脚本启动(一定要在协同服务启动完成后才可以启动音视频)

  • Windows系统鼠标右键“以管理员身份运行”startup.bat启动,启动窗口不要关闭
  • Linux系统运行 ./startup.sh 命令启动
cd 音视频程序目录Mediaservice
./startup.sh

启动脚本会先启动Nginx再启动音视频微服务,Nginx未安装会有日志提示,如Nginx采用分离部署可忽略此提示。

启动后,确保有Mediaservice这个Java进程:

1745034038590.png

启动后验证: 登录协同系统管理员后台,进入"音视频服务配置"界面,如显示了红框的内容,则说明音视频服务部署启动成功:

1745034702291.png

停止方法一: 可以使用S1停止音视频服务

停止方法二: 可以使用音视频程序目录Mediaservice/shutdown脚本停止

  • Windows系统鼠标右键“以管理员身份运行”shutdown.bat停止,关闭ES程序窗口
  • Linux系统运行 ./shutdown.sh 命令停止
cd 音视频程序目录Mediaservice
./shutdown.sh

# 单机JVM配置调优

如需提高音视频服务的堆内存资源,可修改音视频程序根目录\config\jvm.properties文件。比如将内存改成8G,就改如下参数即可:

JAVA_OPTS="-Xmx8G"

# 单机日志分析

音视频如出现异常,单机环境下重点分析如下日志:

  • 协同服务器,音视频日志:ApacheJetspeed\logs_sy\ctp.log和ApacheJetspeed\logs_sy\error.log
  • 音视频服务器日志:Mediaservice/logs/media.log

# 音视频功能验证

所有服务部署启动后:

1、登录协同服务单位管理员后台 - 文档中心设置 - 视频库管理,授权视频库管理员

1745115395294.png

2、登录协同视频库管理员个人门户 - 知识社区 - 视频广场菜单,上传视频然后测试预览效果:

1745116374280.png

# 常见问题

音视频无法查看视频常见问题:

  • 1)音视频早于协同启动会导致服务不可用:一定要协同启动成功后,才能启动音视频服务!
  • 2)音视频缓冲文件路径配置不正确:检查NG和音视频服务下的目录地址,分离部署或集群一定要配共享目录!
  • 3)协同是https,但音视频不是:协同如果是https,则音视频也必须是https!

# 音视频集群部署配置

# 集群部署前要求

  • 在部署音视频集群模式前,先进行音视频单机模式安装部署,确保单机模式全部配置完成,单机模式功能可用之后再部署集群模式!

  • 如音视频在Linux下部署,必须参考【Linux操作系统初始准备】章节对所有音视频服务器参数进行调优,以获得更好的性能。

  • 集群环境需要2个节点,准备两台同硬件配置音视频服务器,详细部署结构见【音视频集群模式部署图】

  • 集群服务器硬件资源配置可参考【服务器配置参考】章节,每一台服务器与单机保持一致

# 集群安装部署步骤

音视频集群需要两台,本手册以两台检索服务器为例进行配置:

(1)停止原单机音视频服务,后续将原单机音视频服务当作集群节点一

(2)将集群节点一音视频程序1比1复制到节点二,路径必须保持一致:

# 节点二创建目录
mkdir -p /data/Seeyon

# 节点一使用rsync命令同步文件到节点二
rsync -av --progress /data/Seeyon/Mediaservice root@192.168.94.142:/data/Seeyon/

(3)依次修改集群节点一(原单机)、节点二配置,使两个节点形成集群配置:

(3-1)配置每个Mediaservice节点信息:文件路径Mediaservice/config/application.properties,修改参数与音视频单机配置一样,唯一注意的地方是:

  • server.ip需要配置音视频集群各节点自身的物理IP

  • media.path参数必须使用共享目录以确保音视频集群下共享视频缓冲文件

1745163529052.png

(3-2)配置独立的Nginx服务,由Nginx来管理集群,Nginx配置参数与【Nginx与音视频分离部署配置】完全一致,唯一注意的地方是:nginx.conf的upstream seeyon_media_cluster{}代码块配置成音视频的集群地址即可实现集群模式:

	# 统一维护音视频地址(支持单机、集群)
	upstream seeyon_media_cluster{
		server 192.168.94.138:6080 max_fails=300 fail_timeout=30s;
    	server 192.168.94.142:6080 max_fails=300 fail_timeout=30s;
    }

	# 音视频服务配置,使用server{}代码块管理
    server {
        listen       86;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }
        location /media {
            client_max_body_size 20m;
            # 转发到远程音视频微服务
            proxy_pass http://seeyon_media_cluster;

        忽略其他配置......

# 集群启停和验证

启动停止命令与【单机音视频服务启停】完全一样:确保协同服务保持启动状态,随后音视频两个节点依次启动、停止即可。

启动后,确保有Mediaservice这个Java进程:

1745034038590.png

启动后验证: 登录协同系统管理员后台,进入"音视频服务配置"界面,如server.ip显示了音视频集群全部节点信息则说明启动成功:

1745163679290.png

# 集群JVM配置调优

如需提高音视频服务的堆内存资源,可修改音视频程序根目录\config\jvm.properties文件。比如将内存改成8G,就改如下参数即可:

JAVA_OPTS="-Xmx8G"

# 集群日志分析

音视频如出现异常,集群环境下重点分析如下日志:

  • 协同服务器,音视频日志:ApacheJetspeed\logs_sy\ctp.log和ApacheJetspeed\logs_sy\error.log
  • 音视频服务器日志(取各节点的日志):Mediaservice/logs/media.log
    编撰人:zhoulongbo、het