最近收到一个需求,需要把视频集成为一个服务,视频播放时根据登录的用户名动态生成水印覆盖在视频上;
这些视频隔段时间会来一波,需要集成进去;
最初的解决方案:把视频当作静态资源放在Java SpringBoot微服务的静态文件里,每个视频对应一个播放的H5页面;
弊端:
(1)视频越来越多(近10G),调试慢,且打包后jar太大;
(2)每增加一个视频就需要写一个页面(页面跳转、页面);太麻烦;
优化:
使用Nginx搭建视频+SpringBoot微服务+动态获取视频信息
下边重点说下:动态获取视频信息
(1)增加的视频文件信息(视频主题,视频名称,视频源src,培训时间【展示列表也可根据其排序】)都插入到Pg表里;
(2)页面视频主题页(通过读取pg表动态生成)
(3)页面某个主题的视频信息列表(通过Pg表动态获取生成)
(4)页面视频播放页(通过读取pg表动态填充——src信息等生成)
(5)视频信息管理页(通过pg表获取数据并构建 easy-ui树显示,简单明了)
–Postgre 视频信息表sql
drop table if exists t_videos;
CREATE TABLE t_videos
(
id bigserial NOT NULL PRIMARY KEY,
name text NOT NULL DEFAULT ‘’,
title text NOT NULL DEFAULT ‘’,
src text NOT NULL DEFAULT ‘’,
v_time text NOT NULL DEFAULT ‘’,
create_time timestamp with time zone NOT NULL DEFAULT now(),
modify_time timestamp with time zone
);
COMMENT ON TABLE t_videos IS ‘视频信息表’;
COMMENT ON COLUMN t_videos.id IS ‘主键id’;
COMMENT ON COLUMN t_videos.name IS ‘视频标题’;
COMMENT ON COLUMN t_videos.title IS ‘视频主题’;
COMMENT ON COLUMN t_videos.src IS ‘视频源’;
COMMENT ON COLUMN t_videos.v_time IS ‘视频时间’;
COMMENT ON COLUMN t_videos.create_time IS ‘创建时间’;
COMMENT ON COLUMN t_videos.modify_time IS ‘修改时间’;
优化完成后:
整个服务需要4个页面就都搞定了。
下次在来新的视频只需要上传视频到服务器,视频信息插入到pg表中,就不需要其他任何操作了。
视频主题列表页:
某个主题视频列表页:
视频播放页:
视频管理页: