16 Star 61 Fork 15

腾讯云 / vod-xiaoshipin-server

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
README.md 8.47 KB
一键复制 编辑 原始数据 按行查看 历史
tencent-carryfan 提交于 2018-08-29 20:28 . add bug fixed

概述

本项目为腾讯云小视频 APP 后台服务,采用 Nodejs 和 MySQL 搭建,提供了如下功能的演示:

  1. 上传签名派发
  2. 媒资管理
  3. 内容审核

用户可以下载本项目源码,快速搭建自己的小视频后台服务。

准备

帐号申请

申请腾讯云帐号,获取 API 密钥,得到 Appid、SecretId、SecretKey。

环境准备

安装 Nodejs

注意:nodejs 版本要求高于 8.x。

curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -
sudo apt-get install -y nodejs

安装 MySQL (mariadb)

sudo apt update
sudo apt install mariadb-server
sudo mysql --version
sudo service mysql start

初始化数据库

  1. 在终端使用 root 帐号登录 MySQL:
sudo mysql -u root -p
  1. 创建小视频数据库用户 litvideo:
create user 'litvideo'@'localhost' identified by 'litvideo';
  1. 创建小视频数据库 db_litvideo,并授权给小视频用户 litvideo:
create database db_litvideo default charset utf8 collate utf8_general_ci;
grant all privileges on `db_litvideo`.* to 'litvideo'@'%' identified by 'litvideo';
  1. 使用 litvideo,新建所需要的数据库:
