MediaCMS:基于 Django + React 的现代开源视频与媒体 CMS
MediaCMS 是一个现代化、功能完整的开源视频与媒体内容管理系统,用于快速搭建中小型视频/媒体门户,支持视频、音频、图片、PDF 多类型媒体,具备 REST API、多级转码、HLS 自适应流、Whisper 本地自动转录、RBAC 权限、LTI 1.3 教学集成等能力,采用 AGPL-3.0 许可证发布。
社区作者 · zZz
它解决什么问题
MediaCMS 是一个现代、功能完整的开源视频与媒体 CMS,目标是满足现代 Web 平台观看与分享媒体的需求,可在数分钟内搭建一个中小型视频与媒体门户。项目主要使用 Django + React 的现代技术栈构建,并内置 REST API,官方演示站点为 https://demo.mediacms.io。
核心功能(依据来源 README):
- 数据完全自主可控:可自行托管全部媒体内容。
- 现代技术栈:Django/Python/Celery、React。
- 多种发布工作流:public(公开)、private(私有)、unlisted(不公开列出)以及自定义。
- 基于角色的访问控制(RBAC):可创建 RBAC 类别,并把用户加入具有查看/编辑权限的组。
- 自动转录:通过与本地运行的 Whisper 集成实现。
- 多类型媒体支持:video、audio、image、pdf。
- 多种媒体分类方式:categories、tags 及自定义。
- 多种分享方式:社交媒体分享、视频嵌入代码生成。
- LMS 集成:支持 LTI 1.3,并提供用于在 LMS 中嵌入媒体的 Moodle 插件。
- 视频修剪器(Video Trimmer):裁剪视频、替换、另存为新文件或创建片段。
- SAML 支持:可将映射关联到系统角色与用户组。
- 便捷的媒体搜索:带有实时搜索(live search)能力。
- 音频与视频播放列表:创建播放列表、添加与重新排序内容。
- 响应式设计:包含亮色与暗色主题。
- 高级用户管理:支持自助注册、仅邀请、封闭式管理。
- 可配置操作:允许下载、允许评论、点赞/点踩、举报媒体。
- 配置选项:可更换 Logo、字体、样式,并添加更多页面。
- 增强播放器:定制版 video.js 播放器,支持多分辨率与播放速度选项。
- 多转码配置:为 144p、240p、360p、480p、720p、1080p 等尺寸提供合理默认值,并支持 h264、h265、vp9 多种 profile。
- 自适应视频流:可通过 HLS 协议实现。
- 字幕/CC:支持多语言字幕文件。
- 可扩展转码:按优先级进行转码。
- 分块上传:支持可暂停/可续传的内容上传。
- REST API:通过 Swagger 提供文档。
- 多语言:CMS 大部分界面已翻译为多种语言。
界面示意可参考配图 1(站点首页)、配图 2(视频页面)、配图 3(嵌入 embed)以及部署按钮配图 4(Deploy on Elestio)。
典型适用场景(来源“Example cases”):
- 大学与学校等教育机构:管理员与编辑控制发布内容,学生不被广告和不相关内容干扰,并可选择在线流播放或下载内容。
- 组织敏感内容:内容敏感、不便上传到外部站点的场景。
- 构建社区:可自定义 URL、Logo、字体、视觉风格,打造高度定制的社区视频门户。
- 个人门户:按个人偏好组织、分类与托管内容。
已使用方(来源列出):多所大学用于托管教育视频;Cinemata(非营利媒体、技术与文化组织,https://cinemata.org);Critical Commons(公共媒体档案与合理使用倡导网络,https://criticalcommons.org);American Association of Gynecologic Laparoscopists(https://surgeryu.org/)。
技术栈:Python、Django、Django Rest Framework、Celery、PostgreSQL、Redis、Nginx、Gunicorn、React、Fine Uploader、video.js、FFMPEG、Bento4。
硬件建议(来源“Hardware considerations”):中小型安装、每天上传数小时视频、每日数百名活跃用户时,最低 4GB 内存 / 2-4 CPU 即可;更大规模安装应增加 CPU 与内存。磁盘空间方面,建议按预期上传视频体积的 3 倍估算(系统会保留原始版本、编码版本以及 HLS),例如每天收到 1G 视频并全部保留,一年应考虑 1T 磁盘(1G × 3 × 365)。若要通过 Whisper 支持自动转录,需要考虑增加 CPU。
— 本文由 AI 根据公开来源辅助整理,命令、版本与许可证请在使用前到原始页面复核。
安装 / 开始使用
来源说明 MediaCMS 有两种运行方式,具体完整命令与参数请以官方对应页面为准(来源正文未给出完整命令,此处不臆造,标注为待核验)。
【准备工作】
- 先评估硬件:中小型安装(每天上传数小时视频、每日数百名活跃用户)最低建议 4GB 内存 / 2-4 CPU;规模更大需增加 CPU 与内存。
- 规划磁盘:按预期上传视频体积的 3 倍估算(系统同时保留原始版本、编码版本与 HLS),如每天 1G、保留一年约需 1T 磁盘。
- 如需自动转录(基于本地运行的 Whisper),应准备更多 CPU 资源。
【方式一
Docker Compose(待核验具体命令)】- 在服务器上准备 Docker 与 Docker Compose 环境(来源未给出具体版本要求,待核验)。
- 按官方 “Docker Compose page” 获取并配置 Compose 相关文件(具体仓库路径、镜像与端口配置,待核验)。
- 按该页面顺序启动服务,等待数据库(PostgreSQL)、Redis、Nginx、Gunicorn、Celery 等组件就绪。
- 首次运行后访问站点进行初始化配置,并按需修改 Logo、字体、样式等配置项。
- 若部署遇到问题,可参考官方推荐的博客文章《How to self-host and share your videos in 2021》获取完整搭建步骤。
【方式二:通过自动化脚本在服务器上安装(待核验具体命令)】
- 准备一台服务器,确认满足上述 CPU、内存与磁盘要求。
- 按官方文档执行安装与配置所有所需服务的自动化脚本(脚本地址与执行命令,来源未给出,待核验)。
- 脚本将安装并配置全部依赖服务(如 Django/Python、Celery、PostgreSQL、Redis、Nginx、Gunicorn、FFMPEG、Bento4 等)。
- 安装完成后进行首次运行验证,检查媒体上传、转码与播放链路是否正常。
【首次运行与验证】
- 打开站点首页(界面形态可参考配图 1),确认页面正常渲染与亮/暗主题可用。
- 上传一个测试视频,确认分块上传、转码(144p 至 1080p,h264/h265/vp9)与 HLS 播放正常(视频页可参考配图 2)。
- 测试嵌入代码生成与社交媒体分享(嵌入效果可参考配图 3)。
- 如需在 LMS 中使用,配置 LTI 1.3 并安装对应 Moodle 插件。
- 如需自动转录,确认本地 Whisper 集成可用(建议额外 CPU 资源)。
【常见问题排查方向(依据来源信息)】
- 转码缓慢或失败:检查 CPU 资源是否充足、转码优先级设置,以及 FFMPEG/Bento4 是否安装配置正确。
- 自动转录不可用:确认本地 Whisper 是否运行正常,并考虑增加 CPU。
- 权限/可见性问题:检查发布工作流(public/private/unlisted/自定义)与 RBAC 分组配置。
- 播放不流畅:确认 HLS 自适应流相关配置与已生成的各分辨率转码文件是否齐全。
【商业托管备选】 来源提到可通过 Elestio 一键部署 MediaCMS(见配图 4 “Deploy on Elestio” 按钮),Elestio 以收入分成方式支持该项目。此外官方提供定制安装、额外功能开发、从现有系统迁移、与遗留系统集成、培训与支持等付费服务。
