✨lmo-DataVisualization(以下简称“lmo-dv” 或 “dv”),一款开源可视化数据制作工具。 使用内置模板,将各种业务数据转换为视频动画,使数据更加形象、生动。
同时提供了sdk,可以根据需求编写不同的模板以满足业务需求。
这是lmo-dv的第3个大版本,该版本完全重新设计、重做。因此与旧版本不兼容。
- 基于
React.js+TypeScript - 内置
ffmpeg - 内置
sqlite数据库 - 交互式的设计器
- 重新设计的界面、模板、素材库、资源库
- css动画录制支持
- gif录制支持
- 新的模板sdk
- 容器支持
- 数据相关
- 数据编编辑:提供类似Excel的表格功能,支持导入数据
- 主题相关
- 模板高度定制化
- 文字动画
- 背景图
- 音频、视频相关
- 自定义音频
- 音量控制
- 高码率视频
- 最高4K清晰度
- 模板
- 模板“sdk”:提供模板开发接口,可以根据业务自定义模板
- 创建自定义模板
演示服务器仅提供基础功能演示,由于服务器性能原因,一些功能受到限制。 点击打开
本项目提供了一个 docker-compose.yml 文件来简化服务的启动过程。首先,请确保已准备好以下基础镜像:
nginx:alpinenode:20-alpinenode:18
然后执行以下命令拉取所需镜像:
docker pull nginx:alpine
docker pull node:20-alpine
docker pull node:18
在编排开始之前,您还需要构建一下web_app。由于考虑此容器的大小,所以这是必须的。
cd /web_app
yarn
yarn build| 变量名 | 默认值 | 说明 | 是否必须 |
|---|---|---|---|
LMO_APP_MAIN_PORT |
80 |
Web 应用对外暴露的端口 | 否 |
LMO_APP_SERVICE_PORT |
30003 |
Service (合成)服务映射到主机的端口 | 否 |
LMO_APP_SERVER_PORT |
30000 |
Server 服务映射到主机的端口 | 否 |
| 变量名 | 默认值 | 说明 | 是否敏感 | mssql必选项 |
|---|---|---|---|---|
LMO_APP_DATA_BASE_TYPE |
sqlite |
数据库类型(可选 sqlite, mssql ) | ❌ | ❌ |
LMO_APP_DATA_BASE_NAME |
lmo-dv |
数据库名称(适用于mssql) | ❌ | ✅ |
LMO_APP_DATA_BASE_USER_NAME |
your_username |
数据库用户名(适用于mssql) | ✅ | |
LMO_APP_DATA_BASE_PASSWORD |
your_password |
数据库密码(适用于mssql) | ✅ | |
LMO_APP_DATA_BASE_HOST |
localhost |
数据库主机地址(适用于mssql) | ✅ |
| 变量名 | 默认值 | 说明 | 是否必须 |
|---|---|---|---|
LMO_APP_DATA |
/lmo-data |
宿主机上的数据挂载目录(用于持久化存储) | ✅ |
这些变量虽然未通过环境变量注入,但作为补充信息列出:
| 变量名 | 默认值 | 说明 |
|---|---|---|
NODE_ENV |
prod |
Node.js 环境模式 |
SERVER_HOST |
server_app |
Server 服务的容器主机名 |
SERVICE_HOST |
service_app |
Service 服务的容器主机名 |
SERVICE_PORT |
3002 |
Service 内部监听端口 |
PORT |
3000 |
Server 内部监听端口 |
ALLOW_UNSAFE_CONTEXT |
1 |
允许非安全上下文访问 |
- 所有带 “
⚠️ ” 标记的变量建议在生产环境中由用户手动设置,不要使用默认值。 - 推荐使用
.env文件管理这些变量。
LMO_APP_MAIN_PORT=80 # web_app服务端口
LMO_APP_SERVICE_PORT=30003 # 合成服务端口
LMO_APP_SERVER_PORT=30000 # 服务器端口
# 数据库配置
LMO_APP_DATA_BASE_TYPE=sqlite # 数据库类型 可选 sqlite、mssql
# (如果您不使用mssql数据库,以下可以省略)
LMO_APP_DATA_BASE_NAME=lmo-dv # 数据库名称
LMO_APP_DATA_BASE_USER_NAME=root # 数据库用户名
LMO_APP_DATA_BASE_PASSWORD=your_password # 数据库密码
LMO_APP_DATA_BASE_HOST=localhost # 数据库地址
LMO_APP_DATA=/lmo-data # 数据挂载路径
cd /lmo-data-visualization
docker-compose up -d --build
以源代码方式部署
# clone code
git clone https://github.com/ayuanlmo/lmo-data-visualization.gitcd /lmo-data-visualization
#
cd /server
# 安装依赖
yarn
# 编译主服务端代码
yarn prod
# 启动主服务端
pm2 start ./dist/main.js服务器程序支持两种数据库,分别是:sqlite 、Microsoft SQL Server® (以下简称mssql)
默认使用sqlite,作为程序默认数据库,如果您想使用mssql,请写入如下环境变量:
LMO_APP_DATA_BASE_TYPE=mssql # 使用mssql
LMO_APP_DATA_BASE_NAME=lmo-dv # 数据库名称
LMO_APP_DATA_BASE_USER_NAME=sa # 数据库用户名(不建议要用sa
LMO_APP_DATA_BASE_PASSWORD=your_db_password # 数据库密码
LMO_APP_DATA_BASE_HOST=your_db_host # 数据库地址
使用mssql数据库,您需要先初始化数据库,请将库名称设置为:lmo-dv,或者使用/server/sql目录下的sql文件进行初始化,建议您使用
SQL Server Management Studio® (SSMS)运行sql文件。
#
cd /service
# 安装依赖
yarn
# 编译合成服务端代码
yarn c
# 启动合成服务
pm2 start ./dist/main.jsSERVER_HOST=localhost # 服务器地址(可选,默认值localhost)
ALLOW_UNSAFE_CONTEXT=1 # 允许非安全上下文访问(可选 默认值0)
SERVICE_PORT=3002 # 合成服务端口(可选 默认值3002)
ALLOW_UNSAFE_CONTEXT默认值为 0,表示不允许在非安全上下文中访问。但在容器等特定运行环境中,建议将其设置为 1,以让合成服务器能访问到模板资源。即便启用了非安全上下文访问,合成服务器也会在每个任务初始化前对
SERVER_HOST的合法性进行校验。
#
cd /web_app
# 安装依赖
yarn
# 编译web_app代码
yarn build
#
cd /dist
# (将dist目录下所有文件及文件夹拷贝或移动到你的http服务器(例如:nginx)目录)
server {
location / {
try_files $uri $uri/ /index.html;
}
location /api/ {
client_max_body_size 100M;
proxy_pass http://server_app:3000/;
}
location /connect {
proxy_pass http://server_app:3000/connect/;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
在一些 Linux 系统中,可能缺失一些字体,导致无法渲染,出现乱码或者方框乱码。
如果您的操作系统缺少中文字体,建议使用 文泉驿微米黑(WenQuanYi Micro Hei)。这是由文泉驿项目发布的开源中文字体套件,适用于大多数中文界面的渲染需求。
- 如果您使用容器,它会在容器构建时自动安装,用作为中文文字渲染。
- 对于其他 Linux 系统环境,可通过安装
fonts-wqy-microhei软件包来解决中文字体缺失问题。
# Debian/Ubuntu:
sudo apt install fonts-wqy-microhei若您的操作系统缺少韩文字体,可安装 fonts-unfonts-core。该字体套件由大韩民国政府发布,是免费的基础韩文字体集,可用于解决韩语显示异常的问题。
# Debian/Ubuntu:
sudo apt install fonts-unfonts-core目前以上语言已验证可用,其他语言尚未进行全面测试。如果您在使用过程中遇到其他语言的字符无法正常渲染的问题,建议尝试安装相应的语言字体包。
libnss3.so
error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directory
sudo apt install libnss3 # Ubuntu / Debianlibgobject-2.0.so.0
error while loading shared libraries: libgobject-2.0.so.0: cannot open shared object file: No such file or directory
sudo apt install libglib2.0-0 # Ubuntu / Debian
sudo yum install nss # CentOS / Red Hatlibatk-1.0.so.0
error while loading shared libraries: libatk-1.0.so.0: cannot open shared object file: No such file or directory
sudo apt install libatk1.0-0 # Ubuntu / Debian
sudo yum install atk # CentOS / Red Hatlibatk-bridge-2.0.so.0
error while loading shared libraries: libatk-bridge-2.0.so.0: cannot open shared object file: No such file or directory
sudo apt install libatk-bridge2.0-0 # Ubuntu / Debian
sudo yum install at-spi2-atk # CentOS / Red Hatlibcups.so.2
error while loading shared libraries: libcups.so.2: cannot open shared object file: No such file or directory
sudo apt install libcups2 # Ubuntu / Debian
sudo yum install cups-libs # CentOS / Red Hatlibdrm.so.2
error while loading shared libraries: libdrm.so.2: cannot open shared object file: No such file or directory
sudo apt install libdrm2 # Ubuntu / Debian
sudo yum install libdrm # CentOS / Red Hatlibxkbcommon.so.0
error while loading shared libraries: libxkbcommon.so.0: cannot open shared object file: No such file or directory
sudo apt install libxkbcommon0 # Ubuntu / Debian
sudo yum install libxkbcommonm # CentOS / Red HatlibXcomposite.so.1
error while loading shared libraries: libXcomposite.so.1: cannot open shared object file: No such file or directory
sudo apt install libxcomposite1 # Ubuntu / Debian
sudo yum install libXcomposite # CentOS / Red HatlibXdamage.so.1
error while loading shared libraries: libXdamage.so.1: cannot open shared object file: No such file or directory
sudo apt install libxdamage1 # Ubuntu / Debian
sudo yum install libXdamage # CentOS / Red HatlibXfixes.so.3
error while loading shared libraries: libXfixes.so.3: cannot open shared object file: No such file or directory
sudo apt install libxfixes3 # Ubuntu / Debian
sudo yum install libXfixes # CentOS / Red HatlibXrandr.so.2
error while loading shared libraries: libXrandr.so.2: cannot open shared object file: No such file or directory
sudo apt install libxrandr2 # Ubuntu / Debian
sudo yum install libXrandr # CentOS / Red Hatlibgbm.so.1
error while loading shared libraries: libgbm.so.1: cannot open shared object file: No such file or directory
sudo apt install libgbm1 # Ubuntu / Debian
sudo yum install mesa-libgbm # CentOS / Red Hatlibpango-1.0.so.0
error while loading shared libraries: libpango-1.0.so.0: cannot open shared object file: No such file or directory
sudo apt install libpango-1.0-0 # Ubuntu / Debian
sudo yum install pango # CentOS / Red Hatlibcairo.so.2
error while loading shared libraries: libcairo.so.2: cannot open shared object file: No such file or directory
sudo apt install libcairo2 # Ubuntu / Debian
sudo yum install cairo # CentOS / Red Hatlibasound.so.2
error while loading shared libraries: libasound.so.2: cannot open shared object file: No such file or directory
sudo apt install libasound2 # Ubuntu / Debian
sudo yum install alsa-lib # CentOS / Red Hat- 不建议对外暴露合成服务器端口
- 主服务和合成服务器必须运行在同一台服务器上
- 使用期间产生的文件,请不要手动删除
lmo-dv的版本号由主版本号.小版本号.修订号组成,例如:3.0.0。项目为了保持历史记录,而在同一个仓库创建新的分支,并在此分支基础上进行新版本的开发。
其中1.*、2.*已经停止维护。目前最新迭代版本为3.*。
- main
main分支为最新迭代版本,由newVer 或者 dev-v*分支合并而来。
- v2
v2分支为2.0版本相关代码“备份”。
- v1
v1分支为1.0版本相关代码“备份”。
每一个tag代表一个版本,例如:v3.0.0。并且该tag在发布时会有对应的说明。
本项目所有源代码基于 Apache-2.0 许可证发布。您可以在GitHub查看此项目。