黑石智算
产品 08 · 应用产品 · 媒资与作业资产库

媒资管理系统

媒体资产管理与转码平台

一份素材从分片上传、转码、识别到编目、检索、借阅审批,在同一条链路上跑完。

媒资系统真正难的不是把文件传上来,而是四件后面的事:大素材要能边传边续、播放要快慢都不卡、每段画面和每句话都要能被搜到、谁能看谁能下要留痕。这个平台把上传、转码、识别、编目、检索、借阅审批串成一条链路,AI 只做标注与预填,发布与放行始终由人点头。

产品矩阵
  • 72 个管理页面
  • 51 个权限点 · 16 个分组
  • 转码 · 转写 · 人脸 · OCR
媒资管理系统:素材到借阅素材主链路1收素材分片上传 + 断点续传,按存储节点落盘;整包 zip 也能一次传。2出可用版本转码集群分段转码后合并,产出低码率预览、封面与时长码率等元数据。3让素材可搜语音转写、人脸定位、OCR 文字三类结果写进同一份检索索引,都带时码。4编目分类树 + 编目模板字段著录;AI 预填也只进待审核,通过才发布。5借阅检索定位到片段 → 加入下载单 → 逐项审批 → 放行;或走分享 / 收集链接。6治理写操作进审计,白名单、备份、加密、权限点与统计看板在同一后台。识别与转码都在素材入库后自动跑,不占用户时间这条链路交出什么可播放的素材低码率预览 + 封面带时码的文本字幕 / OCR / 人脸名编目条目分类 + 模板字段检索入口多字段 + facet + 定位借阅记录下载单 + 逐项审批审计与指标谁改了什么、用了多少
结构示意 · 六步是真实模块的调用顺序:收素材 → 出可用版本 → 让素材可搜 → 编目 → 借阅 → 治理。右侧是这套链路实际产出的东西,不含未交付的能力。
72管理页面

文件库 / 编目 / 检索 / 审片 / 作业 / 治理各域自己的页面

25次数据库迁移

001 → 025,仓库启动按文件名顺序重放

72张数据表

文件、转码、识别、编目、下载单、审计各自独立

51个权限点

分 16 组;细到「审片批注」「导出审计」「下载备份」这一级

上传:大文件按片传,断了接着传

影视素材动辄几十 GB,浏览器一次 POST 传不完,网络一抖就要从头再来。这里把文件切成片、逐片确认、最后按顺序合并:中途断网只要重新问一次「哪些片已经到了」,从缺的那片继续。落盘位置由存储节点决定,不是写死在服务端某一块盘上。

媒资管理系统:分片上传与断点续传① 建上传单文件名 · 大小 · 目标节点返回 file_id 与分片建议init → file_id② 逐片上传X-Chunk-Index · 可并发缺片留待续传③ 合并按片序拼接 · 核对片数抽封面 · 写元数据complete → completed断点续传GET /files/:id/chunks → 已收分片列表 → 前端只补缺片,不重传已成功的片合并前核对分片总数;数量对不上直接报错,不会静默合成 0 字节文件存储节点 A使用量 / 容量(宿主 statfs 采集)存储节点 B(可再加)上传目录按节点配置 · 扩容登记
场景示意 · 建单 → 逐片上传 → 合并三段。断点续传靠「问一次已收哪些片」,只补缺片;落盘位置由存储节点决定,节点容量可在同一页看到。
三段式分片上传
建上传单(init)→ 逐片上传(chunk,带片序号)→ 合并(complete)。每片独立确认,客户端可以并发传,也可以暂停后再续。
断点续传有据可查
随时查询「已收到哪些片」,前端据此只补缺片;合并前还会核对分片总数,数量对不上直接报错,不会静默合出一个 0 字节文件。
整包也能一次进
zip 上传走独立入口,适合一次交付整批素材;服务端解包后按原有目录结构登记。
存储节点可登记、可观测
上传目录按节点配置,节点可加多台;容量采集走宿主 statfs,扩容登记与使用量在同一页看,不靠人去 df。
不下载也能看
视频、音频、图片、PDF、Office(docx / xlsx / pptx 客户端渲染)与三维模型(glb / gltf / obj / fbx / stl)都能在浏览器里直接预览。
接口与约束
接口
init / chunk / complete / chunks 状态,四段都可单独重试
并发
分片在途数量受限(进程内限流),传满即回 429,不把宿主带宽打死
存储
本地存储节点,可登记多节点与容量;不依赖对象存储
预览
视频 / 音频 / 图片 / PDF / Office / 三维五类,均走文件级权限判定

