【问题标题】:Dropzone js Not Load Video Thumbnail From ServerDropzone js不从服务器加载视频缩略图
【发布时间】:2019-09-19 09:24:40
【问题描述】:

从服务器加载上传的 video 时,dropzone js 出现问题。

dropzone 加载图片缩略图,但未加载视频缩略图。

从这个link检查它

我想从 ajax 请求加载视频。这是我的代码:

     this.on("error", function(file, response) {
    $(file.previewElement).find('.dz-error-message').tooltip().attr('data-original-title',response);
  }); 
$.ajax({
    url: 'https://localhost/asnaf2019/userpanel/uploader.php',
    type: 'post',
    data: {request: 2},
    dataType: 'json',
    success: function(response){
        $.each(response, function(key,value) {
            var mockFile = { name: value.name };
            myDropzone_video.emit("addedfile", mockFile);
            myDropzone_video.emit("thumbnail", mockFile, value.path);
            myDropzone_video.emit("complete", mockFile);
        });
    }
});   
  this.on('addedfile', function(origFile) {
    var fileReader = new FileReader();
    fileReader.addEventListener("load", function(event) {
      var origFileIndex = myDropzone_video.files.indexOf(origFile);
      myDropzone_video.files[origFileIndex].status = Dropzone.ADDED;
      var blob = new Blob([fileReader.result], {type: origFile.type});
      var url = URL.createObjectURL(blob);
      var video = document.createElement('video');
      var timeupdate = function() {
        if (snapImage()) {
          video.removeEventListener('timeupdate', timeupdate);
          video.pause();
        }
      };
      video.addEventListener('loadeddata', function() {
        if (snapImage()) {
          video.removeEventListener('timeupdate', timeupdate);
        }
      });
      if (!origFile.type.match(/mp4|MP4/)) {
        myDropzone_video.enqueueFile(origFile);
        myDropzone_video.removeFile(origFile);
        return;
      }
      var snapImage = function() {
        var canvas = document.createElement('canvas');
        canvas.width = video.videoWidth;
        canvas.height = video.videoHeight;
        canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height);
        var arrText = new Array();
        var  image = canvas.toDataURL();
        var success = image.length > 100000;
        if (success) {
        var img = document.getElementsByClassName('img-preview');
        var l = img.length;
        $.each(img,function(){
          arrText.push(image);
        });
        for(var i=0; i < l; i++){
          var t = img[i];
          myDropzone_video.emit("thumbnail", origFile, arrText[i]);  
        }
        URL.revokeObjectURL(url);
        }
        return success;
      };
      video.addEventListener('timeupdate', timeupdate);
      video.preload = 'metadata';
      video.src = url;
      video.muted = true;
      video.playsInline = true;
      video.play();
    });
    fileReader.readAsArrayBuffer(origFile);
  });

代码运行时显示此错误:

TypeError:FileReader.readAsArrayBuffer 的参数 1 没有 实现接口 Blob。

我该如何解决这个问题

【问题讨论】:

    标签: javascript jquery dropzone


    【解决方案1】:

    我用这种方式解决问题

    $.each(response, function(key,value) {
              var mockFile = { name: value.name};
              if (value.type.match(/mp4|MP4/)){ // Preview video only from type mp4
                myDropzone_video.options.addedfile.call(myDropzone_video, mockFile);
                var src = value.path;
                var video = document.createElement('video');
                video.src = src;
                video.addEventListener('loadeddata', function() {
                  var canvas = document.createElement('canvas');
                  canvas.width = video.videoWidth;
                  canvas.height = video.videoHeight;
                  canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height);
                  var dataURI = canvas.toDataURL('image/png');
                  myDropzone_video.emit("thumbnail", mockFile, dataURI);
                });
              myDropzone_video.emit("complete", mockFile);
             }
          });
    

    这个问题我已经解决了。

    【讨论】:

      猜你喜欢
      • 2015-06-14
      • 1970-01-01
      • 2019-06-13
      • 2014-05-31
      • 2018-04-18
      • 2016-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多