为什么在iOS上使用Ionic cordovaCapture(Apache Cordova媒体捕获插件)录制低分辨率视频(480x360)?

Mik*_*kel 6 html5-video phonegap-plugins cordova ionic-framework cordova-plugins

在Ionic项目中,我正在使用cordova捕获插件录制视频,该插件实际上基于Apache媒体捕获插件.

Android用户可以选择视频尺寸,但在iOS上没有按钮.我正在测试一台录制在1920x1080的iPhone 5,但是我的Ionic应用视频是480x360,注意长宽比是4:3而不是16:9.我想要至少720p的视频尺寸.

我阅读了插件文档,只有三个选项; 持续时间和限制.这是否意味着无法设置视频的尺寸?

var options = { 
    limit: 1, 
    duration: 15,
    quality: 1 // Only for Android, Video quality parameter, 0 means low quality, suitable for MMS messages, and value 1 means high quality
}; 

$cordovaCapture.captureVideo(options)
    .then(function(videoData) {});
Run Code Online (Sandbox Code Playgroud)

除了我看到配置数据部分.我不知道我应该使用它.我尝试添加widthheight选项对象,但我有与以前相同的结果.

var options = { 
    limit: 1, 
    duration: 15,
    type: "video/quicktime",
    height: 720,
    width: 1280,
    quality: 1
};
Run Code Online (Sandbox Code Playgroud)

它说任何平台都不支持,这不是很奇怪吗?:-)

任何平台都不支持.所有配置数据阵列都是空的.

知道我该怎么办?

Mik*_*kel 3

我之前修复了这个问题,我编辑了 captureVideo 插件。

无法为所有设备设置分辨率。如果您选择高,则意味着某些设备中为 1080p,例如旧设备中为 720p。

在 JS 上,我向插件选项添加了一个新属性“ios_quality”:

var options = { 
    limit: 1, 
    duration: 20,
    ios_quality: 'high'
};
Run Code Online (Sandbox Code Playgroud)

在 CDVCapture.m 上,我在里面添加了质量选项 if ([pickerController respondsToSelector:@selector(cameraCaptureMode)]) {}

// iOS 4.0
if ([pickerController respondsToSelector:@selector(cameraCaptureMode)]) {
    pickerController.cameraCaptureMode = UIImagePickerControllerCameraCaptureModeVideo;

    NSNumber* quality = [options objectForKey:@"ios_quality"];

    if ([quality isEqual:@("compression_none_640x480")]){ //Compression none
        pickerController.videoQuality = UIImagePickerControllerQualityType640x480;
    }
    else if ([quality isEqual:@("compression_none_960x540")]){ //Compression none
        pickerController.videoQuality = UIImagePickerControllerQualityTypeIFrame960x540;
    }
    else if ([quality isEqual:@("compression_none_1280x720")]){ //Compression none
        pickerController.videoQuality = UIImagePickerControllerQualityTypeIFrame1280x720;
    }
    else if ([quality isEqual:@("high")]){ //Compression low
        pickerController.videoQuality = UIImagePickerControllerQualityTypeHigh;
    }
    else if ([quality isEqual:@("medium")]){ //Compression medium
        pickerController.videoQuality = UIImagePickerControllerQualityTypeMedium;
    }
    else if ([quality isEqual:@("low")]){ //strongest compression, resolution 192x144
        pickerController.videoQuality = UIImagePickerControllerQualityTypeLow;
    }

    // pickerController.videoQuality = UIImagePickerControllerQualityTypeHigh;
    // pickerController.cameraDevice = UIImagePickerControllerCameraDeviceRear;
    // pickerController.cameraFlashMode = UIImagePickerControllerCameraFlashModeAuto;
}
Run Code Online (Sandbox Code Playgroud)