mediabunny
Version:
Pure TypeScript media toolkit for reading, writing, and converting media files, directly in the browser.
152 lines • 5.6 kB
TypeScript
/*!
* Copyright (c) 2026-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
import { Av1CodecInfo, AvcDecoderConfigurationRecord, HevcDecoderConfigurationRecord, Vp9CodecInfo } from './codec-data.js';
import { SubtitleMetadata } from './subtitles.js';
/**
* List of known video codecs, ordered by encoding preference.
* @group Codecs
* @public
*/
export declare const VIDEO_CODECS: readonly ["avc", "hevc", "vp9", "av1", "vp8"];
/**
* List of known PCM (uncompressed) audio codecs, ordered by encoding preference.
* @group Codecs
* @public
*/
export declare const PCM_AUDIO_CODECS: readonly ["pcm-s16", "pcm-s16be", "pcm-s24", "pcm-s24be", "pcm-s32", "pcm-s32be", "pcm-f32", "pcm-f32be", "pcm-f64", "pcm-f64be", "pcm-u8", "pcm-s8", "ulaw", "alaw"];
/**
* List of known compressed audio codecs, ordered by encoding preference.
* @group Codecs
* @public
*/
export declare const NON_PCM_AUDIO_CODECS: readonly ["aac", "opus", "mp3", "vorbis", "flac", "ac3", "eac3"];
/**
* List of known audio codecs, ordered by encoding preference.
* @group Codecs
* @public
*/
export declare const AUDIO_CODECS: readonly ["aac", "opus", "mp3", "vorbis", "flac", "ac3", "eac3", "pcm-s16", "pcm-s16be", "pcm-s24", "pcm-s24be", "pcm-s32", "pcm-s32be", "pcm-f32", "pcm-f32be", "pcm-f64", "pcm-f64be", "pcm-u8", "pcm-s8", "ulaw", "alaw"];
/**
* List of known subtitle codecs, ordered by encoding preference.
* @group Codecs
* @public
*/
export declare const SUBTITLE_CODECS: readonly ["webvtt"];
/**
* Union type of known video codecs.
* @group Codecs
* @public
*/
export type VideoCodec = typeof VIDEO_CODECS[number];
/**
* Union type of known audio codecs.
* @group Codecs
* @public
*/
export type AudioCodec = typeof AUDIO_CODECS[number];
export type PcmAudioCodec = typeof PCM_AUDIO_CODECS[number];
/**
* Union type of known subtitle codecs.
* @group Codecs
* @public
*/
export type SubtitleCodec = typeof SUBTITLE_CODECS[number];
/**
* Union type of known media codecs.
* @group Codecs
* @public
*/
export type MediaCodec = VideoCodec | AudioCodec | SubtitleCodec;
export declare const AVC_LEVEL_TABLE: {
maxMacroblocks: number;
maxBitrate: number;
maxDpbMbs: number;
level: number;
}[];
export declare const VP9_LEVEL_TABLE: {
maxPictureSize: number;
maxBitrate: number;
level: number;
}[];
export declare const buildVideoCodecString: (codec: VideoCodec, width: number, height: number, bitrate: number) => string;
export declare const generateVp9CodecConfigurationFromCodecString: (codecString: string) => number[];
export declare const generateAv1CodecConfigurationFromCodecString: (codecString: string) => number[];
export declare const extractVideoCodecString: (trackInfo: {
width: number;
height: number;
codec: VideoCodec | null;
codecDescription: Uint8Array | null;
colorSpace: VideoColorSpaceInit | null;
avcType: 1 | 3 | null;
avcCodecInfo: AvcDecoderConfigurationRecord | null;
hevcCodecInfo: HevcDecoderConfigurationRecord | null;
vp9CodecInfo: Vp9CodecInfo | null;
av1CodecInfo: Av1CodecInfo | null;
}) => string;
export declare const buildAudioCodecString: (codec: AudioCodec, numberOfChannels: number, sampleRate: number) => "vorbis" | "pcm-s16" | "pcm-s16be" | "pcm-s24" | "pcm-s24be" | "pcm-s32" | "pcm-s32be" | "pcm-f32" | "pcm-f32be" | "pcm-f64" | "pcm-f64be" | "pcm-u8" | "pcm-s8" | "ulaw" | "alaw" | "opus" | "mp3" | "flac" | "ac-3" | "ec-3" | "mp4a.40.29" | "mp4a.40.5" | "mp4a.40.2";
export type AacCodecInfo = {
isMpeg2: boolean;
objectType: number | null;
};
export declare const extractAudioCodecString: (trackInfo: {
codec: AudioCodec | null;
codecDescription: Uint8Array | null;
aacCodecInfo: AacCodecInfo | null;
}) => string;
export declare const guessDescriptionForVideo: (decoderConfig: VideoDecoderConfig) => Uint8Array | undefined;
export declare const guessDescriptionForAudio: (decoderConfig: AudioDecoderConfig) => Uint8Array | undefined | false;
export declare const OPUS_SAMPLE_RATE = 48000;
export declare const parsePcmCodec: (codec: PcmAudioCodec) => {
dataType: "ulaw";
sampleSize: 1;
littleEndian: boolean;
silentValue: number;
} | {
dataType: "alaw";
sampleSize: 1;
littleEndian: boolean;
silentValue: number;
} | {
dataType: "unsigned" | "signed" | "float";
sampleSize: 8 | 1 | 2 | 4 | 3;
littleEndian: boolean;
silentValue: number;
};
export declare const inferCodecFromCodecString: (codecString: string) => MediaCodec | null;
export declare const getVideoEncoderConfigExtension: (codec: VideoCodec) => {
avc: {
format: "avc";
};
hevc?: undefined;
} | {
hevc: {
format: "hevc";
};
avc?: undefined;
} | {
avc?: undefined;
hevc?: undefined;
};
export declare const getAudioEncoderConfigExtension: (codec: AudioCodec) => {
aac: {
format: "aac";
};
opus?: undefined;
} | {
opus: {
format: "opus";
};
aac?: undefined;
} | {
aac?: undefined;
opus?: undefined;
};
export declare const validateVideoChunkMetadata: (metadata: EncodedVideoChunkMetadata | undefined) => void;
export declare const validateAudioChunkMetadata: (metadata: EncodedAudioChunkMetadata | undefined) => void;
export declare const validateSubtitleMetadata: (metadata: SubtitleMetadata | undefined) => void;
//# sourceMappingURL=codec.d.ts.map