自建视频托管平台:MediaCMS

目录

  • 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

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

给任一资源分类

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue项目运行页面禁止缩放【移动端和PC端都禁止缩放】解决方案

Vue项目运行页面禁止缩放【移动端和PC端都禁止缩放】解决方案,有的人手很J,总喜欢放大缩小,从而会导致页面错乱,以下是解决方案,简单有效 效果图PC:滚轮缩放和其他缩放都会禁止 移动端效果图:各种手机平板…

活动会议邀请函制作易企秀源码系统 清爽的画面轻轻滑动自动翻页 带完整的前后端搭建教程

系统概述 在当今数字化时代,活动会议的组织和宣传变得至关重要。为了满足这一需求,活动会议邀请函制作易企秀源码系统应运而生。它不仅为用户提供了一个便捷、高效的工具,还具备一系列令人瞩目的特色功能,为活动会议的成功举办提…

Redis篇 哈希表在redis中的命令

哈希命令 一.哈希表的基本认识二. 哈希表在redis中的命令1.hset,hget2.hdel3.hkeys,hvals4.hexists5.hgetall6.hmget7.hlen8.hincrby和hincrbyfloat 一.哈希表的基本认识 在JAVA数据结构中,我们就已经接触到了哈希表, 在当时,我们主要用到的哈…

香港Web3媒体:Techub News

Techub News:香港领先,世界一流的科技媒体平台 在数字化时代,Web3技术的崛起为媒体行业注入了新的活力。作为香港领先的Web3媒体平台,Techub News凭借其专业的团队、丰富的资源和创新的业务模式,成为了行业内的佼佼者。…

Go开发Prometheus客户端实战步骤

1、项目背景 在当前的IT运维环境中,我们的业务系统日益复杂,特别是针对特定的业务逻辑和定制化需求,传统的通用监控工具往往难以覆盖所有的监控场景。例如,考虑到一个复杂的电商平台,除了基础的服务器性能、网络状况等…

Python+Playwright自动化测试-playwright操作iframe(三)

1.简介 iframe 是web自动化里面一个比较头疼的测试场景,在Selenium中处理 iframe 需要切换来切换去非常麻烦。但是在playwright中,让其变得非常简单,我们在使用中无需切换iframe,直接定位元素即可。 2.iframe是什么 iframe就是我…

异步编程的魔力:如何显著提升系统性能

异步编程的魔力:如何显著提升系统性能 今天我们来聊聊一个对开发者非常重要的话题——异步编程。异步编程是提升系统性能的一种强大手段,尤其在需要高吞吐量和低时延的场景中,异步设计能够显著减少线程等待时间,从而提升整体性能。 异步设计如何提升系统性能? 我们通过…

文心智能体平台丨创建你的四六级学习小助手

引言 在人工智能飞速发展的今天,我们迎来了文心智能体平台。该平台集成了最先进的人工智能技术,旨在为用户提供个性化、高效的学习辅助服务。今天,我们将向大家介绍如何利用文心智能体平台,创建一个专属于你的四六级学习小助手。…

EthernetiP转modbusTCP网关在加氢催化中的应用

在现代工业控制系统中,Ethernet/IP和ModbusTCP是两种常见的通信协议。它们在各种设备和系统间传输数据,实现设备的监控和控制,尤其在催化加氢装置这类关键工业过程中发挥着不可或缺的作用。本文将深入探讨开疆智能KJ-EIP-206型Ethernet/IP转M…

博物馆三维实景vr展示

VR技术应用到地产行业的优势不言而喻,随着购房政策的进一步放宽,购房刚需者借助VR商铺样板间展示系统看房,远比之前跑楼盘更便捷高效。那么VR商铺全景展示具体有哪些好处呢? VR技术与商铺的结合,为客户带来了前所未有的购房体验。…

相对位姿估计

相对位姿估计 示意图 理论推导 离线数据库: P的位置 P [ X , Y , Z ] T P[X,Y,Z]^{T} P[X,Y,Z]T 相机内参 k 1 k_{1} k1​ 安卓手机: 相机内参 k 2 k_{2} k2​ 两个像素点位置 : p 1 和 p 2 p_1和p_2 p1​和p2​ 公式一:…

中断向量码

中断请求引脚 INTR-可屏蔽中断请求信号输入引脚 NMI-不可屏蔽中断请求信号输入引脚 #INTA-可屏蔽中断请求信号应答引脚 IF-中断允许标志位 TF-陷阱标志位 中断向量表 由中断向量码确定中断源的类型 存储结构 中断向量地址 中断程序入口地址 示例 中断类型 内存中结构 5个…

C语言 宏

目录 一、宏定义 1.1 预定义符号 1.2 预处理指令 #define 1.3 带有副作用宏定义 1.4 宏和函数的一个对比 ​编辑 1.5 #undef 二、条件编译 2.1 #if、#else、#elif、#endif 2.2 #ifdef和#ifndef 2.3 C语言中如何通过条件编译来预防头文件的重复包含? 一、宏定义 在C语…

cobaltstrike启动teamserver报错Picked up _JAVA_OPTIONS:

1.报错如下图所示: 解决方法: 这是因为系统环境变量里多了一个变量: _JAVA_OPTIONS 只需要删掉它就行了! 1、windows下在环境变量里找到、然后删除就行了 2、linux下、在/etc/profile文件中添加以下命令(可添加至第一行…

uniapp或微信小程序一些问题解决

1.按钮边框如何去除? 参考博主:微信小程序按钮去不掉边框_微信小程序button去掉边框-CSDN博客文章浏览阅读1k次。最近在学uni-app,顺便自己写个小程序。左上角放了个button,可边框怎么也去不掉…原来微信小程序的按钮要去掉边框要…

重构2:重构的原则

最近在看重构2:改善既有代码的设计这本书,对于代码重构指导非常有帮助,然后也是做个笔记记录下,以下是我阅读本书的前两章的时候整理的思维导图:

用户流失分析:如何使用Python训练一个用户流失预测模型?

引言 在当今商业环境中,客户流失分析是至关重要的一环。随着市场竞争的加剧,企业需要更加注重保持现有客户,并深入了解他们的离开原因。本文探讨了用户流失分析的核心概念以及如何构建客户流失预测模型的案例。通过分析用户行为数据和交易模式…

动手学操作系统(四、MBR读取硬盘加载Loader)

动手学操作系统(四、MBR读取硬盘加载Loader) 在上一节中,我们学习了使用MBR来直接控制显卡进行显示,在这一节中我们学习如何让MBR来操作硬盘,加载Loader来完成操作系统的后续启动过程。 文章目录 动手学操作系统&…

005、API_数据结构

键的数据结构类型,它们分别是: string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集 合),这些只是Redis对外…

pg_lakehouse 与 datafusion

原理分析 pg_lakehouse 是 ParadeDB 推出的一个开源插件,支持对多种数据湖里的数据做分析计算。它的出现,使得 Postgres 能够像访问本地数据一样轻松访问 S3 等对象存储,轻松访问 Delta Lake 上的表格,具备数据湖分析能力。 pg_…