mirror of https://github.com/VERT-sh/VERT.git
feat: additional coders
This commit is contained in:
parent
ffb6ef856b
commit
1bf93d9a22
6
bun.lock
6
bun.lock
|
|
@ -12,6 +12,8 @@
|
|||
"@fontsource/lexend": "^5.2.11",
|
||||
"@fontsource/radio-canada-big": "^5.2.7",
|
||||
"@imagemagick/magick-wasm": "^0.0.37",
|
||||
"@mediabunny/ac3": "^1.35.1",
|
||||
"@mediabunny/mp3-encoder": "^1.35.1",
|
||||
"@stripe/stripe-js": "^8.5.2",
|
||||
"byte-data": "^19.0.1",
|
||||
"client-zip": "^2.5.0",
|
||||
|
|
@ -176,6 +178,10 @@
|
|||
|
||||
"@lix-js/server-protocol-schema": ["@lix-js/server-protocol-schema@0.1.1", "", {}, "sha512-jBeALB6prAbtr5q4vTuxnRZZv1M2rKe8iNqRQhFJ4Tv7150unEa0vKyz0hs8Gl3fUGsWaNJBh3J8++fpbrpRBQ=="],
|
||||
|
||||
"@mediabunny/ac3": ["@mediabunny/ac3@1.35.1", "", { "peerDependencies": { "mediabunny": "^1.0.0" } }, "sha512-gLx3mFfs58/cdz2/f5Fp+6ZOrX5Jli3AZMXw/5EJcgm2VpnC/2oxtJyP1x/00PIS4UCE770slwIdz7U+2CQ31g=="],
|
||||
|
||||
"@mediabunny/mp3-encoder": ["@mediabunny/mp3-encoder@1.35.1", "", { "peerDependencies": { "mediabunny": "^1.0.0" } }, "sha512-iY6FcPs7GbHMs/ASPmdzwojKcBN4AfMa+zFh4KNZNaLToyR7aEZILj9FsPVJA11bshaoo80dTaBcn69i33JHVA=="],
|
||||
|
||||
"@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="],
|
||||
|
||||
"@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="],
|
||||
|
|
|
|||
|
|
@ -45,6 +45,8 @@
|
|||
"@fontsource/lexend": "^5.2.11",
|
||||
"@fontsource/radio-canada-big": "^5.2.7",
|
||||
"@imagemagick/magick-wasm": "^0.0.37",
|
||||
"@mediabunny/ac3": "^1.35.1",
|
||||
"@mediabunny/mp3-encoder": "^1.35.1",
|
||||
"@stripe/stripe-js": "^8.5.2",
|
||||
"byte-data": "^19.0.1",
|
||||
"client-zip": "^2.5.0",
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ import { VertFile } from "$lib/types";
|
|||
import {
|
||||
BlobSource,
|
||||
BufferTarget,
|
||||
canEncodeAudio,
|
||||
Conversion,
|
||||
Input,
|
||||
MATROSKA,
|
||||
|
|
@ -16,6 +17,8 @@ import {
|
|||
WEBM,
|
||||
WebMOutputFormat,
|
||||
} from "mediabunny";
|
||||
import { registerMp3Encoder } from "@mediabunny/mp3-encoder";
|
||||
import { registerAc3Decoder, registerAc3Encoder } from "@mediabunny/ac3";
|
||||
import { Converter, FormatInfo, type WorkerStatus } from "./converter.svelte";
|
||||
import { ToastManager } from "$lib/util/toast.svelte";
|
||||
import { error, log } from "$lib/util/logger";
|
||||
|
|
@ -43,6 +46,19 @@ export class MediabunnyConverter extends Converter {
|
|||
|
||||
constructor() {
|
||||
super();
|
||||
|
||||
// additional mediabunny coders
|
||||
// currently both official ones -- maybe add our own in the future
|
||||
this.initializeCodecs();
|
||||
}
|
||||
|
||||
private async initializeCodecs(): Promise<void> {
|
||||
if (!(await canEncodeAudio("mp3"))) {
|
||||
// Only register the custom encoder if there's no native support
|
||||
registerMp3Encoder();
|
||||
}
|
||||
registerAc3Decoder();
|
||||
registerAc3Encoder();
|
||||
}
|
||||
|
||||
public async convert(file: VertFile, to: string): Promise<VertFile> {
|
||||
|
|
@ -114,7 +130,7 @@ export class MediabunnyConverter extends Converter {
|
|||
case ".mov":
|
||||
return new MovOutputFormat();
|
||||
case ".ts":
|
||||
return new MpegTsOutputFormat();
|
||||
return new MpegTsOutputFormat(); // FIXME: audio tracks discarded - prob needs another audio codec
|
||||
default:
|
||||
throw new Error(`Unsupported format: ${ext}`);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue