Document MPEG-TS

This commit is contained in:
Vanilagy
2026-01-16 20:51:27 +01:00
parent 53b04619e1
commit 20e4610da4
5 changed files with 59 additions and 31 deletions
+2
View File
@@ -32,6 +32,7 @@ import {
OGG, // Ogg input format singleton
ADTS, // ADTS input format singleton
FLAC, // FLAC input format singleton
MPEG_TS, // MPEG-TS input format singleton
} from 'mediabunny';
```
@@ -80,6 +81,7 @@ In addition to singletons, input format classes are structured hierarchically:
- `OggInputFormat`
- `AdtsInputFormat`
- `FlacInputFormat`
- `MpegTsInputFormat`
This means you can also perform input format checks using `instanceof` instead of `===` comparisons. For example:
```ts
+1 -1
View File
@@ -12,7 +12,7 @@ Here's a long list of stuff this library does:
- Converting media files
- Hardware-accelerated decoding & encoding (via the WebCodecs API)
- Support for multiple video, audio and subtitle tracks
- Read & write support for many container formats (.mp4, .mov, .webm, .mkv, .mp3, .wav, .ogg, .aac, .flac), including variations such as MP4 with Fast Start, fragmented MP4, streamable Matroska, transparent WebM, etc.
- Read & write support for many container formats (.mp4, .mov, .webm, .mkv, .mp3, .wav, .ogg, .aac, .flac, .ts), including variations such as MP4 with Fast Start, fragmented MP4, streamable Matroska, transparent WebM, etc.
- Support for 25 different codecs
- Lazy, optimized, on-demand file reading
- Input and output streaming, arbitrary file size support
+27 -2
View File
@@ -289,7 +289,7 @@ type AdtsOutputFormatOptions = {
This output format creates FLAC (.flac) files.
```ts
import { Output, FlacOutputFormat } from 'mediabunny';
import { Output, FlacOutputFormat } from 'mediabunny';
const output = new Output({
format: new FlacOutputFormat(options),
@@ -304,4 +304,29 @@ type FlacOutputFormatOptions = {
};
```
- `onFrame`\
Will be called for each FLAC frame that is written.
Will be called for each FLAC frame that is written.
## MPEG-TS
This output format creates MPEG Transport Stream (.ts) files.
```ts
import { Output, MpegTsOutputFormat } from 'mediabunny';
const output = new Output({
format: new MpegTsOutputFormat(options),
// ...
});
```
::: info
This format ensures [append-only writing](#append-only-writing).
:::
The following options are available:
```ts
type MpegTsOutputFormatOptions = {
onPacket?: (data: Uint8Array, position: number) => unknown;
};
```
- `onPacket`\
Will be called for each 188-byte Transport Stream packet that is written.
+28 -27
View File
@@ -13,6 +13,7 @@ Mediabunny supports many commonly used media container formats, all of which are
- WAVE (.wav)
- ADTS (.aac)
- FLAC (.flac)
- MPEG Transport Stream (.ts)
## Codecs
@@ -62,33 +63,33 @@ Mediabunny ships with built-in decoders and encoders for all audio PCM codecs, m
Not all codecs can be used with all containers. The following table specifies the supported codec-container combinations:
| | .mp4 | .mov | .mkv | .webm[^1] | .ogg | .mp3 | .wav | .aac | .flac |
|:--------------:|:--------:|:-----:|:-----:|:---------:|:-----:|:-----:|:-----:|:-----:|:-----:|
| `'avc'` | ✓ | ✓ | ✓ | | | | | | |
| `'hevc'` | ✓ | ✓ | ✓ | | | | | | |
| `'vp8'` | ✓ | ✓ | ✓ | ✓ | | | | | |
| `'vp9'` | ✓ | ✓ | ✓ | ✓ | | | | | |
| `'av1'` | ✓ | ✓ | ✓ | ✓ | | | | | |
| `'aac'` | ✓ | ✓ | ✓ | | | | | ✓ | |
| `'opus'` | ✓ | ✓ | ✓ | ✓ | ✓ | | | | |
| `'mp3'` | ✓ | ✓ | ✓ | | | ✓ | | | |
| `'vorbis'` | ✓ | ✓ | ✓ | ✓ | ✓ | | | | |
| `'flac'` | ✓ | ✓ | ✓ | | | | | | ✓ |
| `'pcm-u8'` | | ✓ | ✓ | | | | ✓ | | |
| `'pcm-s8'` | | ✓ | | | | | | | |
| `'pcm-s16'` | ✓ | ✓ | ✓ | | | | ✓ | | |
| `'pcm-s16be'` | ✓ | ✓ | ✓ | | | | | | |
| `'pcm-s24'` | ✓ | ✓ | ✓ | | | | ✓ | | |
| `'pcm-s24be'` | ✓ | ✓ | ✓ | | | | | | |
| `'pcm-s32'` | ✓ | ✓ | ✓ | | | | ✓ | | |
| `'pcm-s32be'` | ✓ | ✓ | ✓ | | | | | | |
| `'pcm-f32'` | ✓ | ✓ | ✓ | | | | ✓ | | |
| `'pcm-f32be'` | ✓ | ✓ | | | | | | | |
| `'pcm-f64'` | ✓ | ✓ | ✓ | | | | | | |
| `'pcm-f64be'` | ✓ | ✓ | | | | | | | |
| `'ulaw'` | | ✓ | | | | | ✓ | | |
| `'alaw'` | | ✓ | | | | | ✓ | | |
| `'webvtt'`[^2] | (✓) | | (✓) | (✓) | | | | | |
| | .mp4 | .mov | .mkv | .webm[^1] | .ogg | .mp3 | .wav | .aac | .flac | .ts |
|:--------------:|:--------:|:-----:|:-----:|:---------:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|
| `'avc'` | ✓ | ✓ | ✓ | | | | | | | ✓ |
| `'hevc'` | ✓ | ✓ | ✓ | | | | | | | ✓ |
| `'vp8'` | ✓ | ✓ | ✓ | ✓ | | | | | | |
| `'vp9'` | ✓ | ✓ | ✓ | ✓ | | | | | | |
| `'av1'` | ✓ | ✓ | ✓ | ✓ | | | | | | |
| `'aac'` | ✓ | ✓ | ✓ | | | | | ✓ | | ✓ |
| `'opus'` | ✓ | ✓ | ✓ | ✓ | ✓ | | | | | |
| `'mp3'` | ✓ | ✓ | ✓ | | | ✓ | | | | ✓ |
| `'vorbis'` | ✓ | ✓ | ✓ | ✓ | ✓ | | | | | |
| `'flac'` | ✓ | ✓ | ✓ | | | | | | ✓ | |
| `'pcm-u8'` | | ✓ | ✓ | | | | ✓ | | | |
| `'pcm-s8'` | | ✓ | | | | | | | | |
| `'pcm-s16'` | ✓ | ✓ | ✓ | | | | ✓ | | | |
| `'pcm-s16be'` | ✓ | ✓ | ✓ | | | | | | | |
| `'pcm-s24'` | ✓ | ✓ | ✓ | | | | ✓ | | | |
| `'pcm-s24be'` | ✓ | ✓ | ✓ | | | | | | | |
| `'pcm-s32'` | ✓ | ✓ | ✓ | | | | ✓ | | | |
| `'pcm-s32be'` | ✓ | ✓ | ✓ | | | | | | | |
| `'pcm-f32'` | ✓ | ✓ | ✓ | | | | ✓ | | | |
| `'pcm-f32be'` | ✓ | ✓ | | | | | | | | |
| `'pcm-f64'` | ✓ | ✓ | ✓ | | | | | | | |
| `'pcm-f64be'` | ✓ | ✓ | | | | | | | | |
| `'ulaw'` | | ✓ | | | | | ✓ | | | |
| `'alaw'` | | ✓ | | | | | ✓ | | | |
| `'webvtt'`[^2] | (✓) | | (✓) | (✓) | | | | | | |
[^1]: WebM only supports a small subset of the codecs supported by Matroska. However, this library can technically read all codecs from a WebM that are supported by Matroska.