访问使用Cordova插件创建的媒体文件,以便使用gifshotJS库在Meteor脚本中进行本地使用

时间:2016-04-21 13:56:56

标签: javascript android cordova meteor cordova-plugins

让我的问题简短明了:

如何访问cordova-plugin-media-capture函数capture.captureVideo()生成的mediaFile,并使用gifShot JS' createGIF()在Android设备上运行到GIF中?

我遇到了这个问题,如果我直接将其中一个作为其中一个,那么生成的mediaFile的fullPath(file:/ URI)和localURL(cdvfile://)都不允许使用gifshot视频文件的路径,我收到以下消息:

  

跨源资源共享策略拒绝跨源图像加载。

我知道文件插件成功创建了视频(我可以在galery中看到它们,因此它们会永久保存在设备上)。 而且我也知道gifShot可以与mp4视频一起使用,因为我已经在项目目录中创建了一个文件夹,其中包含一个正确呈现的视频。我也很清楚,遗憾的是,JavaScript通常不允许访问设备/ PC上的文件,但Cordova是否提供了解决方法?

有人可以简单解释一下,我如何访问保存的文件?我是否需要cordova插件" cordova-plugin-file"和" cordova-plugin-file-transfer"以及如何使用它们?

我的代码: Javascript:

import gifshot from 'gifshot';

Template.gifshotTest.rendered = function () {
    var $$ = Dom7;
    var myapp = new Framework7();
    };

Template.gifshotTest.events({
    'click .gifShotUpload': function () {
        Meteor.call("console", "Button clicked");

        // capture callback
        var captureSuccess = function (mediaFiles) {
            path = mediaFiles[0].localURL;
            Meteor.call("console", mediaFiles[0]);
            gifshot.createGIF({video: path}, function(obj) {
                Meteor.call("console", "---> gifshot obj:");
                Meteor.call("console", obj);
                    if (!obj.error) {
                        var image = obj.image;
                        $('.giffy').attr("src", image);
                        Meteor.call("console", image);
                    }
            });
        };

// capture error callback
        var captureError = function (error) {
            navigator.notification.alert('Error code: ' + error.code, null, 'Capture Error');
        };

// start video capture
        navigator.device.capture.captureVideo(captureSuccess, captureError, {limit: 1, duration: 5, quality: 1});
    }
});

控制台日志

  

I20160421-15:25:36.283(2)?单击按钮

     

I20160421-15:25:42.158(2)?空

     

I20160421-15:25:42.166(2)? {name:' VID_20160421_152544.mp4',

     

I20160421-15:25:42.167(2)? localURL:' cdvfile://localhost/sdcard/DCIM/Camera/VID_20160421_152544.mp4' ;,

     

I20160421-15:25:42.167(2)?键入:' video / mp4',

     

I20160421-15:25:42.168(2)? lastModified:null,

     

I20160421-15:25:42.168(2)? lastModifiedDate:1461245147000,

     

I20160421-15:25:42.169(2)?大小:461498,

     

I20160421-15:25:42.169(2)?开始:0,

     

I20160421-15:25:42.169(2)?结束:0,

     

I20160421-15:25:42.170(2)? fullPath:' file:/storage/emulated/0/DCIM/Camera/VID_20160421_152544.mp4' }

     

I20160421-15:25:44.656(2)(android:http://localhost:12680/:0)跨源资源共享策略拒绝跨源图像加载。

包含Cordova插件(Cordova版本3.8.3)

cordova-plugin-file@4.1.1

cordova-plugin-file-transfer@1.5.1

cordova-plugin-media-capture@1.2.0

感谢所有帮助我了解Cordova和其他图书馆处理设备上文件的方式。

1 个答案:

答案 0 :(得分:0)

如果文件已成功存储在设备中,则可以使用cordova-fileopener-plugin打开相同的用途。我还建议您更新您的cordova版本,因为您使用的版本太旧了