aivee 0.1.0-alpha.0 → 0.1.0-dev.59872e1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +34 -0
- package/LICENSE +21 -21
- package/README.md +120 -118
- package/docs/architecture.md +401 -401
- package/docs/aspect-ratio-presets.md +72 -72
- package/docs/releasing.md +19 -19
- package/docs/usage.md +1193 -1193
- package/package.json +52 -52
- package/requirements-otio.txt +1 -1
- package/src/capabilities.mjs +307 -307
- package/src/cli.mjs +646 -646
- package/src/doctor.mjs +133 -133
- package/src/edits/analysis-to-edl.mjs +43 -43
- package/src/edits/detect-silence.mjs +51 -51
- package/src/edits/find-mistake-candidates.mjs +42 -42
- package/src/edits/plan-shot-placements.mjs +105 -105
- package/src/edits/plan-silence-cuts.mjs +49 -49
- package/src/edits/retime-transcript.mjs +105 -105
- package/src/files.mjs +80 -80
- package/src/index.mjs +44 -44
- package/src/interchange/otio.mjs +204 -204
- package/src/interchange/otio_bridge.py +521 -521
- package/src/media/analysis-provider.mjs +75 -75
- package/src/media/compatibility.mjs +45 -45
- package/src/media/ffmpeg-capabilities.mjs +129 -129
- package/src/media/frame-rate.mjs +58 -58
- package/src/media/frame-time.mjs +22 -22
- package/src/media/preview-assets.mjs +350 -350
- package/src/media/probe.mjs +149 -149
- package/src/media/render-cuts.mjs +90 -90
- package/src/media/scene-detection.mjs +107 -107
- package/src/media/scene-review.mjs +205 -205
- package/src/project/assets.mjs +1194 -1194
- package/src/project/create.mjs +100 -100
- package/src/project/presets.mjs +44 -44
- package/src/render/checkpoints.mjs +192 -192
- package/src/render/formats.mjs +163 -163
- package/src/render/hyperframes.mjs +590 -590
- package/src/render/process.mjs +111 -111
- package/src/render/progress.mjs +46 -46
- package/src/render/timeline-control.mjs +53 -53
- package/src/timeline/assemble.mjs +119 -119
- package/src/timeline/audio-effects.mjs +75 -75
- package/src/timeline/audio-mastering.mjs +236 -236
- package/src/timeline/audio-mix.mjs +105 -105
- package/src/timeline/audio-track-effects.mjs +139 -139
- package/src/timeline/audio-volume.mjs +63 -63
- package/src/timeline/background.mjs +8 -8
- package/src/timeline/blend-mode.mjs +34 -34
- package/src/timeline/caption-layouts.mjs +62 -61
- package/src/timeline/captions.mjs +80 -80
- package/src/timeline/edit.mjs +965 -965
- package/src/timeline/fingerprint.mjs +6 -6
- package/src/timeline/from-edl.mjs +31 -31
- package/src/timeline/history-store.mjs +281 -281
- package/src/timeline/history.mjs +69 -69
- package/src/timeline/inspect.mjs +117 -117
- package/src/timeline/keyframes.mjs +158 -158
- package/src/timeline/layers.mjs +18 -18
- package/src/timeline/mask.mjs +53 -53
- package/src/timeline/project.mjs +52 -52
- package/src/timeline/render.mjs +759 -759
- package/src/timeline/sidechain-render.mjs +209 -209
- package/src/timeline/source-fit.mjs +15 -15
- package/src/timeline/speech-bubble.mjs +26 -26
- package/src/timeline/speed-ramp.mjs +188 -188
- package/src/timeline/track-state.mjs +22 -22
- package/src/timeline/transition.mjs +34 -34
- package/src/timeline/validate.mjs +322 -322
- package/src/transcript/corrections.mjs +21 -21
- package/src/transcript/normalize.mjs +17 -17
- package/src/transcript/provider.mjs +42 -42
- package/src/transcript/subtitles.mjs +57 -57
- package/src/transcript/validate.mjs +39 -39
package/src/files.mjs
CHANGED
|
@@ -1,80 +1,80 @@
|
|
|
1
|
-
import { closeSync, createReadStream, linkSync, openSync, readSync, rmSync, statSync, writeSync } from 'node:fs';
|
|
2
|
-
import { link, open, rm } from 'node:fs/promises';
|
|
3
|
-
import { Transform } from 'node:stream';
|
|
4
|
-
import { pipeline } from 'node:stream/promises';
|
|
5
|
-
|
|
6
|
-
/** Publish a staged file without overwriting an existing destination. */
|
|
7
|
-
export function linkOrCopySync(source, destination) {
|
|
8
|
-
try {
|
|
9
|
-
linkSync(source, destination);
|
|
10
|
-
} catch (error) {
|
|
11
|
-
if (!isUnsupportedHardLinkError(error)) throw error;
|
|
12
|
-
copyFileExclusiveSync(source, destination);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
/** Publish a staged file asynchronously and report bytes only when copied. */
|
|
17
|
-
export async function linkOrCopyAsync(source, destination, { signal, onCopyProgress } = {}) {
|
|
18
|
-
try {
|
|
19
|
-
await link(source, destination);
|
|
20
|
-
} catch (error) {
|
|
21
|
-
if (!isUnsupportedHardLinkError(error)) throw error;
|
|
22
|
-
const destinationHandle = await open(destination, 'wx');
|
|
23
|
-
try {
|
|
24
|
-
const progress = onCopyProgress ? createCopyProgress(source, onCopyProgress) : undefined;
|
|
25
|
-
const streams = [createReadStream(source, { signal }), ...(progress ? [progress] : []), destinationHandle.createWriteStream()];
|
|
26
|
-
await pipeline(...streams, { signal });
|
|
27
|
-
} catch (copyError) {
|
|
28
|
-
await destinationHandle.close().catch(() => {});
|
|
29
|
-
await rm(destination, { force: true }).catch(() => {});
|
|
30
|
-
throw copyError;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
function isUnsupportedHardLinkError(error) {
|
|
36
|
-
return ['EPERM', 'EXDEV', 'ENOSYS', 'ENOTSUP', 'EOPNOTSUPP'].includes(error?.code);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
function copyFileExclusiveSync(source, destination) {
|
|
40
|
-
let sourceDescriptor;
|
|
41
|
-
let destinationDescriptor;
|
|
42
|
-
try {
|
|
43
|
-
sourceDescriptor = openSync(source, 'r');
|
|
44
|
-
destinationDescriptor = openSync(destination, 'wx');
|
|
45
|
-
const buffer = Buffer.allocUnsafe(1024 * 1024);
|
|
46
|
-
let bytesRead;
|
|
47
|
-
while ((bytesRead = readSync(sourceDescriptor, buffer, 0, buffer.length, null)) > 0) {
|
|
48
|
-
let offset = 0;
|
|
49
|
-
while (offset < bytesRead) offset += writeSync(destinationDescriptor, buffer, offset, bytesRead - offset);
|
|
50
|
-
}
|
|
51
|
-
closeSync(destinationDescriptor);
|
|
52
|
-
destinationDescriptor = undefined;
|
|
53
|
-
} catch (error) {
|
|
54
|
-
if (destinationDescriptor !== undefined) {
|
|
55
|
-
try { closeSync(destinationDescriptor); } catch { /* Preserve the original copy error. */ }
|
|
56
|
-
destinationDescriptor = undefined;
|
|
57
|
-
try { rmSync(destination, { force: true }); } catch { /* Preserve the original copy error. */ }
|
|
58
|
-
}
|
|
59
|
-
throw error;
|
|
60
|
-
} finally {
|
|
61
|
-
if (sourceDescriptor !== undefined) closeSync(sourceDescriptor);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
function createCopyProgress(source, onCopyProgress) {
|
|
66
|
-
const totalBytes = statSync(source).size;
|
|
67
|
-
let completedBytes = 0;
|
|
68
|
-
let lastPercent = -1;
|
|
69
|
-
return new Transform({
|
|
70
|
-
transform(chunk, encoding, callback) {
|
|
71
|
-
completedBytes += chunk.length;
|
|
72
|
-
const percent = totalBytes > 0 ? Math.floor(completedBytes / totalBytes * 100) : 100;
|
|
73
|
-
if (percent > lastPercent || completedBytes >= totalBytes) {
|
|
74
|
-
lastPercent = percent;
|
|
75
|
-
onCopyProgress(completedBytes, totalBytes);
|
|
76
|
-
}
|
|
77
|
-
callback(null, chunk);
|
|
78
|
-
},
|
|
79
|
-
});
|
|
80
|
-
}
|
|
1
|
+
import { closeSync, createReadStream, linkSync, openSync, readSync, rmSync, statSync, writeSync } from 'node:fs';
|
|
2
|
+
import { link, open, rm } from 'node:fs/promises';
|
|
3
|
+
import { Transform } from 'node:stream';
|
|
4
|
+
import { pipeline } from 'node:stream/promises';
|
|
5
|
+
|
|
6
|
+
/** Publish a staged file without overwriting an existing destination. */
|
|
7
|
+
export function linkOrCopySync(source, destination) {
|
|
8
|
+
try {
|
|
9
|
+
linkSync(source, destination);
|
|
10
|
+
} catch (error) {
|
|
11
|
+
if (!isUnsupportedHardLinkError(error)) throw error;
|
|
12
|
+
copyFileExclusiveSync(source, destination);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/** Publish a staged file asynchronously and report bytes only when copied. */
|
|
17
|
+
export async function linkOrCopyAsync(source, destination, { signal, onCopyProgress } = {}) {
|
|
18
|
+
try {
|
|
19
|
+
await link(source, destination);
|
|
20
|
+
} catch (error) {
|
|
21
|
+
if (!isUnsupportedHardLinkError(error)) throw error;
|
|
22
|
+
const destinationHandle = await open(destination, 'wx');
|
|
23
|
+
try {
|
|
24
|
+
const progress = onCopyProgress ? createCopyProgress(source, onCopyProgress) : undefined;
|
|
25
|
+
const streams = [createReadStream(source, { signal }), ...(progress ? [progress] : []), destinationHandle.createWriteStream()];
|
|
26
|
+
await pipeline(...streams, { signal });
|
|
27
|
+
} catch (copyError) {
|
|
28
|
+
await destinationHandle.close().catch(() => {});
|
|
29
|
+
await rm(destination, { force: true }).catch(() => {});
|
|
30
|
+
throw copyError;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function isUnsupportedHardLinkError(error) {
|
|
36
|
+
return ['EPERM', 'EXDEV', 'ENOSYS', 'ENOTSUP', 'EOPNOTSUPP'].includes(error?.code);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function copyFileExclusiveSync(source, destination) {
|
|
40
|
+
let sourceDescriptor;
|
|
41
|
+
let destinationDescriptor;
|
|
42
|
+
try {
|
|
43
|
+
sourceDescriptor = openSync(source, 'r');
|
|
44
|
+
destinationDescriptor = openSync(destination, 'wx');
|
|
45
|
+
const buffer = Buffer.allocUnsafe(1024 * 1024);
|
|
46
|
+
let bytesRead;
|
|
47
|
+
while ((bytesRead = readSync(sourceDescriptor, buffer, 0, buffer.length, null)) > 0) {
|
|
48
|
+
let offset = 0;
|
|
49
|
+
while (offset < bytesRead) offset += writeSync(destinationDescriptor, buffer, offset, bytesRead - offset);
|
|
50
|
+
}
|
|
51
|
+
closeSync(destinationDescriptor);
|
|
52
|
+
destinationDescriptor = undefined;
|
|
53
|
+
} catch (error) {
|
|
54
|
+
if (destinationDescriptor !== undefined) {
|
|
55
|
+
try { closeSync(destinationDescriptor); } catch { /* Preserve the original copy error. */ }
|
|
56
|
+
destinationDescriptor = undefined;
|
|
57
|
+
try { rmSync(destination, { force: true }); } catch { /* Preserve the original copy error. */ }
|
|
58
|
+
}
|
|
59
|
+
throw error;
|
|
60
|
+
} finally {
|
|
61
|
+
if (sourceDescriptor !== undefined) closeSync(sourceDescriptor);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function createCopyProgress(source, onCopyProgress) {
|
|
66
|
+
const totalBytes = statSync(source).size;
|
|
67
|
+
let completedBytes = 0;
|
|
68
|
+
let lastPercent = -1;
|
|
69
|
+
return new Transform({
|
|
70
|
+
transform(chunk, encoding, callback) {
|
|
71
|
+
completedBytes += chunk.length;
|
|
72
|
+
const percent = totalBytes > 0 ? Math.floor(completedBytes / totalBytes * 100) : 100;
|
|
73
|
+
if (percent > lastPercent || completedBytes >= totalBytes) {
|
|
74
|
+
lastPercent = percent;
|
|
75
|
+
onCopyProgress(completedBytes, totalBytes);
|
|
76
|
+
}
|
|
77
|
+
callback(null, chunk);
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
}
|
package/src/index.mjs
CHANGED
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
export { validateTranscript } from './transcript/validate.mjs';
|
|
2
|
-
export { getEngineCapabilities } from './capabilities.mjs';
|
|
3
|
-
export { validateTimeline } from './timeline/validate.mjs';
|
|
4
|
-
export { inspectTimeline } from './timeline/inspect.mjs';
|
|
5
|
-
export { blendModeStyle, validateBlendMode } from './timeline/blend-mode.mjs';
|
|
6
|
-
export { timelineForRender } from './timeline/track-state.mjs';
|
|
7
|
-
export { SPEED_RAMP_EASES, speedRampDuration } from './timeline/speed-ramp.mjs';
|
|
8
|
-
export { timelineFromEdl } from './timeline/from-edl.mjs';
|
|
9
|
-
export { renderTimeline, renderTimelineAsync, renderTimelineRange, renderTimelineRangeAsync } from './timeline/render.mjs';
|
|
10
|
-
export { DEFAULT_SOURCE_FIT, SOURCE_FIT_MODES, resolveSourceFit, validateSourceFit } from './timeline/source-fit.mjs';
|
|
11
|
-
export { addTimelineClip, addTimelineTrack, crossfadeTimelineClips, detachAudioFromTimelineClip, duplicateTimelineClip, editTimeline, editTimelineBatch, extractTimelineRange, insertTimelineGap, moveTimelineClip, moveTimelineClipToTrack, previewTimelineEdit, removeTimelineClip, removeTimelineMarker, removeTimelineTrack, reorderTimelineTrack, replaceTimelineClipAsset, rippleDeleteTimelineClip, rippleDeleteTimelineRange, setTimelineAudioMastering, setTimelineAudioMix, setTimelineClipAudioEffects, setTimelineClipAudioState, setTimelineClipState, setTimelineClipVideoState, setTimelineClipFraming, setTimelineClipKeyframes, setTimelineClipReverse, setTimelineClipSpeed, setTimelineClipVolumeKeyframes, setTimelineMarker, setTimelineOverlay, setTimelineProjectState, setTimelineTrackAudioEffects, setTimelineTrackState, setTimelineTransition, slipTimelineClip, splitTimelineClip, trimTimelineClip } from './timeline/edit.mjs';
|
|
12
|
-
export { createTimelineHistory } from './timeline/history.mjs';
|
|
13
|
-
export { applyTimelineReviewPlan, editTimelineFile, undoTimelineFile, redoTimelineFile, getTimelineFileHistory, resetTimelineFileHistory } from './timeline/history-store.mjs';
|
|
14
|
-
export { timelineFingerprint } from './timeline/fingerprint.mjs';
|
|
15
|
-
export { createProjectTimeline } from './timeline/project.mjs';
|
|
16
|
-
export { createCaptionTrack } from './timeline/captions.mjs';
|
|
17
|
-
export { CAPTION_LAYOUT_PRESETS, listCaptionLayoutPresets, resolveCaptionLayoutPreset } from './timeline/caption-layouts.mjs';
|
|
18
|
-
export { assembleEditedTimeline, renderEditedProject, renderEditedProjectAsync } from './timeline/assemble.mjs';
|
|
19
|
-
export { normalizeTranscript } from './transcript/normalize.mjs';
|
|
20
|
-
export { formatSubtitleText, parseSubtitleText } from './transcript/subtitles.mjs';
|
|
21
|
-
export { transcribeWithProvider } from './transcript/provider.mjs';
|
|
22
|
-
export { approveEdl, assertEdlApproved, retimeTranscript, validateEdl } from './edits/retime-transcript.mjs';
|
|
23
|
-
export { mediaAnalysisToEdl } from './edits/analysis-to-edl.mjs';
|
|
24
|
-
export { planSilenceCuts } from './edits/plan-silence-cuts.mjs';
|
|
25
|
-
export { detectAcousticSilence, parseSilenceIntervals } from './edits/detect-silence.mjs';
|
|
26
|
-
export { findMistakeCandidates } from './edits/find-mistake-candidates.mjs';
|
|
27
|
-
export { planSceneReviewPlacements } from './edits/plan-shot-placements.mjs';
|
|
28
|
-
export { applyTranscriptCorrections } from './transcript/corrections.mjs';
|
|
29
|
-
export { parseProbeOutput, probeMedia, probeMediaAsync } from './media/probe.mjs';
|
|
30
|
-
export { inspectMediaCompatibility } from './media/compatibility.mjs';
|
|
31
|
-
export { analyzeMediaWithProvider, normalizeMediaFindings } from './media/analysis-provider.mjs';
|
|
32
|
-
export { detectSceneChangesAsync, parseSceneDetectionOutput } from './media/scene-detection.mjs';
|
|
33
|
-
export { buildShotRanges, createSceneReviewPackAsync } from './media/scene-review.mjs';
|
|
34
|
-
export { generateAssetPreview } from './media/preview-assets.mjs';
|
|
35
|
-
export { normalizeFrameRate, frameRateNumber } from './media/frame-rate.mjs';
|
|
36
|
-
export { assertFfmpegDecoder, assertFfmpegDemuxer, assertFfmpegEncoder, hasFfmpegDecoder, hasFfmpegDemuxer, hasFfmpegEncoder, hasFfmpegFilter, listFfmpegDecoders, listFfmpegDemuxers, listFfmpegEncoders, listFfmpegFilters, parseFfmpegDecoders, parseFfmpegDemuxers, parseFfmpegEncoders, parseFfmpegFilters } from './media/ffmpeg-capabilities.mjs';
|
|
37
|
-
export { secondsToFrame, frameToSeconds, snapTimeToFrame } from './media/frame-time.mjs';
|
|
38
|
-
export { createFilterGraph, getKeepRanges, renderCuts } from './media/render-cuts.mjs';
|
|
39
|
-
export { createVideoProject } from './project/create.mjs';
|
|
40
|
-
export { createAssetProxy, createAssetProxyAsync, listProjectAssets, registerMediaAsset, registerMediaAssetAsync, registerMediaAssetsAsync, relinkProjectAsset, relinkProjectAssetAsync, resolveAssetProxies, resolveAssetProxiesAsync, unregisterProjectAsset, verifyProjectAssets, verifyProjectAssetsAsync } from './project/assets.mjs';
|
|
41
|
-
export { CANVAS_PRESETS, listCanvasPresets, resolveCanvasPreset } from './project/presets.mjs';
|
|
42
|
-
export { doctorHyperframes, importProjectTranscript, lintProject, previewProject, renderProject, renderProjectAsync, transcribeProject } from './render/hyperframes.mjs';
|
|
43
|
-
export { resolveColorProfile, resolveEncoderArgs, resolveProfileEncoder, resolveRenderControlArgs, resolveRenderFormat, resolveVideoEncoder } from './render/formats.mjs';
|
|
44
|
-
export { exportTimelineToOtio, importTimelineFromOtio, isOtioPath } from './interchange/otio.mjs';
|
|
1
|
+
export { validateTranscript } from './transcript/validate.mjs';
|
|
2
|
+
export { getEngineCapabilities } from './capabilities.mjs';
|
|
3
|
+
export { validateTimeline } from './timeline/validate.mjs';
|
|
4
|
+
export { inspectTimeline } from './timeline/inspect.mjs';
|
|
5
|
+
export { blendModeStyle, validateBlendMode } from './timeline/blend-mode.mjs';
|
|
6
|
+
export { timelineForRender } from './timeline/track-state.mjs';
|
|
7
|
+
export { SPEED_RAMP_EASES, speedRampDuration } from './timeline/speed-ramp.mjs';
|
|
8
|
+
export { timelineFromEdl } from './timeline/from-edl.mjs';
|
|
9
|
+
export { renderTimeline, renderTimelineAsync, renderTimelineRange, renderTimelineRangeAsync } from './timeline/render.mjs';
|
|
10
|
+
export { DEFAULT_SOURCE_FIT, SOURCE_FIT_MODES, resolveSourceFit, validateSourceFit } from './timeline/source-fit.mjs';
|
|
11
|
+
export { addTimelineClip, addTimelineTrack, crossfadeTimelineClips, detachAudioFromTimelineClip, duplicateTimelineClip, editTimeline, editTimelineBatch, extractTimelineRange, insertTimelineGap, moveTimelineClip, moveTimelineClipToTrack, previewTimelineEdit, removeTimelineClip, removeTimelineMarker, removeTimelineTrack, reorderTimelineTrack, replaceTimelineClipAsset, rippleDeleteTimelineClip, rippleDeleteTimelineRange, setTimelineAudioMastering, setTimelineAudioMix, setTimelineClipAudioEffects, setTimelineClipAudioState, setTimelineClipState, setTimelineClipVideoState, setTimelineClipFraming, setTimelineClipKeyframes, setTimelineClipReverse, setTimelineClipSpeed, setTimelineClipVolumeKeyframes, setTimelineMarker, setTimelineOverlay, setTimelineProjectState, setTimelineTrackAudioEffects, setTimelineTrackState, setTimelineTransition, slipTimelineClip, splitTimelineClip, trimTimelineClip } from './timeline/edit.mjs';
|
|
12
|
+
export { createTimelineHistory } from './timeline/history.mjs';
|
|
13
|
+
export { applyTimelineReviewPlan, editTimelineFile, undoTimelineFile, redoTimelineFile, getTimelineFileHistory, resetTimelineFileHistory } from './timeline/history-store.mjs';
|
|
14
|
+
export { timelineFingerprint } from './timeline/fingerprint.mjs';
|
|
15
|
+
export { createProjectTimeline } from './timeline/project.mjs';
|
|
16
|
+
export { createCaptionTrack } from './timeline/captions.mjs';
|
|
17
|
+
export { CAPTION_LAYOUT_PRESETS, listCaptionLayoutPresets, resolveCaptionLayoutPreset } from './timeline/caption-layouts.mjs';
|
|
18
|
+
export { assembleEditedTimeline, renderEditedProject, renderEditedProjectAsync } from './timeline/assemble.mjs';
|
|
19
|
+
export { normalizeTranscript } from './transcript/normalize.mjs';
|
|
20
|
+
export { formatSubtitleText, parseSubtitleText } from './transcript/subtitles.mjs';
|
|
21
|
+
export { transcribeWithProvider } from './transcript/provider.mjs';
|
|
22
|
+
export { approveEdl, assertEdlApproved, retimeTranscript, validateEdl } from './edits/retime-transcript.mjs';
|
|
23
|
+
export { mediaAnalysisToEdl } from './edits/analysis-to-edl.mjs';
|
|
24
|
+
export { planSilenceCuts } from './edits/plan-silence-cuts.mjs';
|
|
25
|
+
export { detectAcousticSilence, parseSilenceIntervals } from './edits/detect-silence.mjs';
|
|
26
|
+
export { findMistakeCandidates } from './edits/find-mistake-candidates.mjs';
|
|
27
|
+
export { planSceneReviewPlacements } from './edits/plan-shot-placements.mjs';
|
|
28
|
+
export { applyTranscriptCorrections } from './transcript/corrections.mjs';
|
|
29
|
+
export { parseProbeOutput, probeMedia, probeMediaAsync } from './media/probe.mjs';
|
|
30
|
+
export { inspectMediaCompatibility } from './media/compatibility.mjs';
|
|
31
|
+
export { analyzeMediaWithProvider, normalizeMediaFindings } from './media/analysis-provider.mjs';
|
|
32
|
+
export { detectSceneChangesAsync, parseSceneDetectionOutput } from './media/scene-detection.mjs';
|
|
33
|
+
export { buildShotRanges, createSceneReviewPackAsync } from './media/scene-review.mjs';
|
|
34
|
+
export { generateAssetPreview } from './media/preview-assets.mjs';
|
|
35
|
+
export { normalizeFrameRate, frameRateNumber } from './media/frame-rate.mjs';
|
|
36
|
+
export { assertFfmpegDecoder, assertFfmpegDemuxer, assertFfmpegEncoder, hasFfmpegDecoder, hasFfmpegDemuxer, hasFfmpegEncoder, hasFfmpegFilter, listFfmpegDecoders, listFfmpegDemuxers, listFfmpegEncoders, listFfmpegFilters, parseFfmpegDecoders, parseFfmpegDemuxers, parseFfmpegEncoders, parseFfmpegFilters } from './media/ffmpeg-capabilities.mjs';
|
|
37
|
+
export { secondsToFrame, frameToSeconds, snapTimeToFrame } from './media/frame-time.mjs';
|
|
38
|
+
export { createFilterGraph, getKeepRanges, renderCuts } from './media/render-cuts.mjs';
|
|
39
|
+
export { createVideoProject } from './project/create.mjs';
|
|
40
|
+
export { createAssetProxy, createAssetProxyAsync, listProjectAssets, registerMediaAsset, registerMediaAssetAsync, registerMediaAssetsAsync, relinkProjectAsset, relinkProjectAssetAsync, resolveAssetProxies, resolveAssetProxiesAsync, unregisterProjectAsset, verifyProjectAssets, verifyProjectAssetsAsync } from './project/assets.mjs';
|
|
41
|
+
export { CANVAS_PRESETS, listCanvasPresets, resolveCanvasPreset } from './project/presets.mjs';
|
|
42
|
+
export { doctorHyperframes, importProjectTranscript, lintProject, previewProject, renderProject, renderProjectAsync, transcribeProject } from './render/hyperframes.mjs';
|
|
43
|
+
export { resolveColorProfile, resolveEncoderArgs, resolveProfileEncoder, resolveRenderControlArgs, resolveRenderFormat, resolveVideoEncoder } from './render/formats.mjs';
|
|
44
|
+
export { exportTimelineToOtio, importTimelineFromOtio, isOtioPath } from './interchange/otio.mjs';
|