use db_litvideo;
CREATE TABLE IF NOT EXISTS tb_account(
  userid VARCHAR(50) NOT NULL,
  password VARCHAR(255),
  nickname VARCHAR(100),
  sex INT DEFAULT -1,
  avatar VARCHAR(254),
  frontcover varchar(255) DEFAULT NULL,
  create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY(userid)
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS tb_ugc (
  userid varchar(50) NOT NULL,
  file_id varchar(150) NOT NULL,
  title varchar(128) DEFAULT NULL,
  status tinyint(4) not NULL DEFAULT 0,
  review_status tinyint(4) not NULL DEFAULT 0,
  frontcover varchar(255) DEFAULT NULL,
  location varchar(128) DEFAULT NULL,
  play_url varchar(255) DEFAULT NULL,
  create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (file_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS tb_token(
  token VARCHAR(32) NOT NULL,
  userid VARCHAR(50) NOT NULL,
  expire_time DATETIME NOT NULL DEFAULT '1970-01-01',
  refresh_token VARCHAR(32) NOT NULL,
  PRIMARY KEY(token),
  KEY(userid),
  KEY(expire_time)
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS tb_queue(
  task_id VARCHAR(150) NOT NULL,
  file_id VARCHAR(150) NOT NULL,
  owner   VARCHAR(50),
  create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  mark_time timestamp DEFAULT '1971-01-01 00:00:00',
  review_data longtext,
  PRIMARY KEY(task_id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS tb_review_record(
  task_id VARCHAR(150) NOT NULL,
  file_id VARCHAR(150) NOT NULL,
  reviewer_id   VARCHAR(50) NOT NULL,
  review_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  review_status VARCHAR(50) NOT NULL,
  PRIMARY KEY(task_id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

快速开始

配置工程

进入工作目录,克隆项目文件:

 git clone https://github.com/tencentyun/vod-xiaoshipin-server.git
 cd vod-xiaoshipin-server

在工作目录下,安装项目所需依赖:

npm install            

在 conf 文件夹下,复制 config_template.json 文件并命名为 localconfig.json 文件,修改腾讯云 API 密钥、数据库参数配置,以及 COS 存储配置。

{
        "dbconfig":{                        //数据库配置
            "host":"127.0.0.1",             //数据库 IP 地址,保持默认本机
            "user":"litvideo",              //数据库用户名,保持默认
            "password":"litvideo",          //数据库登录密码,保持默认
            "database":"db_litvideo",       //小视频所用数据库,保持默认
            "port":3306,                    //数据库端口,保持默认
            "supportBigNumbers": true,      //保持默认
            "connectionLimit":10            //保持默认
        },
        "tencentyunaccount":{                //腾讯运云帐号配置
            "AppId":"",                      //腾讯云 Appid
            "SubAppId":"",                   //腾讯云点播子帐号,默认不使用,保持为空
            "SecretId": "",                  //腾讯云 SecretId
            "SecretKey": "",                 //腾讯云 SecretKey
            "bucket":"xiaoshipin",           // COS 存储bucket
            "region":"ap-guangzhou"          // COS 存储地域
        },
        "server":{                        
            "ip":"0.0.0.0",                 //服务启动 IP ,保持默认
            "port":8001,                    //服务启动端口,保持默认
            "reliablecb":true,               //回调选择,保持默认
            "reliablecbtimeout":5000        //消息拉取轮询间隔(毫秒)
        }
}

配置可靠回调

在腾讯云点播控制台,【视频处理设置】下【回调配置】中设置回调模式为【可靠回调】,【事件回调配置】中选择【上传完成回调】。详情参考腾讯云点播回调配置回调设置

启动服务

在工程根目录下启动服务:

npm start

服务启动后,在另外一个终端下测试视频拉取接口:

curl -l -H "Content-type: application/json" -X POST -d '' http://localhost:8001/get_ugc_list

如果服务正常运行,可返回如下结果:

{"code":200,"message":"OK","data":{"list":[],"total":0}}

客户端搭建

参考拥有自己的短视频app-替换代码中的后台地址

功能体验

视频上传

服务启动正常后,打开短视频 App,点击底部加号,可以选择“录制”,“视频编辑”和“图片编辑”方式上传视频。上传成功后会在视频列表显示:

App

用户可上传本项目提供的测试视频,用于体验后续人工审核功能:将项目文件夹 source 中的 video.mp4 导入手机,打开 App,通过“视频编辑”方式上传并发布。

内容审核

腾讯云会针对用户上传的视频进行内容审核,审核结果为“pass”的视频可直接在 App 播放,审核结果为 “review”(建议人审)或者 “block”(建议屏蔽)的视频会推到鉴黄墙进行人工审核,打开浏览器访问 http://yourip:port/index.html 即可体验视频审核功能。其中 yourip 为运行本服务的服务器 ip 地址, port 由配置文件 localconfig.json 中,server 的 port 字段定义。页面如图:

鉴黄墙

页面左侧显示视频 id 和 title,以及触犯规则的视频截图,截图 confidence 超过 70 会标红,右侧支持视频播放。点击相应截图,视频会从指定位置开始播放。

视频下方是审核通过/屏蔽按钮,审核人点击任一审核按钮后,可获取下一条待审视频。如果没有更多审核任务了,审核完当前视频后会提示:没有更多任务。

媒资管理

打开 App,下拉列表会将媒资信息更新到视频列表。

用户上传视频后,会自动发起内容审核,后台根据返回的结果更新媒资,并在 App 列表页面-视频封面图的左上角展示:审核结果为“pass”的显示为“已通过”,“review”和“block”的视频会进行人工审核。

人工审核提交结果后,后台根据审核结果更新媒资,结果为“屏蔽”的视频显示为“涉黄”,“通过”的视频显示为“已审核”。其中只有“已通过”是视频可以播放,其他状态不可播放。如图所示:

媒资

参考

  1. 腾讯云点播平台视频上传签名:https://cloud.tencent.com/document/product/266/9219

  2. 腾讯云点播平台事件回调:https://cloud.tencent.com/document/product/266/7829

  3. 腾讯云点播平台媒资获取:https://cloud.tencent.com/document/product/266/8586

  4. 腾讯云点播平台视频审核:https://cloud.tencent.com/document/product/266/17914

  5. 腾讯云 Node.js SDK:https://cloud.tencent.com/document/sdk/Node.js

JavaScript
1
https://gitee.com/cloudtencent/vod-xiaoshipin-server.git
git@gitee.com:cloudtencent/vod-xiaoshipin-server.git
cloudtencent
vod-xiaoshipin-server
vod-xiaoshipin-server
master

搜索帮助