feat: publish av-tools 0.1.0

This commit is contained in:
2026-07-24 14:58:03 +02:00
commit fcc537b024
254 changed files with 63270 additions and 0 deletions

View File

@@ -0,0 +1,78 @@
import { describe, expect, it } from 'vitest';
import {
deserializeCapabilities,
parseBuildConfiguration,
parseCodecs,
parseFilters,
parseFormats,
parseNamedComponents,
serializeCapabilities,
} from '../../src/ffmpeg/capability-parser';
describe('FFmpeg capability parsing', () => {
it('parses demuxer and muxer flags including aliases', () => {
const parsed = parseFormats(`
File formats:
D. = Demuxing supported
.E = Muxing supported
DE matroska,webm Matroska / WebM
D mov,mp4,m4a QuickTime / MOV
E mp3 MP3
`);
expect(parsed.demuxers).toEqual(
new Set(['matroska', 'webm', 'mov', 'mp4', 'm4a'])
);
expect(parsed.muxers).toEqual(new Set(['matroska', 'webm', 'mp3']));
});
it('parses codecs, encoders, filters and configuration flags', () => {
const codecs = parseCodecs(`
Codecs:
D..... = Decoding supported
.E.... = Encoding supported
DEV.LS h264 H.264
D.A.L. aac AAC
.EV.L. vp9 VP9
`);
expect(codecs.decoders).toEqual(new Set(['h264', 'aac']));
expect(codecs.encoders).toEqual(new Set(['h264', 'vp9']));
expect(
parseNamedComponents(`
Encoders:
V..... libx264 H.264
A..... aac AAC
`)
).toEqual(new Set(['libx264', 'aac']));
expect(
parseFilters(`
Filters:
..C scale V->V Scale the input video size.
T.. loudnorm A->A EBU R128 loudness normalization
... concat N->N Concatenate audio and video streams.
`)
).toEqual(new Set(['scale', 'loudnorm', 'concat']));
expect(
parseBuildConfiguration(
'ffmpeg version x\nconfiguration: --enable-gpl --disable-doc'
)
).toEqual(['--enable-gpl', '--disable-doc']);
});
it('serializes Set values for durable caches without losing data', () => {
const original = {
versionText: 'ffmpeg version n6.1',
buildConfiguration: ['--enable-gpl'],
demuxers: new Set(['mov']),
muxers: new Set(['mp4']),
decoders: new Set(['h264']),
encoders: new Set(['libx264']),
filters: new Set(['scale']),
};
expect(deserializeCapabilities(serializeCapabilities(original))).toEqual(
original
);
});
});