kindeditor老版本version 4.1.10 bug踩坑:视频上传无法播放的问题

我要冲啦个人网站建设2020-03-20php
  1. MP4视频文件不是支持格式
  2. 原本的视频上传后,在前台页面生成后,会提示播放插件不支持的问题
  3. 使用ckplayer视频播放插件

步骤一: 修改允许上传的视频格式

修改编辑器目录下的 kendeditor/php/upload_json.php,大概在20行左右,在media类型中添加MP4
  1. $ext_arr = array(
  2. 'image' => array('gif', 'jpg', 'jpeg', 'png', 'bmp'),
  3. 'flash' => array('swf', 'flv'),
  4. 'media' => array('swf', 'flv', 'mp3', 'mp4', 'wav', 'wma', 'wmv', 'mid', 'avi', 'mpg', 'asf', 'rm', 'rmvb'),
  5. 'file' => array('doc', 'docx', 'xls', 'xlsx', 'ppt', 'htm', 'html', 'txt', 'zip', 'rar', 'gz', 'bz2'),
  6. );

步骤二:修改kindeditor.js 905行左右,加入需要支持的视频格式,MP4生成的embed的type为application/x-shockwave-flash;

  1. function _mediaType(src) {
  2. if (/\.(rm|rmvb)(\?|$)/i.test(src)) {
  3. return 'audio/x-pn-realaudio-plugin';
  4. }
  5. if (/\.(swf|flv|mp4)(\?|$)/i.test(src)) { //添加MP4
  6. return 'application/x-shockwave-flash';
  7. }
  8. return 'video/x-ms-asf-plugin';
  9. }

步骤三:下载ckplayer,将插件保存到项目的kendeditor/plugins文件夹中

步骤四:修改kineditor提交视频后生成的embed,按照ckplayer插件简单调用的格式。

  1. ckplayer播放本地视频的原理是调用ckplayer.swf打开本地的视频,下面的修改kindeditor.js中920行左右embed标签相关的代码,加入ckplayer可以识别的参数flashvars:
  1. function _mediaEmbed(attrs) {
  2. var html = '<embed '; //最后有个空格
  3. //获取当前网址,如: http://localhost:8083/uimcardprj/share/meun.jsp
  4. var curWwwPath=window.document.location.href;
  5. //获取主机地址之后的目录,如: uimcardprj/share/meun.jsp
  6. var pathName=window.document.location.pathname;
  7. var pos=curWwwPath.indexOf(pathName);
  8. //获取主机地址,如: http://localhost:8083
  9. var localhostPath=curWwwPath.substring(0,pos);
  10. _each(attrs, function(key, val) {
  11. if(key == 'src') {
  12. html += key + '="' + K.options.pluginsPath
  13. + 'ckplayer/ckplayer.swf" ' + 'flashvars="video=' //.swf后又个空格
  14. + localhostPath + val + '" '; //‘" ’这里最后有个空格
  15. } else {
  16. html += key + '="' + val + '" '; //‘" ’这里最后有个空格
  17. }
  18.  
  19. });
  20. html += '/></embed>';
  21. return html;
  22. }
  1. 添加kindeditor生成embed时,要遍历的属性数组,添加上 falshvars,不然我们上面的操作再生成后,就会被忽略;大约在kindeditor.js的298行中:

embed : ['id', 'class', 'src', 'width', 'height', 'type', 'loop', 'autostart', 'quality', '.width', '.height', 'align', 'allowscriptaccess', 'flashvars'], //添加falshvars属性

注意:

步骤五:前台引入ckplayer,js

在需要播放视频的页面,引入ckplayer.js,生成该播放器;

ckplayer播放器的配置可直接才ckplayer.js中修改,具体文档请参照操作手册

文章关键词
kindeditor
bug
踩坑
视频上传无法播放