当前位置: 首页 > backend >正文

django-ckeditor配置html5video实现视频上传与播放

1. 手动下载插件

html5video的插件:https://github.com/bahriddin/ckeditor-html5-video
解压插件,将html5video放到ckeditor/ckeditor/plugins的目录里。

2. 修改ckeditor源码

1. 通过使用ckeditor->config.js->extraPlugins配置启用html5video插件

添加:

config.extraPlugins = 'html5video';

CKEDITOR.editorConfig = function( config ) {// Define changes to default configuration here. For example:// config.language = 'fr';// config.uiColor = '#AADC6E';config.allowedContent = true;config.extraPlugins = 'html5video';};

2. 将html5video加到CKEDITOR_CONFIGS里

CKEDITOR_CONFIGS = {'default': {'toolbar': 'Custom',  # 工具条功能'height': 600,  # 编辑器高度'width': 800,  # 编辑器宽'toolbar_Custom':[['Bold', 'Italic', 'Underline'],  # 粗体、斜体、下划线['Link', 'Unlink'],  # 链接、取消链接['NumberedList', 'BulletedList'],  # 有序、无序列表['Format'],  # 格式(如标题、段落)['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'],  # 左对齐、居中、右对齐、两端对齐['Image', 'Html5video', 'Table', 'HorizontalRule'],  # 图片、表格、分割线['Undo', 'Redo'],  # 撤销、重做['Source'],  # 源代码模式],'stylesSet': [{'name': '1.5 倍行距', 'element': 'p', 'attributes': {'style': 'line-height: 1.5;'}}],'extraPlugins': ['html5video', 'widget', 'widgetselection', 'clipboard', 'lineutils'],},
}

 3. 前台渲染页面,video标签有播放控件

由于ckeditor渲染到页面上的代码是:

<div class="ckeditor-html5-video" style="text-align: center;">
       <video controlslist="nodownload" src="/media/upload/2025/07/08/ljzy_03.mp4">&nbsp;                 </video>
</div>

发现controlslist="nodownload"属性没有播放按钮,需要改成controls属性。

所以在渲染页面需要使用js进行修改:

<script>document.addEventListener('DOMContentLoaded', () => {const fixVideos = () => {try {const videos = document.querySelectorAll('.ckeditor-html5-video video');if (!videos.length) {console.warn('No videos found in .ckeditor-html5-video.');return;}videos.forEach((video, index) => {video.controls = true; // 添加 controlsvideo.removeAttribute('controlslist'); // 移除 controlslistconsole.log(`Fixed video ${index + 1}: Added controls, removed controlslist.`);});} catch (error) {console.error('Error fixing video controls:', error);}};// 初始修复fixVideos();// CKEditor 异步加载if (window.CKEDITOR) {CKEDITOR.on('instanceReady', fixVideos);CKEDITOR.on('change', () => setTimeout(fixVideos, 100));}// 动态内容监听const observer = new MutationObserver(fixVideos);observer.observe(document.body, { childList: true, subtree: true });});
</script>

参考文献:

django-ckeditor配置html5video上传视频 - SonnyZhang - 博客园

http://www.xdnf.cn/news/14946.html

相关文章:

  • MySQL数据库访问(C/C++)
  • Qt的第一个程序(2)
  • C++ -- string类的模拟实现
  • 单点登录SSO的演进和最佳实践,含springBoot 实现(Java版本)
  • .NET9 实现 JSON 序列化和反序列化(Newtonsoft.Json System.Text.Json)性能测试
  • 用c++做游戏开发至少要掌握哪些知识?
  • 合成生物学论坛|2025合成生物学期刊高质量发展论坛8月上海举办
  • 在线学堂-4.媒资管理模块(三)
  • 暑假算法日记第三天
  • D触发器实现2分频verilog及电路
  • 解决Android Studio不能同时打开多个文件问题
  • 微算法科技(NASDAQ: MLGO)探索Grover量子搜索算法,利用量子叠加和干涉原理,实现在无序数据库中快速定位目标信息的效果。
  • 2048-控制台版本
  • K8s-服务发布进阶
  • 分布式事务解决方案(二)
  • 电信、移动、联通、广电跨运营商网速慢原因
  • Linux国产与国外进度对垒
  • 408第三季part2 - 计算机网络 - 传输层
  • C++高频知识点(二)
  • std::vector<bool>有什么特殊的吗
  • 植物大战僵尸杂交重制版1.0,经典焕新,重燃策略塔防之火
  • 极简的神经网络反向传播例子
  • Vue计算属性(computed)全面解析:原理、用法与最佳实践
  • Web攻防-XMLXXE上传解析文件预览接口服务白盒审计应用功能SRC报告
  • 【Python】文件应用: 查找读取的文件内容
  • list和list中的注意事项
  • 使用ADSL接入Internet,用户端需安装什么协议?
  • Kubernetes 集群相关规范
  • 手机电工仿真软件更新了
  • 让你的asp.net网站在调试模式下也能在局域网通过ip访问