自建视频托管平台:MediaCMS

news2024/11/19 9:39:04

目录

  • 1 MediaCMS简介
    • 1.1 介绍
    • 1.2 特性
    • 1.3 应用场景
  • 2 安装配置
    • 2.1 安装
      • 1、安装
      • 2、汉化
    • 2.2 一些常见配置
  • 3 简单使用
    • 3.1 上传
    • 3.2 下载
    • 3.3 添加标题或者字幕
    • 3.4 通过Tag/Category实现视频/文件分类
      • 添加 Tag
      • 给任一资源分类

1 MediaCMS简介

1.1 介绍

MediaCMS是一个现代的,功能齐全的开源视频和媒体CMS。它是为了满足现代网络平台观看和分享媒体的需要而开发的。它可以在几分钟内建立一个小型到中型的视频和媒体门户。
它主要使用现代堆栈Django React构建,并包含一个REST API。
在https://demo.mediacms.io上有一个演示

在这里插入图片描述

1.2 特性

  • 完全掌控您的数据:自己托管!
  • 支持多种发布工作流程:公开、私有、未列出和自定义
  • 现代技术:Django/Python/Celery,React
  • 支持多种媒体类型:视频、音频、图像、PDF
  • 多种媒体分类选项:类别、标签和自定义
  • 多种媒体分享选项:社交媒体分享、视频嵌入代码生成
  • 易于媒体搜索:实时搜索功能丰富
  • 音频和视频内容的播放列表:创建播放列表,添加和重新排序内容
  • 响应式设计:包括浅色和深色主题
  • 高级用户管理:允许自我注册、仅邀请、封闭注册
  • 可配置的操作:允许下载、添加评论、点赞、不喜欢、举报媒体
  • 配置选项:更改徽标、字体、样式、添加更多页面
  • 增强的视频播放器:定制化的video.js播放器,支持多种分辨率和播放速度选项
  • 多个转码配置文件:适用于多种分辨率(240p、360p、480p、720p、1080p)和多个配置文件(h264、h265、vp9)的默认设置
  • 自适应视频流:通过HLS协议实现
  • 字幕/CC:支持多语言字幕文件
  • 可扩展的转码:通过优先级进行转码。实验性支持远程工作节点
  • 分块文件上传:支持暂停/恢复的内容上传
  • REST API:通过Swagger进行文档化

1.3 应用场景

学校和教育机构。管理员和编辑可以控制哪些内容将被发布,学生不会受到广告和无关内容的干扰,同时他们还可以选择流式传输或下载内容。
组织敏感内容。在某些情况下,内容可能非常敏感,无法上传到外部网站。
建立一个强大的社区。MediaCMS 可以进行定制(URL、徽标、字体、美观性),因此您可以为您的社区创建一个高度定制化的视频门户!
个人门户。按照您喜欢的方式组织、分类和托管您的内容。

2 安装配置

官方提供了两者安装方式 Docker 和 单节点服务 安装。目前经过测试 Dcoekr安装存在问题,所以此处只在服务器上安装

2.1 安装

1、安装

使用的是:Ubuntu22.04

# 1、更新操作系统,并安装git
apt update
apt install git -y

# 2、下载安装脚本并运行
mkdir /home/mediacms.io && cd /home/mediacms.io/
# 如果下面地址下载不下来可以使用:https://github.com/mediacms-io/mediacms
git clone https://github.com/mediacms-io/mediacms
cd /home/mediacms.io/mediacms/
bash ./install.sh

在安装过程中需要注意,有一个地方会提示需要输入 URL,如果使用的是域名基本没问题,但是如果使用的是IP需要注意下方是正常的,表示程序正在生成 Diffie-Hellman(DH)密钥交换所需的参数。 … 这些会生成很久只要不报错就一直等就可以了,有点慢
在这里插入图片描述

正常执行完成后会在后面输出登录的用户名密码,MediaCMS installation completed, open browser on http://192.168.92.188 and login with user admin and password 2h4thhbw5f
打开页面显示如下:
在这里插入图片描述

查看管理菜单
在这里插入图片描述
在这里插入图片描述

2、汉化

目前看汉化不完整,所以可不做
vim /home/mediacms.io/mediacms/cms/local_settings.py

# 在文件中添加如下配置
LANGUAGE_CODE = "zh_CN"
TIME_ZONE = "Asia/Shanghai"

# 重启服务
systemctl restart mediacms.service

2.2 一些常见配置

配置文件地址:/home/mediacms.io/mediacms/cms/settings.py
如果修改某项配置,建议通过将它们添加到 local_settings.py 来覆盖它们中的任何一个。
如果是单服务器安装,添加到 cms/local_settings.py 。
如果是docker组合安装,添加到 deploy/docker/local_settings.py 。这将自动覆盖 cms/local_settings.py 。