转码:worker 分段跑,长素材不用等一整块

原始素材的码率通常不适合在线播放。转码在这里不是为了「出更多格式」,而是为了两件具体的事:让预览打开就走(低码率版本),和让列表知道自己是什么(封面、时长、分辨率、码率)。长素材拆段并行,最后按顺序拼回一个文件。

媒资管理系统:转码集群转码任务pending → processing→ completed / failed进度与失败原因可查分发判定(三跳)① online 且未满载的 worker② 节点所属集群(service_ids)③ 都没有 → 本机 ffmpeg 兜底兜底会让 worker 闲置所以必须在集群页看到worker 1分段 1–N → 转码 → 落临时文件回调后端改状态worker 2另一批分段并行处理合并按段序拼回一个文件产物固定三件(不额外压格式)低码率预览640 宽 · 500k / 64k封面抽第 5 秒一帧元数据ffprobe:时长 / 分辨率 / 码率
场景示意 · 任务先看分发判定(在线 worker 与容量 → 节点所属集群 → 本机兜底),长素材拆段并行转码后合并;产物固定三件:低码率预览、封面、元数据。
01
接任务
上传合并后自动登记转码任务,或由人工对单个文件重发;任务与进度可查,不靠翻日志。
02
选 worker
先看在线转码服务(带容量),再按集群关系分发;集群没配时不静默失败,会回落本机 ffmpeg 并把这一点留在任务里。
03
分段转码
长素材切成若干段,多 worker 并行处理后合并;单机部署时退化成一段到底,行为一致。
04
产物回收
低码率预览(640 宽 / 500k 视频 / 64k 音频)、封面(抽第 5 秒)、ffprobe 元数据写回文件记录。
05
状态可见
pending / processing / completed / failed 四态,失败带原因;播放器在低码率未就绪时降级到原片并提示,不是白屏。
分发的三条规则
集群优先
transcode_services 里 status=online 且未满载的 worker 才会被选中;capacity 决定一台接几个任务。
节点归属
分派第一跳查节点所属集群;节点没挂集群就回落本机转码——任务照样完成,但 worker 闲置,这一点要在集群页上看得见。
回调确认
worker 完成后回调后端改状态;回调被拦会让任务停在 processing,因此回调通道单独放行并留痕。
部署要求
转码工具
ffmpeg / ffprobe(worker 镜像内自带,宿主也可直装)
worker
独立 Go 进程,按端口登记;一台可接多个任务,容量可配
产物
低码率 MP4 预览 + 封面图 + 元数据;原始文件保持不变

识别:三类结果都落时码,所以搜得到具体那一段

识别本身不稀奇,稀奇的是结果能不能用来找东西。语音转写给出每句的起止时码,人脸给出出现帧,OCR 给出画面里的文字与帧号——三类结果都进同一份检索索引,所以「这句话在第几分钟」「这张脸出现在哪几帧」「这个字出现在哪一帧」是同一个入口问题。

