mirror of
https://github.com/danielsogl/awesome-cordova-plugins.git
synced 2025-02-01 02:53:03 +08:00
feat(video-capture-plus): add Video Capture Plus plugin (#1538)
* feat(plugin): Video Capture Plus fix #709 * Updated interfaces
This commit is contained in:
parent
efae1be116
commit
385da017a0
152
src/@ionic-native/plugins/video-capture-plus/index.ts
Normal file
152
src/@ionic-native/plugins/video-capture-plus/index.ts
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
import { Injectable } from '@angular/core';
|
||||||
|
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||||
|
|
||||||
|
export interface MediaFile {
|
||||||
|
/**
|
||||||
|
* The name of the file, without path information.
|
||||||
|
*/
|
||||||
|
name: string;
|
||||||
|
/**
|
||||||
|
* The full path of the file, including the name.
|
||||||
|
*/
|
||||||
|
fullPath: string;
|
||||||
|
/**
|
||||||
|
* The file's mime type
|
||||||
|
*/
|
||||||
|
type: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The date and time when the file was last modified.
|
||||||
|
*/
|
||||||
|
lastModifiedDate: Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The size of the file, in bytes.
|
||||||
|
*/
|
||||||
|
size: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves the format information of the media file.
|
||||||
|
* @param {Function} successCallback
|
||||||
|
* @param {Function} errorCallback
|
||||||
|
*/
|
||||||
|
getFormatData(successCallback: (data: MediaFileData) => any, errorCallback?: (err: any) => any);
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface MediaFileData {
|
||||||
|
/**
|
||||||
|
* The actual format of the audio and video content.
|
||||||
|
*/
|
||||||
|
codecs: string;
|
||||||
|
/**
|
||||||
|
* The average bitrate of the content. The value is zero for images.
|
||||||
|
*/
|
||||||
|
bitrate: number;
|
||||||
|
/**
|
||||||
|
* The height of the image or video in pixels. The value is zero for audio clips.
|
||||||
|
*/
|
||||||
|
height: number;
|
||||||
|
/**
|
||||||
|
* The width of the image or video in pixels. The value is zero for audio clips.
|
||||||
|
*/
|
||||||
|
width: number;
|
||||||
|
/**
|
||||||
|
* The length of the video or sound clip in seconds. The value is zero for images.
|
||||||
|
*/
|
||||||
|
duration: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface VideoCapturePlusOptions {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The number of videos to record, default 1 (on iOS always 1)
|
||||||
|
*/
|
||||||
|
limit?: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Max duration in seconds, default 0, which is 'forever'
|
||||||
|
*/
|
||||||
|
duration?: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set to true to override the default low quality setting
|
||||||
|
*/
|
||||||
|
highquality?: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set to true to override the default backfacing camera setting.
|
||||||
|
* You'll want to sniff the useragent/device and pass the best overlay based on that.. assuming iphone here
|
||||||
|
*/
|
||||||
|
frontcamera?: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* put the png overlay in your assets folder
|
||||||
|
*/
|
||||||
|
portraitOverlay?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* not passing an overlay means no image is shown for the landscape orientation
|
||||||
|
*/
|
||||||
|
landscapeOverlay?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* iOS only
|
||||||
|
*/
|
||||||
|
overlayText?: string;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @beta
|
||||||
|
* @name Video Capture Plus
|
||||||
|
* @description
|
||||||
|
* This plugin offers some useful extras on top of the default Media Capture Plugin capabilities:
|
||||||
|
* - HD recording.
|
||||||
|
* - Starting with the front camera.
|
||||||
|
* - A custom overlay (currently iOS only).
|
||||||
|
*
|
||||||
|
* @usage
|
||||||
|
* ```typescript
|
||||||
|
* import { VideoCapturePlus, VideoCapturePlusOptions, MediaFile } from '@ionic-native/video-capture-plus';
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* constructor(private videoCapturePlus: VideoCapturePlus) { }
|
||||||
|
*
|
||||||
|
* ...
|
||||||
|
*
|
||||||
|
* const options: VideoCapturePlusOptions = {
|
||||||
|
* limit: 1,
|
||||||
|
* highquality: true,
|
||||||
|
* portraitOverlay: 'assets/img/camera/overlay/portrait.png',
|
||||||
|
* landscapeOverlay: 'assets/img/camera/overlay/landscape.png'
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* this.videoCapturePlus.captureVideo(options).then(mediafile: MediaFile[] => console.log(mediafile), error => console.log('Something went wrong'));
|
||||||
|
*
|
||||||
|
* ```
|
||||||
|
* @interfaces
|
||||||
|
* MediaFile
|
||||||
|
* MediaFileData
|
||||||
|
* VideoCapturePlusOptions
|
||||||
|
*/
|
||||||
|
@Plugin({
|
||||||
|
pluginName: 'VideoCapturePlus',
|
||||||
|
plugin: 'https://github.com/EddyVerbruggen/VideoCapturePlus-PhoneGap-Plugin.git',
|
||||||
|
pluginRef: 'window.plugins.videocaptureplus',
|
||||||
|
repo: 'https://github.com/EddyVerbruggen/VideoCapturePlus-PhoneGap-Plugin',
|
||||||
|
platforms: ['Android', 'iOS']
|
||||||
|
})
|
||||||
|
@Injectable()
|
||||||
|
export class VideoCapturePlus extends IonicNativePlugin {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Starts recordings
|
||||||
|
* @param [options] {VideoCapturePlusOptions} Configure options
|
||||||
|
* @return {Promise<MediaFile[]>}
|
||||||
|
*/
|
||||||
|
@Cordova({
|
||||||
|
callbackOrder: 'reverse'
|
||||||
|
})
|
||||||
|
captureVideo(options?: VideoCapturePlusOptions): Promise<MediaFile[]> { return; }
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user