# 单机安装:编辑 cms/local_settings.py ,修改并重启MediaCMS
systemctl restart mediacms
# Docker组合安装:编辑 deploy/docker/local_settings.py ,修改并重启MediaCMS容器
docker-compose restart web celery_worker celery_beat

以下为配置文件中的默认值

# 设置全局门户标题
PORTAL_NAME = "MediaCMS"
# 设置字符集
LANGUAGE_CODE = "en-us"
# 设置时区
TIME_ZONE = "Europe/London"

# 设置谁能添加视频文件,默认情况下所有人都可以
# who can add media
# valid options include 'all', 'email_verified', 'advancedUser'
# all:所有人都可以
# Email_verified,用户不仅要注册一个帐户,还要验证电子邮件(通过单击注册时发送的链接)。显然,电子邮件配置需要工作,否则用户将无法收到电子邮件。
# advancedUser,只有标记为高级用户的用户才能添加媒体。管理员或MediaCMS管理员可以通过编辑用户的配置文件并选择advancedUser,使用户成为高级用户。
CAN_ADD_MEDIA = "all"

# 指定对新上传的媒体进行处理 
# valid choices here are 'public', 'private', 'unlisted'
# Public是默认选项,意味着媒体可以出现在列表中。如果媒体类型是视频,则至少在生成文件的编码版本的任务成功完成后,它将出现。对于其他类型的文件,如图像/音频,它们立即出现
# private意味着新上传的内容是私有的——只有用户或MediaCMS的编辑、经理和管理员才能看到它。这些还可以将状态设置为公开或未上市
# Unlisted是指未列出的项目。但是,如果用户访问未列出的媒体的url,它将被显示(与私有相反)。
PORTAL_WORKFLOW = "public"

# 设置主题 
# valid values: 'light', 'dark'.
DEFAULT_THEME = "light"

# 设置还是隐藏登录按钮,True:显示,False:隐藏
LOGIN_ALLOWED = True  # whether the login button appears
 
# 显示/隐藏注册按钮,True:显示,False:隐藏
REGISTER_ALLOWED = True  # whether the register button appears

# 显示/隐藏上传媒体按钮
UPLOAD_MEDIA_ALLOWED = True  # whether the upload media button appears

# 显示/隐藏动作按钮(喜欢/不喜欢/举报)
### 对以下任何一项进行更改(True/False):
CAN_LIKE_MEDIA = True  # whether the like media appears
CAN_DISLIKE_MEDIA = True  # whether the dislike media appears
CAN_REPORT_MEDIA = True  # whether the report media appears
CAN_SHARE_MEDIA = True  # whether the share media appears

# 被举报时自动隐藏媒体,为变量 REPORTED_TIMES_THRESHOLD 设置一个低值,一旦达到限制,媒体将进入私有状态,并向管理员发送电子邮件,如下:
Reported_times_threshold = 2

# 在媒体上传页面设置自定义消息,此消息将出现在媒体拖放表单的下方
PRE_UPLOAD_MEDIA_MESSAGE = '自定义消息'

# 设置邮件设置。为每个提供程序设置正确的设置
DEFAULT_FROM_EMAIL = "info@mediacms.io"
EMAIL_HOST_PASSWORD = "xyz"
EMAIL_HOST_USER = "info@mediacms.io"
EMAIL_USE_TLS = True
SERVER_EMAIL = DEFAULT_FROM_EMAIL
EMAIL_HOST = "mediacms.io"
EMAIL_PORT = 587
ADMIN_EMAIL_LIST = ["info@mediacms.io"]

# 禁止来自特定域的用户注册,通过这个变量设置注册无效的域:
RESTRICTED_DOMAINS_FOR_USER_REGISTRATION = ["xxx.com", "emaildomainwhatever.com"]

# 需要MediaCMS编辑/经理/管理员审核
MEDIA_IS_REVIEWED = True  # whether an admin needs to review a media file.
# 默认情况下不需要,设置为False,任何上传的媒体都需要在出现在列表之前进行审查。 MediaCMS的编辑/经理/管理员可以访问媒体页面并编辑它,在那里他们可以看到将媒体标记为已审阅的选项。默认设置为True,因此不需要审查所有媒体  

# 指定播放列表的最大媒体数
MAX_MEDIA_PER_PLAYLIST = 70

# bytes, size of uploaded media,指定可上传的最大媒体大小,默认是4G
UPLOAD_MAX_SIZE = 800 * 1024 * 1000 * 5     

# 指定注释的最大大小
MAX_CHARS_FOR_COMMENT = 10000 