媒资管理系统:识别结果与时码语音转写(whisper)分段字幕:起止时码 + 文本异步任务:202 + task_id 轮询人脸检测(YuNet + SFace)出现帧 + 人脸框 + 相似度候选相似度只给候选,不做自动合并簇画面 OCR(PP-OCRv4)视频按帧 / 图片整图取文字结果带帧号或页码检索索引search_docs标题正文字幕OCR 文本人脸名两个布尔维度:has_ocr / has_faces只从一个入口写入(避免两套口径)命中后跳到具体位置搜「消防通道」字幕 00:12.4–00:18.0OCR 帧 312搜人物「张工」出现 14 帧(可逐帧看)搜「竣工」标题 + 正文 + 字幕同批命中结果高亮命中片段,视频直接 seek 到该时码取内容走文件级权限判定
场景示意 · 语音转写、人脸检测、画面 OCR 三条线各自产出「内容 + 时码/帧号」,只从一个入口写进检索索引;检索命中后能直接跳到那一帧或那一段。
语音转写(字幕)
faster-whisper 转写为带时码的分段,可导出 SRT;中文与英文可选,长素材异步跑(202 + task_id),前端轮询进度,不占着请求不放。
人脸检测与人物库
四类结果:出现位置(帧 + 人脸框)、相似度候选、人工命名绑定、人物库。相似度只给候选,不做自动合并簇——误合并不可逆。
画面 OCR
视频按帧、图片整图做文字识别,结果带帧号或页码;识别文本进索引后参与打分(权重低于标题)。
模型与部署
识别服务只依赖 onnxruntime + opencv,无 torch、无 GPU 也能跑;模型文件可放本机目录,也可换成内网 OCR 服务。
识别怎么跑(工程约束)
  • 任务表带租约与心跳:worker 崩了能重新认领,不会永久卡在 processing
  • 帧图落临时目录、任务结束回收;识别结果是「派生产物」,原片不动
  • 识别结果只从一个入口写进检索索引(避免两套口径互相覆盖)
  • 人脸缩略图与 OCR 文本都属于「取内容」,与文件本身走同一套权限判定
边界写清楚,避免过度预期
  • 人脸相似度只给候选与排序,不自动合并簇;命名必须人工确认
  • 转写语言白名单只有中文与英文;其他语种不做无根据承诺
  • 识别跑在 CPU 上,长素材按队列排,不承诺「秒出」

编目与检索:先著录,再让人搜到片段

没有编目的素材只是一堆文件;编目之后才有「谁能看、算什么类型、属于哪个专题」。这里把分类树、编目模板、AI 预填与人工审核串成一条路:AI 可以建议字段,但发布动作由有审核权限的人做。检索则同时吃编目字段、字幕、OCR 文本与人脸名,命中后能跳到具体时码。

媒资管理系统:编目与检索分类树工程 / 教学 / 宣传 └ 2026 交付 └ 现场验收一个文件只归一个分类(排他)编目模板字段标题 / 主题词拍摄日期 · 地点所属项目(选项)密级(选项)必填 + 默认值 + 排序著录 → 审核 → 发布人工著录,或 AI 预填建议值提交后进待审核(AI 也不能跳)未通过 → 不出现为「已发布」通过 → 发布 / 可下架,均留操作人检索:五类字段一起喂,命中定位到片段查询条件关键词 · 分类子树 · 标签集合 · 时间范围有 OCR / 有人脸排序:trgm 加权相似度结果(按相关性)1 竣工验收入场.mp4 命中:字幕 00:12 · 帧 3122 现场巡检记录.pdf 命中:OCR「消防通道」facet分类 12标签 8有 OCR 21有人脸 9
场景示意 · 编目侧是「分类树 + 模板字段 → 提交 → 审核 → 发布」,检索侧同时吃编目字段与识别文本;facet 计数与列表同源,不会出现数字自相矛盾。
编目这条路的五步
01
建分类树
按业务建多级分类;一个文件在编目上只归一个分类(排他),但可以同时进多个专题/集合(多对多)。
02
配编目模板
模板 + 字段两张表:字段键、标签、类型(文本/选项/日期等)、是否必填、默认值、排序都可配,不同素材类型用不同模板。
03
著录与预填
人工著录,或让 AI 从标题、字幕、OCR 文本里预填建议值;预填只是建议,仍要人确认。
04
审核与发布
提交 → 审核通过 → 发布 / 下架,三步都留操作人;未通过审核的条目不会以「已发布」身份出现在检索里。
05
检索与定位
关键词、分类子树、标签、集合、时间范围、有无 OCR / 有无人物等条件组合;结果高亮命中片段,视频直接跳到对应时码。
检索里的四条口径
两套排序口径
过滤用 ILIKE(带转义,q=% 不会命中全库),排序用 pg_trgm 相似度加权:标题 1.5、人脸名 1.2、正文 1、OCR 0.5。
facet 六维
分类、标签、集合、时间、是否有 OCR、是否有人脸——每维计数与列表同源,不会出现「筛完剩下 3 条但边上写 40」。
可见性统一
已发布与未编目都可见(published / uncataloged,存量资产不因没编目而消失);受限来源件(作业提交、收集投递)只对本人与评审可见。
专题 / 集合
专题(带策展排序)与集合(归集)两种形态,成员可拖拽排序、可分享、导出成员清单;与编目的「一个分类」互不替代。
六个 facet 维度

