mediabunny 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/README.md +4 -4
  2. package/dist/mediabunny.d.ts +4 -2
  3. package/dist/modules/codec-data.d.ts +95 -0
  4. package/dist/modules/codec-data.d.ts.map +1 -0
  5. package/dist/modules/codec-data.js +1103 -0
  6. package/dist/modules/codec.d.ts +250 -0
  7. package/dist/modules/codec.d.ts.map +1 -0
  8. package/dist/modules/codec.js +1100 -0
  9. package/dist/modules/conversion.d.ts +158 -0
  10. package/dist/modules/conversion.d.ts.map +1 -0
  11. package/dist/modules/conversion.js +866 -0
  12. package/dist/modules/custom-coder.d.ts +119 -0
  13. package/dist/modules/custom-coder.d.ts.map +1 -0
  14. package/dist/modules/custom-coder.js +91 -0
  15. package/dist/modules/demuxer.d.ts +17 -0
  16. package/dist/modules/demuxer.d.ts.map +1 -0
  17. package/dist/modules/demuxer.js +12 -0
  18. package/dist/modules/index.d.ts +25 -0
  19. package/dist/modules/index.d.ts.map +1 -0
  20. package/dist/modules/index.js +24 -0
  21. package/dist/modules/input-format.d.ts +121 -0
  22. package/dist/modules/input-format.d.ts.map +1 -0
  23. package/dist/modules/input-format.js +333 -0
  24. package/dist/modules/input-track.d.ts +138 -0
  25. package/dist/modules/input-track.d.ts.map +1 -0
  26. package/dist/modules/input-track.js +230 -0
  27. package/dist/modules/input.d.ts +55 -0
  28. package/dist/modules/input.d.ts.map +1 -0
  29. package/dist/modules/input.js +104 -0
  30. package/dist/modules/isobmff/isobmff-boxes.d.ts +202 -0
  31. package/dist/modules/isobmff/isobmff-boxes.d.ts.map +1 -0
  32. package/dist/modules/isobmff/isobmff-boxes.js +1111 -0
  33. package/dist/modules/isobmff/isobmff-demuxer.d.ts +163 -0
  34. package/dist/modules/isobmff/isobmff-demuxer.d.ts.map +1 -0
  35. package/dist/modules/isobmff/isobmff-demuxer.js +2080 -0
  36. package/dist/modules/isobmff/isobmff-misc.d.ts +14 -0
  37. package/dist/modules/isobmff/isobmff-misc.d.ts.map +1 -0
  38. package/dist/modules/isobmff/isobmff-misc.js +20 -0
  39. package/dist/modules/isobmff/isobmff-muxer.d.ts +142 -0
  40. package/dist/modules/isobmff/isobmff-muxer.d.ts.map +1 -0
  41. package/dist/modules/isobmff/isobmff-muxer.js +858 -0
  42. package/dist/modules/isobmff/isobmff-reader.d.ts +36 -0
  43. package/dist/modules/isobmff/isobmff-reader.d.ts.map +1 -0
  44. package/dist/modules/isobmff/isobmff-reader.js +105 -0
  45. package/dist/modules/matroska/ebml.d.ts +156 -0
  46. package/dist/modules/matroska/ebml.d.ts.map +1 -0
  47. package/dist/modules/matroska/ebml.js +529 -0
  48. package/dist/modules/matroska/matroska-demuxer.d.ts +119 -0
  49. package/dist/modules/matroska/matroska-demuxer.d.ts.map +1 -0
  50. package/dist/modules/matroska/matroska-demuxer.js +1330 -0
  51. package/dist/modules/matroska/matroska-misc.d.ts +14 -0
  52. package/dist/modules/matroska/matroska-misc.d.ts.map +1 -0
  53. package/dist/modules/matroska/matroska-misc.js +20 -0
  54. package/dist/modules/matroska/matroska-muxer.d.ts +71 -0
  55. package/dist/modules/matroska/matroska-muxer.d.ts.map +1 -0
  56. package/dist/modules/matroska/matroska-muxer.js +729 -0
  57. package/dist/modules/media-sink.d.ts +272 -0
  58. package/dist/modules/media-sink.d.ts.map +1 -0
  59. package/dist/modules/media-sink.js +1264 -0
  60. package/dist/modules/media-source.d.ts +230 -0
  61. package/dist/modules/media-source.d.ts.map +1 -0
  62. package/dist/modules/media-source.js +1095 -0
  63. package/dist/modules/misc.d.ts +127 -0
  64. package/dist/modules/misc.d.ts.map +1 -0
  65. package/dist/modules/misc.js +462 -0
  66. package/dist/modules/mp3/mp3-demuxer.d.ts +32 -0
  67. package/dist/modules/mp3/mp3-demuxer.d.ts.map +1 -0
  68. package/dist/modules/mp3/mp3-demuxer.js +160 -0
  69. package/dist/modules/mp3/mp3-misc.d.ts +37 -0
  70. package/dist/modules/mp3/mp3-misc.d.ts.map +1 -0
  71. package/dist/modules/mp3/mp3-misc.js +122 -0
  72. package/dist/modules/mp3/mp3-muxer.d.ts +27 -0
  73. package/dist/modules/mp3/mp3-muxer.d.ts.map +1 -0
  74. package/dist/modules/mp3/mp3-muxer.js +112 -0
  75. package/dist/modules/mp3/mp3-reader.d.ts +25 -0
  76. package/dist/modules/mp3/mp3-reader.d.ts.map +1 -0
  77. package/dist/modules/mp3/mp3-reader.js +73 -0
  78. package/dist/modules/mp3/mp3-writer.d.ts +30 -0
  79. package/dist/modules/mp3/mp3-writer.d.ts.map +1 -0
  80. package/dist/modules/mp3/mp3-writer.js +72 -0
  81. package/dist/modules/muxer.d.ts +32 -0
  82. package/dist/modules/muxer.d.ts.map +1 -0
  83. package/dist/modules/muxer.js +50 -0
  84. package/dist/modules/ogg/ogg-demuxer.d.ts +53 -0
  85. package/dist/modules/ogg/ogg-demuxer.d.ts.map +1 -0
  86. package/dist/modules/ogg/ogg-demuxer.js +701 -0
  87. package/dist/modules/ogg/ogg-misc.d.ts +27 -0
  88. package/dist/modules/ogg/ogg-misc.d.ts.map +1 -0
  89. package/dist/modules/ogg/ogg-misc.js +78 -0
  90. package/dist/modules/ogg/ogg-muxer.d.ts +58 -0
  91. package/dist/modules/ogg/ogg-muxer.d.ts.map +1 -0
  92. package/dist/modules/ogg/ogg-muxer.js +345 -0
  93. package/dist/modules/ogg/ogg-reader.d.ts +37 -0
  94. package/dist/modules/ogg/ogg-reader.d.ts.map +1 -0
  95. package/dist/modules/ogg/ogg-reader.js +104 -0
  96. package/dist/modules/output-format.d.ts +285 -0
  97. package/dist/modules/output-format.d.ts.map +1 -0
  98. package/dist/modules/output-format.js +385 -0
  99. package/dist/modules/output.d.ts +134 -0
  100. package/dist/modules/output.d.ts.map +1 -0
  101. package/dist/modules/output.js +269 -0
  102. package/dist/modules/packet.d.ts +86 -0
  103. package/dist/modules/packet.d.ts.map +1 -0
  104. package/dist/modules/packet.js +133 -0
  105. package/dist/modules/pcm.d.ts +12 -0
  106. package/dist/modules/pcm.d.ts.map +1 -0
  107. package/dist/modules/pcm.js +85 -0
  108. package/dist/modules/reader.d.ts +40 -0
  109. package/dist/modules/reader.d.ts.map +1 -0
  110. package/dist/modules/reader.js +153 -0
  111. package/dist/modules/sample.d.ts +186 -0
  112. package/dist/modules/sample.d.ts.map +1 -0
  113. package/dist/modules/sample.js +798 -0
  114. package/dist/modules/source.d.ts +76 -0
  115. package/dist/modules/source.d.ts.map +1 -0
  116. package/dist/modules/source.js +183 -0
  117. package/dist/modules/subtitles.d.ts +37 -0
  118. package/dist/modules/subtitles.d.ts.map +1 -0
  119. package/dist/modules/subtitles.js +89 -0
  120. package/dist/modules/target.d.ts +58 -0
  121. package/dist/modules/target.d.ts.map +1 -0
  122. package/dist/modules/target.js +63 -0
  123. package/dist/modules/wave/riff-reader.d.ts +19 -0
  124. package/dist/modules/wave/riff-reader.d.ts.map +1 -0
  125. package/dist/modules/wave/riff-reader.js +38 -0
  126. package/dist/modules/wave/riff-writer.d.ts +18 -0
  127. package/dist/modules/wave/riff-writer.d.ts.map +1 -0
  128. package/dist/modules/wave/riff-writer.js +25 -0
  129. package/dist/modules/wave/wave-demuxer.d.ts +42 -0
  130. package/dist/modules/wave/wave-demuxer.d.ts.map +1 -0
  131. package/dist/modules/wave/wave-demuxer.js +239 -0
  132. package/dist/modules/wave/wave-muxer.d.ts +27 -0
  133. package/dist/modules/wave/wave-muxer.d.ts.map +1 -0
  134. package/dist/modules/wave/wave-muxer.js +108 -0
  135. package/dist/modules/writer.d.ts +85 -0
  136. package/dist/modules/writer.d.ts.map +1 -0
  137. package/dist/modules/writer.js +347 -0
  138. package/package.json +14 -10
  139. package/src/codec-data.ts +1394 -0
  140. package/src/codec.ts +1392 -0
  141. package/src/conversion.ts +1199 -0
  142. package/src/custom-coder.ts +162 -0
  143. package/src/demuxer.ts +22 -0
  144. package/src/index.ts +148 -0
  145. package/src/input-format.ts +386 -0
  146. package/src/input-track.ts +341 -0
  147. package/src/input.ts +138 -0
  148. package/src/isobmff/isobmff-boxes.ts +1365 -0
  149. package/src/isobmff/isobmff-demuxer.ts +2646 -0
  150. package/src/isobmff/isobmff-misc.ts +29 -0
  151. package/src/isobmff/isobmff-muxer.ts +1210 -0
  152. package/src/isobmff/isobmff-reader.ts +137 -0
  153. package/src/matroska/ebml.ts +595 -0
  154. package/src/matroska/matroska-demuxer.ts +1677 -0
  155. package/src/matroska/matroska-misc.ts +29 -0
  156. package/src/matroska/matroska-muxer.ts +999 -0
  157. package/src/media-sink.ts +1577 -0
  158. package/src/media-source.ts +1406 -0
  159. package/src/misc.ts +584 -0
  160. package/src/mp3/mp3-demuxer.ts +228 -0
  161. package/src/mp3/mp3-misc.ts +154 -0
  162. package/src/mp3/mp3-muxer.ts +153 -0
  163. package/src/mp3/mp3-reader.ts +93 -0
  164. package/src/mp3/mp3-writer.ts +112 -0
  165. package/src/muxer.ts +88 -0
  166. package/src/ogg/ogg-demuxer.ts +985 -0
  167. package/src/ogg/ogg-misc.ts +116 -0
  168. package/src/ogg/ogg-muxer.ts +480 -0
  169. package/src/ogg/ogg-reader.ts +143 -0
  170. package/src/output-format.ts +689 -0
  171. package/src/output.ts +427 -0
  172. package/src/packet.ts +180 -0
  173. package/src/pcm.ts +112 -0
  174. package/src/reader.ts +205 -0
  175. package/src/sample.ts +1029 -0
  176. package/src/source.ts +279 -0
  177. package/src/subtitles.ts +131 -0
  178. package/src/target.ts +106 -0
  179. package/src/tsconfig.json +13 -0
  180. package/src/wave/riff-reader.ts +48 -0
  181. package/src/wave/riff-writer.ts +30 -0
  182. package/src/wave/wave-demuxer.ts +317 -0
  183. package/src/wave/wave-muxer.ts +145 -0
  184. package/src/writer.ts +461 -0
  185. /package/dist/{mediabunny.js → bundles/mediabunny.cjs} +0 -0
  186. /package/dist/{mediabunny.min.js → bundles/mediabunny.min.cjs} +0 -0
  187. /package/dist/{mediabunny.min.mjs → bundles/mediabunny.min.mjs} +0 -0
  188. /package/dist/{mediabunny.mjs → bundles/mediabunny.mjs} +0 -0
