diff --git a/dev/convert.html b/dev/convert.html
index 36a2645..3778784 100644
--- a/dev/convert.html
+++ b/dev/convert.html
@@ -100,6 +100,7 @@
},
*/
video: () => ({
+ forceTranscode: true,
allowRotationMetadata: false,
//width: 720,
//frameRate: 30,
@@ -181,7 +182,7 @@
},
trim: {
start: 0,
- end: 4
+ //end: 4
},
});
console.log(conversion);
diff --git a/docs/guide/converting-media-files.md b/docs/guide/converting-media-files.md
index 43d812a..8e11193 100644
--- a/docs/guide/converting-media-files.md
+++ b/docs/guide/converting-media-files.md
@@ -108,7 +108,7 @@ Sometimes, you may want to cancel an ongoing conversion process. For this, use t
await conversion.cancel(); // Resolves once the conversion is canceled
```
-This automatically frees up all resources used by the conversion process.
+This automatically frees up all resources used by the conversion process and will cause any ongoing call to `execute` to throw a `ConversionCanceledError`.
## Video options
diff --git a/src/conversion.ts b/src/conversion.ts
index 862b6f0..4b56d08 100644
--- a/src/conversion.ts
+++ b/src/conversion.ts
@@ -822,7 +822,7 @@ export class Conversion {
}
if (this._canceled) {
- await new Promise(() => {}); // Never resolve
+ throw new ConversionCanceledError();
}
await this.output.finalize();
@@ -832,7 +832,10 @@ export class Conversion {
}
}
- /** Cancels the conversion process. Does nothing if the conversion is already complete. */
+ /**
+ * Cancels the conversion process, causing any ongoing `execute` call to throw a `ConversionCanceledError`.
+ * Does nothing if the conversion is already complete.
+ */
async cancel() {
if (this.output.state === 'finalizing' || this.output.state === 'finalized') {
return;
@@ -1589,6 +1592,19 @@ export class Conversion {
}
}
+/**
+ * Thrown when a conversion couldn't complete due to being canceled.
+ * @group Conversion
+ * @public
+ */
+export class ConversionCanceledError extends Error {
+ /** Creates a new {@link ConversionCanceledError}. */
+ constructor(message = 'Conversion has been canceled.') {
+ super(message);
+ this.name = 'ConversionCanceledError';
+ }
+}
+
const MAX_TIMESTAMP_GAP = 5;
/**
diff --git a/src/index.ts b/src/index.ts
index 6cd723f..4c5bee1 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -190,6 +190,7 @@ export {
ConversionOptions,
ConversionVideoOptions,
ConversionAudioOptions,
+ ConversionCanceledError,
DiscardedTrack,
} from './conversion';
export {