# 并行上传多少个文件
UPLOAD_MAX_FILES_NUMBER = 100

# 强制用户在注册时确认他们的电子邮件。电子邮件确认的默认选项是可选的。将此设置为强制性,以便强制用户在登录之前确认他们的电子邮件
ACCOUNT_EMAIL_VERIFICATION = "optional"  # 'mandatory' 'none'

# 限制用户登录次数
ACCOUNT_LOGIN_ATTEMPTS_LIMIT = 20

# 限制用户登录超时时间
ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT = 5

# 如果设置为False,则禁止用户注册
USERS_CAN_SELF_REGISTER = True

# 配置通知
USERS_NOTIFICATIONS = {
    "MEDIA_ADDED": True,  # in use,如果要禁用新媒体通知,请设置为False
    "MEDIA_ENCODED": False,  # not implemented
    "MEDIA_REPORTED": True,  # in use
}

ADMINS_NOTIFICATIONS = {
    "NEW_USER": True,  # in use,NEW_USER:添加新用户
    "MEDIA_ADDED": True,  # in use,MEDIA_ADDED:添加媒体
    "MEDIA_ENCODED": False,  # not implemented
    "MEDIA_REPORTED": True,  # in use
}

# 设置仅允许成员访问媒体
GLOBAL_LOGIN_REQUIRED = True
## 使门户工作流公开,但同时设置 GLOBAL_LOGIN_REQUIRED = True ,以便只有登录的用户才能看到内容。

3 简单使用

可以实现视频上传、分类、字幕制作等操作,具体可参考:https://github.com/mediacms-io/mediacms/blob/main/docs/user_docs.md

3.1 上传

可以在 Upload中上传文件,可以是文件也可以是图片或者视频
需要注意的是:视频上传是成功后也无法立即查看,需要等转码完成后才可以
在这里插入图片描述

3.2 下载

下载文件
在这里插入图片描述

下载视频
在这里插入图片描述

3.3 添加标题或者字幕

需要准备一份vtt字幕文件
在这里插入图片描述
在这里插入图片描述

Language添加:
在这里插入图片描述

3.4 通过Tag/Category实现视频/文件分类

添加 Tag

在这里插入图片描述
在这里插入图片描述
添加标题即可
在这里插入图片描述

给任一资源分类

选择你要分类的视频或文件
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1715886.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2.10 mysql设置远程访问权限

2.10 mysql设置远程访问权限 目录1. 管理员运行mysql命令窗口2. 使用 root 用户重新登录 MySQL3. 修改用户权限4. 修改mysql安装目录下的my.ini 目录 说明: Mysql8.0 设置远程访问权限 一、Mysql8.0 设置远程访问权限 1. 管理员运行mysql命令窗口 2. 使用 root 用…

Java break细节(标签)

Java break细节(标签)continue也可以使用标签 break是用来跳出循环的。 当有多重循环时,可以配合标签来使用,决定跳出那一重循环。 尽量不要使用标签 1、不代标签时,默认跳出 break 所在的那重循环: 可见在 i 3 时&#xff0…

前端调用exe程序配置

前置条件 访问端安装好需要调用的exe程序 1、新建reg文件 先新建一个txt文件,重命名为xx.reg 点击是,确认更改 2、编写注册表内容 右键点击文件,用记事本打开,输入以下内容 将下面的${exeName}修改为自定义的程序名&#x…

react使用react-quill富文本编辑器自定义上传图片,添加handlers后编辑器不显示问题

Quill介绍 Quill 是一款 API 驱动、功能强大的现代富文本编辑器。它具有易于拓展、各平台表现一致性等优点。Quill 官方 1.0 版本于 2016 年 9 月发布,目前在 Github 上有41.8k Star。 官网地址:Quill - Your powerful rich text editor github仓库地…

剪画小程序:视频伪原创怎么制作?视频伪原创的几种制作方法分享!

什么是视频伪原创? 视频伪原创是指对已有的视频内容进行一定程度的修改和处理,使其在形式或部分细节上与原始视频有所不同,但保留了核心内容或主题。 视频伪原创包括以下一些常见操作: 剪辑重组:对原始视频进行剪辑…

整合SSM框架笔记

整合SSM框架笔记 Spring5 Spring MVC MyBatis Druid MySQL Thymeleaf 感谢尚硅谷课程:B站课程 前言 单Spring框架时,是Java工程。 Spring与Spring MVC可以共用一个配置文件,也可以不共用一个,推荐不共用一个。 Spring与Sp…

map优化多个if

