@diffusionstudio/core-v4
Version:
2D motion graphics and video rendering engine
72 lines (71 loc) • 2.52 kB
TypeScript
import { AudioSource } from '../../sources';
import { Timestamp, Transcript } from '../../models';
import { Clip, ClipType } from '../clip';
import { Layer } from '../../layer';
import { AudioClipProps } from './interfaces';
import { MediaInput, Time } from '../../types';
import { SilenceRemoveOptions } from './types';
import { Renderer } from '../../renderer';
export declare class AudioClip extends Clip {
private _muted;
private _volume;
private _transcript?;
protected gainNode?: GainNode;
readonly type: ClipType;
layer?: Layer<AudioClip>;
source?: AudioSource;
playing: boolean;
/**
* Defines the start and stop values of the clip
* relative to the delay (which part of the media should be played)
*/
range: [Timestamp, Timestamp];
/**
* Defines the playback element
*/
element?: HTMLAudioElement | HTMLVideoElement;
private audioDecoder?;
constructor(input?: MediaInput | AudioSource, props?: AudioClipProps);
init(audio: Renderer): Promise<void>;
play(audio: Renderer): Promise<void>;
pause(): Promise<void>;
enter(audio: Renderer): Promise<void>;
update(audio: Renderer): Promise<void>;
exit(): Promise<void>;
/**
* Defines the transcript of the video/audio.
* Will be trimmed to the clip range.
* If the duration is not set, the transcript will be returned.
*/
get transcript(): Transcript | undefined;
set transcript(transcript: Transcript | undefined);
cleanup(): void;
get start(): Timestamp;
get stop(): Timestamp;
get duration(): Timestamp;
set duration(time: Time);
/**
* Number between 0 and 1 defining the volume of the media
* @default 1
*/
get volume(): number;
set volume(value: number);
get muted(): boolean;
set muted(value: boolean);
trim(start?: Time, stop?: Time): this;
/**
* Returns a slice of a media clip with trimmed start and stop
*/
subclip(start?: Time, stop?: Time): this;
split(time?: Time): Promise<this>;
/**
* Remove silences from the clip will return an array of clips with the silences removed.
* If the clip has been added to a layer it will remove the silences within the layer.
* @param options - Options for silence detection
*/
removeSilences(options?: SilenceRemoveOptions): Promise<AudioClip[]>;
/**
* Get the range of the clip in **seconds**
*/
protected getBufferRange(audio: Renderer): [number, number];
}