分类 · 标签 · 集合 · 时间 · 有 OCR · 有人脸

每维计数与列表同源,不会出现「筛完只剩 3 条、边上写 40」。

排序权重为什么这么配
  • 标题权重最高:用户通常记得名字,不记得正文
  • 人脸名次之:人名检索是媒资库的高频入口
  • OCR 权重最低:画面文字噪声大,命中不等于相关

借阅:不是给个下载链接,而是一次可追溯的裁决

素材能不能下,取决于三件事:这份文件的密级与可见性、当前用户的权限点、以及这次申请有没有经过审批。三者缺一不可,且每一步都留记录。批量下载不是把文件挨个放行,而是在打包前逐项重新复核——审批通过后策略被收紧,导出不能绕过它。

媒资管理系统:借阅与审批draft还在挑,未提交不通知、不占额度pending已提交,等逐项裁决看到的是每一项 + 理由part_approved部分批准被拒不拖累已批项approved全部批准可打包导出rejected(全被拒)放行前的三重判定(缺一不可)① 文件级策略密级 · 可见性 · 是否可下载② 权限点查看 / 下载 / 审批各自独立③ 审批自批回避(管理员也不例外)导出前逐项复核审批后被收紧 → 打包时重新判定zip 条目名清洗,不用原始路径每一步都留痕提交 / 裁决 / 通过 / 驳回 / 撤回站内通知 + 操作审计
场景示意 · 下载单按项裁决:部分批准时已批的可下、未批的继续等;放行前同时看文件级策略与权限点,导出打包前再逐项复核一次,决策全程进审计。
下载单的五个状态
draft
用户还在挑,单子未提交;此时不通知审批人,也不占审批额度。
pending
已提交,等待逐项裁决;审批人在待办里看到的是「每一项 + 理由」,不是整单一个按钮。
part_approved
部分批准:已批的可下,未批的仍在等;不会因为一项被拒就整单作废。
approved
全部批准,可打包导出;导出时再逐项复核一次策略与可见性。
rejected
全部被拒;拒绝理由回写通知,申请者可改范围重新提交。
四道闸,缺一不可
文件级策略
密级(公开 / 内部 / 受限等)、可见性与「是否允许下载」是文件属性,不是按目录一刀切。
权限点判定
查看、下载、审批、导出各自是独立权限点;预览权 = 下载权或评审权,不给第三条口子。
自批回避
提交人不能审批自己的单;管理员也不例外,避免「自己批自己」。
通知与留痕
提交、逐项裁决、整单通过 / 驳回、撤回都有站内通知;每次决策进操作审计,可按人、按文件回查。
对外只开两扇门:查看型与收集型分享
两种分享
查看型(view)给外部只读浏览;收集型(collect)让外部把素材投进来,投递进收集箱后由内部审阅。
口令与有效期
分享可设访问口令(哈希存储)与到期时间;到期即失效,不靠人工记得去关。
访客页面独立
访客只看到分享范围内的文件与只读预览,不出现后台入口;收集链接的上传面板也是独立页面。

协作:审片、作业、组织都在同一套文件上

媒资库不只服务「找和看」。同一份素材可以被拉进审片会话做逐帧批注,也可以作为作业素材发给班级、收学生提交并对提交件评分;人员与班级来自组织架构,权限按角色下发。这些能力共用同一套文件、预览与权限判定,不是另建一套库。