原代码如下,多个按钮的点击操作,其中val是操作的按钮的标志 const operationConst {INSTALLAPP: installApp,STOPAPP: stopApp,HOME: home,CLEAR: clear...... } function moreOperation(val, list) {selectedList list && list.length 0 ?…

Pandas格式化DataFrame的浮点数列

在呈现数据的同时,以所需的格式显示数据也是一个重要而关键的部分。有时,值太大了,我们只想显示其中所需的部分,或者我们可以说以某种所需的格式。 让我们看看在Pandas中格式化DataFrame的数值列的不同方法。 例1:将…

数字化业务流程升级再造,解困基本半导体的CRM应用5年之痒

在新能源汽车、工业互联、5G通信、消费电子等需求的强力拉动下,以碳化硅为代表的第三代半导体产业迎来爆发式增长。 深圳基本半导体有限公司(以下简称“基本半导体”)是中国第三代半导体创新企业,专业从事碳化硅功率器件的研发与…

探索标准差与方差的奥秘

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、标准差与方差的基础理解 代码案例 二、标准差与方差的计算方法 方差的计算 标准差的…

Selenium 自动化测试工具(1) (Selenium 工作原理,常用API的使用)

文章目录 什么是自动化测试什么是测试工具:Selenium 工作原理(重要)Selenium API定位元素CSS 选择器xpath 定位元素 通过Java代码实现自动化1. 定位元素2. 关闭浏览器3. 获取元素文本4. 鼠标点击与键盘输入5. 清空内容6.打印信息 什么是自动化测试 关于自动化&…

11.3G全国矢量地名路网SHP地图

我们在《2015年中国电子地图数据》一文中,分享了一份26.8G的全矢量地名路网地图。 这里再分享一份11.3G的全国矢量地名路网地图,这份数据虽然比2015版更小,但它比那一版更新。 值得一提的是这份数据的图层更丰富,比2015版多32个…

于ThinkPHP开发的赛事报名小程序

基于ThinkPHP开发的赛事报名微信小程序 功能包括 1、参赛公告 2、会员中心(会员注册、登录、成绩查询、资料管理、参赛记录管理) 3、个人报名和企业报名 (身份证验证防止重复报名) 4、培训报名 5、查询是否在库人员,根…

收藏:六款好用的企业防泄密软件推荐

企业数据如同企业的生命线,保护数据安全免遭泄露变得至关重要。 面对日益复杂的网络安全威胁,一套高效的企业防泄密软件成为企业安全架构的基石。 以下是精心挑选的六款企业防泄密软件,它们在数据加密、访问控制、行为监控等方面表现出色&am…

Java开发-特殊文本文件,日志技术

目录 01.特殊文件,日志技术概述 02.特殊文件:Properties属性文件 ​编辑Properties案例 特殊文件:XML文件 XML的作用和应用场景 读取XML文件中的数据 XML的生成 约束XML文件的编写[了解] 日志技术 日志技术的体系 ​编辑 ​编辑 Logback日志框架的概述 Logback快…

JS 中怎么删除数组元素?有哪几种方法?

正文开始之前推荐一位宝藏博主免费分享的学习教程,学起来! 编号学习链接1Cesium: 保姆级教程+源码示例2openlayers: 保姆级教程+源码示例3Leaflet: 保姆级教程+源码示例4MapboxGL: 保姆级教程+源码示例splice() JavaScript中的splice()方法是一个内置的数组对象函数, 用于…

VM虚拟机共享文件夹fuse: bad mount point `/mnt/hgfs‘: No such file or directory

报错显示挂载点 /mnt/hgfs 不存在,你需要先创建这个目录。可以按照以下步骤进行操作: 创建挂载点目录: sudo mkdir -p /mnt/hgfs 手动挂载共享文件夹: sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other 确保每次启动时自动…

FFMPEG+ANativeWinodow渲染播放视频

前言 学习音视频开发,入门基本都得学FFMPEG,按照目前互联网上流传的学习路线,FFMPEGANativeWinodow渲染播放视频属于是第一关卡的Boss,简单但是关键。这几天写了个简单的demo,可以比较稳定进行渲染播放,便…

重庆耶非凡科技选品师项目大揭秘:成功背后的故事与经验

在电商行业迅猛发展的今天,选品师这一职业愈发受到市场的关注。重庆耶非凡科技有限公司凭借其专业的选品团队和科学的选品方法,成为众多商家关注的焦点。那么,该公司的选品师项目是否真的有成功的案例呢?接下来,我们将从多个角度…

备受推崇的公司文件加密文件推荐榜单

迄今为止,加密依然是最有效的用于保护数据、通讯安全的手段之一 在数字化时代,文件加密软件成为了保护个人和企业数据安全的重要工具。随着技术的不断进步,市场上涌现出了众多优秀的文件加密软件。 以下十款文件加密软件因其出色的性能、易…