【问题标题】:Impossible to pick video from gallery/library - phonegap/cordova无法从画廊/图书馆挑选视频 - phonegap/cordova
【发布时间】:2015-06-10 10:12:12
【问题描述】:

我正在使用 windows phone、cordova/phonegap。 如何从图库中挑选视频,因为它是图片?

官方插件似乎只适用于图片。

代码如下:

function getVideo() {
    var options = { quality: 80 };
    options["sourceType"] = 0 | 2; 
    options["mediaType"] = 1;
    navigator.camera.getPicture(onVideoSuccess, onFail, options);    
}


var onVideoSuccess = function (fileuri) {
    console.log("fileuri " + fileuri);
}


var onFail = function (err) {
    console.log("onFail");
}

这样我只能选择图片,要不要更改任何参数来选择视频文件?

谢谢

【问题讨论】:

    标签: javascript cordova windows-phone cordova-plugins


    【解决方案1】:

    这适用于 Cordova 5.4.1

    navigator.camera.getPicture(onSuccess, onFail, { quality: 100,
        destinationType: Camera.DestinationType.FILE_URI,
        sourceType: Camera.PictureSourceType.PHOTOLIBRARY,
        mediaType: Camera.MediaType.VIDEO
      });
    

    相关文档:https://www.npmjs.com/package/cordova-plugin-camera#module_Camera.DestinationType

    更新 - 我收回这一点,它适用于在 UI 中选择视频,但我无法让 onSuccess 处理程序中的 FILE_URI 获取除空字符串之外的任何内容,所以我选择视频后无法执行任何操作。

    【讨论】:

    • 我已经有几年没有进入这种情况了,所以我不能确定。我似乎记得当“官方”相机插件长期存在问题时,我不得不使用“非官方”相机插件来解决这个问题。
    • 我发现相机插件可以工作,但<input type='file' /> 不行。我正在使用fileEntry.moveTo(),它正在删除文件,即使它在我的手机上仍然可见。看起来某些文件上的fileEntry.moveTo() 并没有完全删除它们,表明它们仍然存在而它们不存在。我最终改用fileEntry.copyTo(),因此损坏的文件不会尝试进入我的系统。损坏的文件是我的问题。
    • @tyler.frankenstein 请问您使用的“非官方”插件是什么?我们甚至没有在图库中看到可供选择的视频缩略图
    【解决方案2】:

    找了好久,不过通过设置MediaType确实可以。

    var pictureSource; 
    var destinationType; 
    var mediaType;
    
    document.addEventListener("deviceready", onDeviceReady, false);
    
    function onDeviceReady() {
        pictureSource = navigator.camera.PictureSourceType;
        destinationType = navigator.camera.DestinationType;
        mediaType = navigator.camera.MediaType;
    }
    
    navigator.camera.getPicture(onPhotoURISuccess, onFail, {
        destinationType: destinationType.FILE_URI,
        mediaType: mediaType.VIDEO,
        sourceType: source
    });
    
    function onPhotoURISuccess(imageURI) {
        console.log(imageURI);
    }
    
    function onFail(message) {
        console.log(message);
    }
    

    在这个答案中找到它:Pick an image / video using PhoneGap in Android 更多信息:http://docs.phonegap.com/en/1.4.0/phonegap_camera_camera.md.html#Camera

    仅供参考:

    Camera.MediaType = { 
        PICTURE: 0,             // allow selection of still pictures only. DEFAULT. Will return format specified via DestinationType
        VIDEO: 1,               // allow selection of video only, WILL ALWAYS RETURN FILE_URI
        ALLMEDIA : 2            // allow selection from all media types
    

    所以在你的代码中,你应该改变

    options["sourceType"] = 0 | 2; 
    

    到:

    options["sourceType"] = 1;
    

    仅选择视频,或:

    options["sourceType"] = 0;
    

    只选择图片,或:

    options["sourceType"] = 2; 
    

    同时选择。

    【讨论】:

    • 现在没时间验证,你亲自检查了吗?
    • 是的,它确实有效。但是,您的配置中有一个小错误。我已经更新了我的答案。
    猜你喜欢
    • 1970-01-01
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-04
    • 2017-05-13
    • 2021-10-06
    • 1970-01-01
    相关资源
    最近更新 更多