媒资管理系统:协作四块审片批注锚点:时码点 / 时码区间 / 帧号 / 画面几何多人同看,播放进度由主持人同步批注可回复、可标记解决作业与评分作业绑定素材,或要求提交文件提交件进独立域,只对本人与评审可见AI 给批改建议,计分要人确认收集链接对外发布收集链接,外部按表单投递投递件进收集箱,审阅通过才入库与查看型分享分开,权限不串组织与角色部门树支持改名/移动(路径同事务重写)账号可设有效期,到期登录直接 403批量导入与邀请,权限按角色下发
场景示意 · 四块能力共用同一套文件、预览与权限判定:审片批注锚在素材上,作业绑定素材或被要求提交,收集链接把外部素材收进来,人员与角色来自组织架构。
审片批注
锚点支持时码点、时码区间、帧号、页码与画面几何(三维视角);会话可多人在线,播放进度由主持人同步(playback.sync / control / takeover),批注可回复、可标记解决。
作业与提交
作业绑定素材或要求提交文件;学生提交进「提交件」域,教师按评分表打分、写意见、导出成绩;AI 可给批改建议,计分仍要人确认。
收集链接
对外发一个收集链接,外部按表单投递素材;投递件在收集箱里审阅,通过后才进资产库。
组织与账号
部门树支持改名/移动(路径同事务重写)、环检测;账号可设有效期(到期登录 403,在途会话 ≤5 秒失效)、可批量导入与邀请。

治理:权限、审计、备份、加密都在后台可操作

这类系统上线后最常被问的三件事:谁改了什么、数据丢了怎么办、敏感配置会不会明文躺在库里。三件事在这里都有对应页面与脚本:操作审计可按条件筛并导出,备份可校验可下载,敏感项加密入库且密钥可轮换。

权限点 51 个 / 16 组

文件、编目、下载、AI、审片、作业、集合、组织、存储、系统治理各自成组;内置角色含管理员、普通用户、教师、学生、评审与外部客户。

操作审计

写操作与敏感读都落审计,记录操作人、资源、动作、结果与详情(详情按白名单裁剪,不塞整段请求体),支持导出。

加密与轮换

敏感项用 AES-256-GCM 入库,主密钥放 keyring 文件(0600);轮换是「预检 → 单事务全量重加密 → 切 active」,旧钥保留到下一次成功轮换。

备份与恢复

备份产物可校验、保留期可配、可下载;恢复演练在独立 scratch 库进行,不碰现网库。

IP 白名单

后台入口可限定来源网段,越界直接拒绝;白名单变更同批写审计。

统计看板

调用、下载、审核、资产分布等指标单源口径,另列失败与越权计数;数据不全时显式提示「失真」,不拿空数据画漂亮的 0。

部署与集成要求
部署
Linux + Docker Compose(也可裸机);后端单进程,转码 worker 与识别服务可分散部署
后端
Go(Gin + pgx);PostgreSQL;迁移随启动按文件名顺序重放
转码
ffmpeg / ffprobe;transcode-worker 按集群与容量分发
识别
whisper-service(:5000)语音转写;ai-service(:5100)人脸与 OCR,CPU 即可跑
模型
识别服务内置开源模型;文本类 AI(剪辑建议、编目预填)走 OpenAI 兼容端点,可指内网自建
存储
本地存储节点,可登记多节点与容量;不做对象存储 / 多副本(当前版本口径)
权限
51 个权限点 / 16 个分组;可接 Spark 单点登录,也可用独立账号体系
浏览器
桌面 Chrome / Edge / Safari 最新版;三维预览依赖 WebGL

转码 worker 与识别服务可以分散部署,也可以先单机跑通;没有转码 worker 时预览会降级到原片,没有识别服务时检索只剩编目字段——功能随部署递减,不会整站不可用。

申请媒资管理系统试用

官网不提供安装包下载,也没有自助注册或系统登录入口。所有产品一律邮件申请试用:说明使用场景,我们回复开通演示环境或安排演示。