mirror of
https://github.com/danielsogl/awesome-cordova-plugins.git
synced 2025-01-31 18:49:43 +08:00
parent
4a0f082158
commit
7a53013819
@ -83,6 +83,7 @@ import { TouchID } from './plugins/touchid';
|
||||
import { TextToSpeech } from './plugins/text-to-speech';
|
||||
import { TwitterConnect } from './plugins/twitter-connect';
|
||||
import { Vibration } from './plugins/vibration';
|
||||
import { VideoEditor } from './plugins/video-editor';
|
||||
import { VideoPlayer } from './plugins/video-player';
|
||||
import { WebIntent } from './plugins/webintent';
|
||||
import { Zip } from './plugins/zip';
|
||||
@ -118,6 +119,7 @@ export * from './plugins/sms';
|
||||
export * from './plugins/spinnerdialog';
|
||||
export * from './plugins/toast';
|
||||
export * from './plugins/twitter-connect';
|
||||
export * from './plugins/video-editor';
|
||||
export * from './plugins/video-player';
|
||||
export {
|
||||
ActionSheet,
|
||||
@ -254,6 +256,7 @@ window['IonicNative'] = {
|
||||
Transfer: Transfer,
|
||||
TextToSpeech: TextToSpeech,
|
||||
TwitterConnect: TwitterConnect,
|
||||
VideoEditor: VideoEditor,
|
||||
VideoPlayer: VideoPlayer,
|
||||
Vibration: Vibration,
|
||||
WebIntent: WebIntent,
|
||||
|
200
src/plugins/video-editor.ts
Normal file
200
src/plugins/video-editor.ts
Normal file
@ -0,0 +1,200 @@
|
||||
import {Plugin, Cordova} from './plugin';
|
||||
|
||||
export interface TranscodeOptions {
|
||||
|
||||
/** The path to the video on the device. */
|
||||
fileUri: string;
|
||||
|
||||
/** The file name for the transcoded video */
|
||||
outputFileName: string;
|
||||
|
||||
/** Instructions on how to encode the video. Android is always mp4 */
|
||||
outputFileType?: number;
|
||||
|
||||
/** Should the video be processed with quailty or speed in mind. iOS only */
|
||||
optimizeForNetworkUse?: number;
|
||||
|
||||
/** Save the new video the library. Not supported in windows. Defaults to true */
|
||||
saveToLibrary?: boolean;
|
||||
|
||||
/** Delete the original video. Android only. Defaults to false */
|
||||
deleteInputFile?: boolean;
|
||||
|
||||
/** iOS only. Defaults to true */
|
||||
maintainAspectRatio?: boolean;
|
||||
|
||||
/** Width of the result */
|
||||
width?: number;
|
||||
|
||||
/** Height of the result */
|
||||
height?: number;
|
||||
|
||||
/** Bitrate in bits. Defaults to 1 megabit (1000000). */
|
||||
videoBitrate?: number;
|
||||
|
||||
/** Frames per second of the result. Android only. Defaults to 24. */
|
||||
fps?: number;
|
||||
|
||||
/** Number of audio channels. iOS only. Defaults to 2. */
|
||||
audioChannels?: number;
|
||||
|
||||
/** Sample rate for the audio. iOS only. Defaults to 44100*/
|
||||
audioSampleRate?: number;
|
||||
|
||||
/** Sample rate for the audio. iOS only. Defaults to 128 kilobits (128000). */
|
||||
audioBitrate?: number;
|
||||
|
||||
/** Not supported in windows, progress on the transcode. info will be a number from 0 to 100 */
|
||||
progress?: (info: number) => void;
|
||||
}
|
||||
|
||||
export interface TrimOptions {
|
||||
|
||||
/** Path to input video. */
|
||||
fileUri: string;
|
||||
|
||||
/** Time to start trimming in seconds */
|
||||
trimStart: number;
|
||||
|
||||
/** Time to end trimming in seconds */
|
||||
trimEnd: number;
|
||||
|
||||
/** Output file name */
|
||||
outputFileName: string;
|
||||
|
||||
/** Progress on transcode. info will be a number from 0 to 100 */
|
||||
progress?: (info: any) => void;
|
||||
|
||||
}
|
||||
|
||||
export interface CreateThumbnailOptions {
|
||||
|
||||
/** The path to the video on the device */
|
||||
fileUri: string;
|
||||
|
||||
/** The file name for the JPEG image */
|
||||
outputFileName: string;
|
||||
|
||||
/** Location in the video to create the thumbnail (in seconds) */
|
||||
atTime?: number;
|
||||
|
||||
/** Width of the thumbnail. */
|
||||
width?: number;
|
||||
|
||||
/** Height of the thumbnail. */
|
||||
height?: number;
|
||||
|
||||
/** Quality of the thumbnail (between 1 and 100). */
|
||||
quality?: number;
|
||||
|
||||
}
|
||||
|
||||
export interface GetVideoInfoOptions {
|
||||
|
||||
/** The path to the video on the device. */
|
||||
fileUri: string
|
||||
|
||||
}
|
||||
|
||||
export interface VideoInfo {
|
||||
|
||||
/** Width of the video in pixels. */
|
||||
width: number;
|
||||
|
||||
/** Height of the video in pixels. */
|
||||
height: number;
|
||||
|
||||
/** Orientation of the video. Will be either portrait or landscape. */
|
||||
orientation: 'portrait' | 'landscape';
|
||||
|
||||
/** Duration of the video in seconds. */
|
||||
duration: number;
|
||||
|
||||
/** Size of the video in bytes. */
|
||||
size: number;
|
||||
|
||||
/** Bitrate of the video in bits per second. */
|
||||
bitrate: number;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @name VideoEditor
|
||||
* @description Edit videos using native device APIs
|
||||
*
|
||||
* @usage
|
||||
* ```
|
||||
* import {VideoEditor} from 'ionic-native';
|
||||
*
|
||||
* VideoEditor.transcodeVideo({
|
||||
* fileUri: '/path/to/input.mov',
|
||||
* outputFileName: 'output.mp4',
|
||||
* outputFileType: VideoEditor.OutputFileType.MPEG4
|
||||
* })
|
||||
* .then((fileUri: string) => console.log('video transcode success', fileUri))
|
||||
* .catch((error: any) => console.log('video transcode error', error));
|
||||
*
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
plugin: 'cordova-plugin-video-editor',
|
||||
pluginRef: 'VideoEditor',
|
||||
repo: 'https://github.com/jbavari/cordova-plugin-video-editor',
|
||||
platforms: ['Android', 'iOS', 'Windows Phone 8']
|
||||
})
|
||||
export class VideoEditor {
|
||||
|
||||
static OptimizeForNetworkUse = {
|
||||
NO: 0,
|
||||
YES: 1
|
||||
};
|
||||
|
||||
static OutputFileType = {
|
||||
M4V: 0,
|
||||
MPEG4: 1,
|
||||
M4A: 2,
|
||||
QUICK_TIME: 3
|
||||
};
|
||||
|
||||
/**
|
||||
* Transcode a video
|
||||
* @param options {TranscodeOptions} Options
|
||||
* @return {Promise<string>} Returns a promise that resolves to the path of the transcoded video
|
||||
*/
|
||||
@Cordova({
|
||||
callbackOrder: 'reverse'
|
||||
})
|
||||
static transcodeVideo(options: TranscodeOptions): Promise<string> { return; }
|
||||
|
||||
/**
|
||||
* Trim a video
|
||||
* @param options {TrimOptions} Options
|
||||
* @return {Promise<string>} Returns a promise that resolves to the path of the trimmed video
|
||||
*/
|
||||
@Cordova({
|
||||
callbackOrder: 'reverse',
|
||||
platforms: ['iOS']
|
||||
})
|
||||
static trim(options: TrimOptions): Promise<string> { return; }
|
||||
|
||||
/**
|
||||
* Create a JPEG thumbnail from a video
|
||||
* @param options {CreateThumbnailOptions} Options
|
||||
* @return {Promise<string>} Returns a promise that resolves to the path to the jpeg image on the device
|
||||
*/
|
||||
@Cordova({
|
||||
callbackOrder: 'reverse'
|
||||
})
|
||||
static createThumbnail(options: CreateThumbnailOptions): Promise<string> { return; }
|
||||
|
||||
/**
|
||||
* Get info on a video (width, height, orientation, duration, size, & bitrate)
|
||||
* @param options {GetVideoInfoOptions} Options
|
||||
* @return {Promise<VideoInfo>} Returns a promise that resolves to an object containing info on the video
|
||||
*/
|
||||
@Cordova({
|
||||
callbackOrder: 'reverse'
|
||||
})
|
||||
static getVideoInfo(options: GetVideoInfoOptions): Promise<VideoInfo> { return; }
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user