@@ -0,0 +1,230 @@
1
+ /*!
2
+ * Copyright (c) 2025-present, Vanilagy and contributors
3
+ *
4
+ * This Source Code Form is subject to the terms of the Mozilla Public
5
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
7
+ */
8
+ import { AudioCodec, Quality, SubtitleCodec, VideoCodec } from './codec';
9
+ import { EncodedPacket } from './packet';
10
+ import { AudioSample, VideoSample } from './sample';
11
+ /**
12
+ * Base class for media sources. Media sources are used to add media samples to an output file.
13
+ * @public
14
+ */
15
+ export declare abstract class MediaSource {
16
+ /**
17
+ * Closes this source. This prevents future samples from being added and signals to the output file that no further
18
+ * samples will come in for this track. Calling `.close()` is optional but recommended after adding the
19
+ * last sample - for improved performance and reduced memory usage.
20
+ */
21
+ close(): void;
22
+ }
23
+ /**
24
+ * Base class for video sources - sources for video tracks.
25
+ * @public
26
+ */
27
+ export declare abstract class VideoSource extends MediaSource {
28
+ constructor(codec: VideoCodec);
29
+ }
30
+ /**
31
+ * The most basic video source; can be used to directly pipe encoded packets into the output file.
32
+ * @public
33
+ */
34
+ export declare class EncodedVideoPacketSource extends VideoSource {
35
+ constructor(codec: VideoCodec);
36
+ /**
37
+ * Adds an encoded packet to the output video track.
38
+ *
39
+ * @param meta - Additional metadata from the encoder. You should pass this for the first call, including a valid
40
+ * decoder config.
41
+ *
42
+ * @returns A Promise that resolves once the output is ready to receive more samples. You should await this Promise
43
+ * to respect writer and encoder backpressure.
44
+ */
45
+ add(packet: EncodedPacket, meta?: EncodedVideoChunkMetadata): Promise<void>;
46
+ }
47
+ /**
48
+ * Configuration object that controls video encoding. Can be used to set codec, quality, and more.
49
+ * @public
50
+ */
51
+ export type VideoEncodingConfig = {
52
+ /** The video codec that should be used for encoding the video samples (frames). */
53
+ codec: VideoCodec;
54
+ /**
55
+ * The target bitrate for the encoded video, in bits per second. Alternatively, a subjective Quality can
56
+ * be provided.
57
+ */
58
+ bitrate: number | Quality;
59
+ /** The latency mode used by the encoder; controls the performance-quality tradeoff. */
60
+ latencyMode?: VideoEncoderConfig['latencyMode'];
61
+ /**
62
+ * The interval, in seconds, of how often frames are encoded as a key frame. The default is 5 seconds. Frequent key
63
+ * frames improve seeking behavior but increase file size. When using multiple video tracks, you should give them
64
+ * all the same key frame interval.
65
+ */
66
+ keyFrameInterval?: number;
67
+ /**
68
+ * The full codec string as specified in the WebCodecs Codec Registry. This string must match the codec
69
+ * specified in `codec`. When not set, a fitting codec string will be constructed automatically by the library.
70
+ */
71
+ fullCodecString?: string;
72
+ /** Called for each successfully encoded packet. Both the packet and the encoding metadata are passed. */
73
+ onEncodedPacket?: (packet: EncodedPacket, meta: EncodedVideoChunkMetadata | undefined) => unknown;
74
+ /** Called when the internal encoder config, as used by the WebCodecs API, is created. */
75
+ onEncoderConfig?: (config: VideoEncoderConfig) => unknown;
76
+ };
77
+ /**
78
+ * This source can be used to add raw, unencoded video samples (frames) to an output video track. These frames will
79
+ * automatically be encoded and then piped into the output.
80
+ * @public
81
+ */
82
+ export declare class VideoSampleSource extends VideoSource {
83
+ constructor(encodingConfig: VideoEncodingConfig);
84
+ /**
85
+ * Encodes a video sample (frame) and then adds it to the output.
86
+ *
87
+ * @returns A Promise that resolves once the output is ready to receive more samples. You should await this Promise
88
+ * to respect writer and encoder backpressure.
89
+ */
90
+ add(videoSample: VideoSample, encodeOptions?: VideoEncoderEncodeOptions): Promise<void>;
91
+ }
92
+ /**
93
+ * This source can be used to add video frames to the output track from a fixed canvas element. Since canvases are often
94
+ * used for rendering, this source provides a convenient wrapper around VideoSampleSource.
95
+ * @public
96
+ */
97
+ export declare class CanvasSource extends VideoSource {
98
+ constructor(canvas: HTMLCanvasElement | OffscreenCanvas, encodingConfig: VideoEncodingConfig);
99
+ /**
100
+ * Captures the current canvas state as a video sample (frame), encodes it and adds it to the output.
101
+ *
102
+ * @param timestamp - The timestamp of the sample, in seconds.
103
+ * @param duration - The duration of the sample, in seconds.
104
+ *
105
+ * @returns A Promise that resolves once the output is ready to receive more samples. You should await this Promise
106
+ * to respect writer and encoder backpressure.
107
+ */
108
+ add(timestamp: number, duration?: number, encodeOptions?: VideoEncoderEncodeOptions): Promise<void>;
109
+ }
110
+ /**
111
+ * Video source that encodes the frames of a MediaStreamVideoTrack and pipes them into the output. This is useful for
112
+ * capturing live or real-time data such as webcams or screen captures. Frames will automatically start being captured
113
+ * once the connected Output is started, and will keep being captured until the Output is finalized or this source
114
+ * is closed.
115
+ * @public
116
+ */
117
+ export declare class MediaStreamVideoTrackSource extends VideoSource {
118
+ constructor(track: MediaStreamVideoTrack, encodingConfig: VideoEncodingConfig);
119
+ }
120
+ /**
121
+ * Base class for audio sources - sources for audio tracks.
122
+ * @public
123
+ */
124
+ export declare abstract class AudioSource extends MediaSource {
125
+ constructor(codec: AudioCodec);
126
+ }
127
+ /**
128
+ * The most basic audio source; can be used to directly pipe encoded packets into the output file.
129
+ * @public
130
+ */
131
+ export declare class EncodedAudioPacketSource extends AudioSource {
132
+ constructor(codec: AudioCodec);
133
+ /**
134
+ * Adds an encoded packet to the output audio track.
135
+ *
136
+ * @param meta - Additional metadata from the encoder. You should pass this for the first call, including a valid
137
+ * decoder config.
138
+ *
139
+ * @returns A Promise that resolves once the output is ready to receive more samples. You should await this Promise
140
+ * to respect writer and encoder backpressure.
141
+ */
142
+ add(packet: EncodedPacket, meta?: EncodedAudioChunkMetadata): Promise<void>;
143
+ }
144
+ /**
145
+ * Configuration object that controls audio encoding. Can be used to set codec, quality, and more.
146
+ * @public
147
+ */
148
+ export type AudioEncodingConfig = {
149
+ /** The audio codec that should be used for encoding the audio samples. */
150
+ codec: AudioCodec;
151
+ /**
152
+ * The target bitrate for the encoded audio, in bits per second. Alternatively, a subjective Quality can
153
+ * be provided. Required for compressed audio codecs, unused for PCM codecs.
154
+ */
155
+ bitrate?: number | Quality;
156
+ /**
157
+ * The full codec string as specified in the WebCodecs Codec Registry. This string must match the codec
158
+ * specified in `codec`. When not set, a fitting codec string will be constructed automatically by the library.
159
+ */
160
+ fullCodecString?: string;
161
+ /** Called for each successfully encoded packet. Both the packet and the encoding metadata are passed. */
162
+ onEncodedPacket?: (packet: EncodedPacket, meta: EncodedAudioChunkMetadata | undefined) => unknown;
163
+ /** Called when the internal encoder config, as used by the WebCodecs API, is created. */
164
+ onEncoderConfig?: (config: AudioEncoderConfig) => unknown;
165
+ };
166
+ /**
167
+ * This source can be used to add raw, unencoded audio samples to an output audio track. These samples will
168
+ * automatically be encoded and then piped into the output.
169
+ * @public
170
+ */
171
+ export declare class AudioSampleSource extends AudioSource {
172
+ constructor(encodingConfig: AudioEncodingConfig);
173
+ /**
174
+ * Encodes an audio sample and then adds it to the output.
175
+ *
176
+ * @returns A Promise that resolves once the output is ready to receive more samples. You should await this Promise
177
+ * to respect writer and encoder backpressure.
178
+ */
179
+ add(audioSample: AudioSample): Promise<void>;
180
+ }
181
+ /**
182
+ * This source can be used to add audio data from an AudioBuffer to the output track. This is useful when working with
183
+ * the Web Audio API.
184
+ * @public
185
+ */
186
+ export declare class AudioBufferSource extends AudioSource {
187
+ constructor(encodingConfig: AudioEncodingConfig);
188
+ /**
189
+ * Converts an AudioBuffer to audio samples, encodes them and adds them to the output. The first AudioBuffer will
190
+ * be played at timestamp 0, and any subsequent AudioBuffer will have a timestamp equal to the total duration of
191
+ * all previous AudioBuffers.
192
+ *
193
+ * @returns A Promise that resolves once the output is ready to receive more samples. You should await this Promise
194
+ * to respect writer and encoder backpressure.
195
+ */
196
+ add(audioBuffer: AudioBuffer): Promise<void[]>;
197
+ }
198
+ /**
199
+ * Audio source that encodes the data of a MediaStreamAudioTrack and pipes it into the output. This is useful for
200
+ * capturing live or real-time audio such as microphones or audio from other media elements. Audio will automatically
201
+ * start being captured once the connected Output is started, and will keep being captured until the Output is
202
+ * finalized or this source is closed.
203
+ * @public
204
+ */
205
+ export declare class MediaStreamAudioTrackSource extends AudioSource {
206
+ constructor(track: MediaStreamAudioTrack, encodingConfig: AudioEncodingConfig);
207
+ }
208
+ /**
209
+ * Base class for subtitle sources - sources for subtitle tracks.
210
+ * @public
211
+ */
212
+ export declare abstract class SubtitleSource extends MediaSource {
213
+ constructor(codec: SubtitleCodec);
214
+ }
215
+ /**
216
+ * This source can be used to add subtitles from a subtitle text file.
217
+ * @public
218
+ */
219
+ export declare class TextSubtitleSource extends SubtitleSource {
220
+ constructor(codec: SubtitleCodec);
221
+ /**
222
+ * Parses the subtitle text according to the specified codec and adds it to the output track. You don't have to
223
+ * add the entire subtitle file at once here; you can provide it in chunks.
224
+ *
225
+ * @returns A Promise that resolves once the output is ready to receive more samples. You should await this Promise
226
+ * to respect writer and encoder backpressure.
227
+ */
228
+ add(text: string): Promise<void>;
229
+ }
230
+ //# sourceMappingURL=media-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-source.d.ts","sourceRoot":"","sources":["../../src/media-source.ts"],"names":[],"mappings":"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"}