webcodecs-node 0.5.0 → 0.5.2

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 +64 -184
  2. package/docs/api.md +1 -1
  3. package/docs/configuration.md +6 -17
  4. package/package.json +2 -2
  5. package/dist/AudioData.d.ts +0 -6
  6. package/dist/AudioData.d.ts.map +0 -1
  7. package/dist/AudioData.js +0 -6
  8. package/dist/AudioData.js.map +0 -1
  9. package/dist/AudioDecoder.d.ts +0 -6
  10. package/dist/AudioDecoder.d.ts.map +0 -1
  11. package/dist/AudioDecoder.js +0 -6
  12. package/dist/AudioDecoder.js.map +0 -1
  13. package/dist/AudioEncoder.d.ts +0 -6
  14. package/dist/AudioEncoder.d.ts.map +0 -1
  15. package/dist/AudioEncoder.js +0 -6
  16. package/dist/AudioEncoder.js.map +0 -1
  17. package/dist/EncodedAudioChunk.d.ts +0 -6
  18. package/dist/EncodedAudioChunk.d.ts.map +0 -1
  19. package/dist/EncodedAudioChunk.js +0 -6
  20. package/dist/EncodedAudioChunk.js.map +0 -1
  21. package/dist/EncodedVideoChunk.d.ts +0 -6
  22. package/dist/EncodedVideoChunk.d.ts.map +0 -1
  23. package/dist/EncodedVideoChunk.js +0 -6
  24. package/dist/EncodedVideoChunk.js.map +0 -1
  25. package/dist/FFmpegProcess.d.ts +0 -6
  26. package/dist/FFmpegProcess.d.ts.map +0 -1
  27. package/dist/FFmpegProcess.js +0 -6
  28. package/dist/FFmpegProcess.js.map +0 -1
  29. package/dist/HardwareAcceleration.d.ts +0 -6
  30. package/dist/HardwareAcceleration.d.ts.map +0 -1
  31. package/dist/HardwareAcceleration.js +0 -6
  32. package/dist/HardwareAcceleration.js.map +0 -1
  33. package/dist/ImageDecoder.d.ts +0 -6
  34. package/dist/ImageDecoder.d.ts.map +0 -1
  35. package/dist/ImageDecoder.js +0 -6
  36. package/dist/ImageDecoder.js.map +0 -1
  37. package/dist/Logger.d.ts +0 -6
  38. package/dist/Logger.d.ts.map +0 -1
  39. package/dist/Logger.js +0 -6
  40. package/dist/Logger.js.map +0 -1
  41. package/dist/MediaCapabilities.d.ts +0 -9
  42. package/dist/MediaCapabilities.d.ts.map +0 -1
  43. package/dist/MediaCapabilities.js +0 -8
  44. package/dist/MediaCapabilities.js.map +0 -1
  45. package/dist/VideoDecoder.d.ts +0 -6
  46. package/dist/VideoDecoder.d.ts.map +0 -1
  47. package/dist/VideoDecoder.js +0 -6
  48. package/dist/VideoDecoder.js.map +0 -1
  49. package/dist/VideoEncoder.d.ts +0 -6
  50. package/dist/VideoEncoder.d.ts.map +0 -1
  51. package/dist/VideoEncoder.js +0 -6
  52. package/dist/VideoEncoder.js.map +0 -1
  53. package/dist/VideoFrame.d.ts +0 -10
  54. package/dist/VideoFrame.d.ts.map +0 -1
  55. package/dist/VideoFrame.js +0 -9
  56. package/dist/VideoFrame.js.map +0 -1
  57. package/dist/__tests__/AudioData.test.d.ts +0 -5
  58. package/dist/__tests__/AudioData.test.d.ts.map +0 -1
  59. package/dist/__tests__/AudioData.test.js +0 -180
  60. package/dist/__tests__/AudioData.test.js.map +0 -1
  61. package/dist/__tests__/AudioDecoder.test.d.ts +0 -5
  62. package/dist/__tests__/AudioDecoder.test.d.ts.map +0 -1
  63. package/dist/__tests__/AudioDecoder.test.js +0 -733
  64. package/dist/__tests__/AudioDecoder.test.js.map +0 -1
  65. package/dist/__tests__/AudioEncoder.test.d.ts +0 -5
  66. package/dist/__tests__/AudioEncoder.test.d.ts.map +0 -1
  67. package/dist/__tests__/AudioEncoder.test.js +0 -247
  68. package/dist/__tests__/AudioEncoder.test.js.map +0 -1
  69. package/dist/__tests__/EncodedChunks.test.d.ts +0 -5
  70. package/dist/__tests__/EncodedChunks.test.d.ts.map +0 -1
  71. package/dist/__tests__/EncodedChunks.test.js +0 -100
  72. package/dist/__tests__/EncodedChunks.test.js.map +0 -1
  73. package/dist/__tests__/HardwareAcceleration.test.d.ts +0 -5
  74. package/dist/__tests__/HardwareAcceleration.test.d.ts.map +0 -1
  75. package/dist/__tests__/HardwareAcceleration.test.js +0 -85
  76. package/dist/__tests__/HardwareAcceleration.test.js.map +0 -1
  77. package/dist/__tests__/ImageDecoder.test.d.ts +0 -5
  78. package/dist/__tests__/ImageDecoder.test.d.ts.map +0 -1
  79. package/dist/__tests__/ImageDecoder.test.js +0 -558
  80. package/dist/__tests__/ImageDecoder.test.js.map +0 -1
  81. package/dist/__tests__/ImageDecoder.wpt.test.d.ts +0 -8
  82. package/dist/__tests__/ImageDecoder.wpt.test.d.ts.map +0 -1
  83. package/dist/__tests__/ImageDecoder.wpt.test.js +0 -135
  84. package/dist/__tests__/ImageDecoder.wpt.test.js.map +0 -1
  85. package/dist/__tests__/MediaCapabilities.test.d.ts +0 -5
  86. package/dist/__tests__/MediaCapabilities.test.d.ts.map +0 -1
  87. package/dist/__tests__/MediaCapabilities.test.js +0 -346
  88. package/dist/__tests__/MediaCapabilities.test.js.map +0 -1
  89. package/dist/__tests__/NodeAvDecoder.test.d.ts +0 -2
  90. package/dist/__tests__/NodeAvDecoder.test.d.ts.map +0 -1
  91. package/dist/__tests__/NodeAvDecoder.test.js +0 -206
  92. package/dist/__tests__/NodeAvDecoder.test.js.map +0 -1
  93. package/dist/__tests__/NodeAvEncoder.test.d.ts +0 -2
  94. package/dist/__tests__/NodeAvEncoder.test.d.ts.map +0 -1
  95. package/dist/__tests__/NodeAvEncoder.test.js +0 -176
  96. package/dist/__tests__/NodeAvEncoder.test.js.map +0 -1
  97. package/dist/__tests__/VideoDecoder.test.d.ts +0 -5
  98. package/dist/__tests__/VideoDecoder.test.d.ts.map +0 -1
  99. package/dist/__tests__/VideoDecoder.test.js +0 -675
  100. package/dist/__tests__/VideoDecoder.test.js.map +0 -1
  101. package/dist/__tests__/VideoEncoder.test.d.ts +0 -5
  102. package/dist/__tests__/VideoEncoder.test.d.ts.map +0 -1
  103. package/dist/__tests__/VideoEncoder.test.js +0 -468
  104. package/dist/__tests__/VideoEncoder.test.js.map +0 -1
  105. package/dist/__tests__/VideoFrame.test.d.ts +0 -5
  106. package/dist/__tests__/VideoFrame.test.d.ts.map +0 -1
  107. package/dist/__tests__/VideoFrame.test.js +0 -246
  108. package/dist/__tests__/VideoFrame.test.js.map +0 -1
  109. package/dist/__tests__/aac-utils.test.d.ts +0 -2
  110. package/dist/__tests__/aac-utils.test.d.ts.map +0 -1
  111. package/dist/__tests__/aac-utils.test.js +0 -37
  112. package/dist/__tests__/aac-utils.test.js.map +0 -1
  113. package/dist/__tests__/avc-utils.test.d.ts +0 -2
  114. package/dist/__tests__/avc-utils.test.d.ts.map +0 -1
  115. package/dist/__tests__/avc-utils.test.js +0 -63
  116. package/dist/__tests__/avc-utils.test.js.map +0 -1
  117. package/dist/__tests__/hevc-utils.test.d.ts +0 -2
  118. package/dist/__tests__/hevc-utils.test.d.ts.map +0 -1
  119. package/dist/__tests__/hevc-utils.test.js +0 -78
  120. package/dist/__tests__/hevc-utils.test.js.map +0 -1
  121. package/dist/demos/demo-conversion.d.ts +0 -13
  122. package/dist/demos/demo-conversion.d.ts.map +0 -1
  123. package/dist/demos/demo-conversion.js +0 -301
  124. package/dist/demos/demo-conversion.js.map +0 -1
  125. package/dist/demos/demo-hwaccel-conversion.d.ts +0 -8
  126. package/dist/demos/demo-hwaccel-conversion.d.ts.map +0 -1
  127. package/dist/demos/demo-hwaccel-conversion.js +0 -161
  128. package/dist/demos/demo-hwaccel-conversion.js.map +0 -1
  129. package/dist/demos/demo-mediabunny.d.ts +0 -7
  130. package/dist/demos/demo-mediabunny.d.ts.map +0 -1
  131. package/dist/demos/demo-mediabunny.js +0 -78
  132. package/dist/demos/demo-mediabunny.js.map +0 -1
  133. package/dist/ffmpeg/FFmpegProcess.d.ts +0 -111
  134. package/dist/ffmpeg/FFmpegProcess.d.ts.map +0 -1
  135. package/dist/ffmpeg/FFmpegProcess.js +0 -543
  136. package/dist/ffmpeg/FFmpegProcess.js.map +0 -1
  137. package/dist/ffmpeg/audio-codecs.d.ts +0 -59
  138. package/dist/ffmpeg/audio-codecs.d.ts.map +0 -1
  139. package/dist/ffmpeg/audio-codecs.js +0 -99
  140. package/dist/ffmpeg/audio-codecs.js.map +0 -1
  141. package/dist/ffmpeg/formats.d.ts +0 -42
  142. package/dist/ffmpeg/formats.d.ts.map +0 -1
  143. package/dist/ffmpeg/formats.js +0 -147
  144. package/dist/ffmpeg/formats.js.map +0 -1
  145. package/dist/ffmpeg/index.d.ts +0 -10
  146. package/dist/ffmpeg/index.d.ts.map +0 -1
  147. package/dist/ffmpeg/index.js +0 -13
  148. package/dist/ffmpeg/index.js.map +0 -1
  149. package/dist/ffmpeg/parsers/annexb.d.ts +0 -88
  150. package/dist/ffmpeg/parsers/annexb.d.ts.map +0 -1
  151. package/dist/ffmpeg/parsers/annexb.js +0 -201
  152. package/dist/ffmpeg/parsers/annexb.js.map +0 -1
  153. package/dist/ffmpeg/parsers/index.d.ts +0 -6
  154. package/dist/ffmpeg/parsers/index.d.ts.map +0 -1
  155. package/dist/ffmpeg/parsers/index.js +0 -8
  156. package/dist/ffmpeg/parsers/index.js.map +0 -1
  157. package/dist/ffmpeg/parsers/ivf.d.ts +0 -54
  158. package/dist/ffmpeg/parsers/ivf.d.ts.map +0 -1
  159. package/dist/ffmpeg/parsers/ivf.js +0 -109
  160. package/dist/ffmpeg/parsers/ivf.js.map +0 -1
  161. package/dist/ffmpeg/types.d.ts +0 -85
  162. package/dist/ffmpeg/types.d.ts.map +0 -1
  163. package/dist/ffmpeg/types.js +0 -8
  164. package/dist/ffmpeg/types.js.map +0 -1
  165. package/dist/mediabunny/FFmpegAudioDecoder.d.ts +0 -24
  166. package/dist/mediabunny/FFmpegAudioDecoder.d.ts.map +0 -1
  167. package/dist/mediabunny/FFmpegAudioDecoder.js +0 -126
  168. package/dist/mediabunny/FFmpegAudioDecoder.js.map +0 -1
  169. package/dist/mediabunny/FFmpegAudioEncoder.d.ts +0 -44
  170. package/dist/mediabunny/FFmpegAudioEncoder.d.ts.map +0 -1
  171. package/dist/mediabunny/FFmpegAudioEncoder.js +0 -221
  172. package/dist/mediabunny/FFmpegAudioEncoder.js.map +0 -1
  173. package/dist/mediabunny/FFmpegVideoDecoder.d.ts +0 -25
  174. package/dist/mediabunny/FFmpegVideoDecoder.d.ts.map +0 -1
  175. package/dist/mediabunny/FFmpegVideoDecoder.js +0 -122
  176. package/dist/mediabunny/FFmpegVideoDecoder.js.map +0 -1
  177. package/dist/mediabunny/FFmpegVideoEncoder.d.ts +0 -49
  178. package/dist/mediabunny/FFmpegVideoEncoder.d.ts.map +0 -1
  179. package/dist/mediabunny/FFmpegVideoEncoder.js +0 -264
  180. package/dist/mediabunny/FFmpegVideoEncoder.js.map +0 -1
  181. package/dist/mediabunny/index.d.ts +0 -21
  182. package/dist/mediabunny/index.d.ts.map +0 -1
  183. package/dist/mediabunny/index.js +0 -33
  184. package/dist/mediabunny/index.js.map +0 -1
  185. package/dist/types.d.ts +0 -6
  186. package/dist/types.d.ts.map +0 -1
  187. package/dist/types.js +0 -6
  188. package/dist/types.js.map +0 -1
@@ -1,264 +0,0 @@
1
- /**
2
- * Mediabunny VideoEncoder adapter using node-av backend
3
- *
4
- * Implements Mediabunny's CustomVideoEncoder interface using node-av native bindings
5
- * (which wrap FFmpeg's libav* libraries). Supports hardware acceleration via VAAPI,
6
- * NVENC, QSV, VideoToolbox.
7
- */
8
- import { CustomVideoEncoder, EncodedPacket, } from 'mediabunny';
9
- import { NodeAvVideoEncoder } from '../node-av/NodeAvVideoEncoder.js';
10
- import { extractAvcParameterSetsFromAnnexB, buildAvcDecoderConfig, convertAnnexBToAvcc, } from '../utils/avc.js';
11
- import { extractHevcParameterSetsFromAnnexB, buildHvccDecoderConfig, convertAnnexBToHvcc, } from '../utils/hevc.js';
12
- // Map Mediabunny codec to internal codec name
13
- const CODEC_NAME_MAP = {
14
- avc: 'h264',
15
- hevc: 'hevc',
16
- vp8: 'vp8',
17
- vp9: 'vp9',
18
- av1: 'av1',
19
- };
20
- export class FFmpegVideoEncoder extends CustomVideoEncoder {
21
- backend = null;
22
- frameIndex = 0;
23
- codecDescription = null;
24
- metadataEmitted = false;
25
- bitstreamFormat = 'annexb';
26
- useAnnexB = false;
27
- resolveFlush = null;
28
- pendingPackets = [];
29
- static supports(codec, _config) {
30
- return codec in CODEC_NAME_MAP;
31
- }
32
- async init() {
33
- // Determine bitstream format from config
34
- const configExt = this.config;
35
- this.useAnnexB = this.codec === 'avc' || this.codec === 'hevc';
36
- if (this.codec === 'avc' && configExt.avc?.format === 'avc') {
37
- this.bitstreamFormat = 'mp4';
38
- }
39
- else if (this.codec === 'hevc' && configExt.hevc?.format === 'hevc') {
40
- this.bitstreamFormat = 'mp4';
41
- }
42
- else {
43
- this.bitstreamFormat = 'annexb';
44
- }
45
- // Hardware acceleration preference from config
46
- const hwPref = this.config.hardwareAcceleration;
47
- // Create node-av backend
48
- this.backend = new NodeAvVideoEncoder();
49
- const codecName = CODEC_NAME_MAP[this.codec];
50
- this.backend.startEncoder({
51
- codec: codecName,
52
- width: this.config.width,
53
- height: this.config.height,
54
- framerate: this.config.framerate ?? 30,
55
- bitrate: this.config.bitrate,
56
- inputPixelFormat: 'rgba',
57
- });
58
- // Set hardware acceleration preference on backend config
59
- if (hwPref) {
60
- this.backend.config.hardwareAcceleration = hwPref;
61
- }
62
- // Listen for encoded frames
63
- this.backend.on('encodedFrame', (frame) => {
64
- this.pendingPackets.push(frame);
65
- this.processPackets();
66
- });
67
- this.backend.on('error', (err) => {
68
- console.error('[FFmpegVideoEncoder] Backend error:', err.message);
69
- });
70
- this.backend.on('close', () => {
71
- // Process any remaining packets
72
- this.processPackets();
73
- if (this.resolveFlush) {
74
- this.resolveFlush();
75
- this.resolveFlush = null;
76
- }
77
- });
78
- }
79
- async encode(videoSample, _options) {
80
- if (!this.backend?.isHealthy) {
81
- throw new Error('Encoder not initialized');
82
- }
83
- // Get raw RGBA data from VideoSample
84
- const frameData = await this.getFrameData(videoSample);
85
- this.backend.write(frameData);
86
- }
87
- async flush() {
88
- return new Promise((resolve) => {
89
- this.resolveFlush = resolve;
90
- if (this.backend) {
91
- this.backend.end();
92
- }
93
- else {
94
- resolve();
95
- }
96
- });
97
- }
98
- async close() {
99
- if (this.backend) {
100
- this.backend.kill();
101
- this.backend = null;
102
- }
103
- }
104
- processPackets() {
105
- while (this.pendingPackets.length > 0) {
106
- const packet = this.pendingPackets.shift();
107
- this.emitPacket(packet.data, packet.timestamp, packet.keyFrame);
108
- }
109
- }
110
- /**
111
- * Extract raw RGBA pixel data from VideoSample
112
- */
113
- async getFrameData(sample) {
114
- const width = sample.codedWidth;
115
- const height = sample.codedHeight;
116
- const size = width * height * 4; // RGBA
117
- // VideoSample stores data in _data which can be:
118
- // - VideoFrame (browser)
119
- // - Uint8Array (raw data)
120
- // - OffscreenCanvas (canvas fallback)
121
- const sampleData = sample._data;
122
- // If _data is already a Uint8Array, use it directly
123
- if (sampleData instanceof Uint8Array) {
124
- return Buffer.from(sampleData);
125
- }
126
- // Try to use copyTo if available (works for VideoFrame and VideoSample)
127
- if (typeof sample.copyTo === 'function') {
128
- const buffer = new Uint8Array(size);
129
- await sample.copyTo(buffer);
130
- return Buffer.from(buffer);
131
- }
132
- // If it's a VideoFrame, use its copyTo method
133
- if (sampleData && typeof sampleData.copyTo === 'function') {
134
- const buffer = new Uint8Array(size);
135
- await sampleData.copyTo(buffer);
136
- return Buffer.from(buffer);
137
- }
138
- throw new Error('Cannot extract frame data from VideoSample');
139
- }
140
- /**
141
- * Find all Annex B start codes in buffer
142
- */
143
- findStartCodes(buf) {
144
- const codes = [];
145
- let i = 0;
146
- while (i < buf.length - 2) {
147
- if (buf[i] === 0 && buf[i + 1] === 0) {
148
- if (buf[i + 2] === 1) {
149
- codes.push({ pos: i, len: 3 });
150
- i += 3;
151
- }
152
- else if (buf[i + 2] === 0 && i + 3 < buf.length && buf[i + 3] === 1) {
153
- codes.push({ pos: i, len: 4 });
154
- i += 4;
155
- }
156
- else {
157
- i++;
158
- }
159
- }
160
- else {
161
- i++;
162
- }
163
- }
164
- return codes;
165
- }
166
- /**
167
- * Get NAL unit type from first byte after start code
168
- */
169
- getNalType(firstByte) {
170
- if (this.codec === 'avc') {
171
- return firstByte & 0x1f;
172
- }
173
- else {
174
- return (firstByte >> 1) & 0x3f;
175
- }
176
- }
177
- /**
178
- * Emit an encoded packet via Mediabunny callback
179
- */
180
- emitPacket(data, timestamp, isKey) {
181
- const framerate = this.config.framerate ?? 30;
182
- const timestampSeconds = timestamp / framerate;
183
- const durationSeconds = 1 / framerate;
184
- let payload = data;
185
- if (this.useAnnexB && this.bitstreamFormat === 'mp4') {
186
- payload = this.convertAnnexBFrame(data);
187
- }
188
- const packet = new EncodedPacket(new Uint8Array(payload), isKey ? 'key' : 'delta', timestampSeconds, durationSeconds);
189
- // Build metadata with decoder config (required by Mediabunny)
190
- // Only emit full metadata on first packet or keyframes
191
- let meta;
192
- if (!this.metadataEmitted || isKey) {
193
- // Extract codec description from first keyframe for AVC/HEVC
194
- if (isKey && this.useAnnexB && !this.codecDescription) {
195
- this.codecDescription = this.buildCodecDescription(data);
196
- }
197
- meta = {
198
- decoderConfig: {
199
- codec: this.getCodecString(),
200
- codedWidth: this.config.width,
201
- codedHeight: this.config.height,
202
- description: this.codecDescription ?? undefined,
203
- },
204
- };
205
- this.metadataEmitted = true;
206
- }
207
- this.frameIndex++;
208
- this.onPacket(packet, meta);
209
- }
210
- /**
211
- * Get codec string for the output format
212
- */
213
- getCodecString() {
214
- switch (this.codec) {
215
- case 'avc':
216
- // AVC codec string: avc1.PPCCLL (profile, constraints, level)
217
- // Default to High profile, level 4.0
218
- return 'avc1.640028';
219
- case 'hevc':
220
- // HEVC codec string
221
- return 'hev1.1.6.L93.B0';
222
- case 'vp8':
223
- return 'vp8';
224
- case 'vp9':
225
- // VP9 codec string: vp09.PP.LL.DD (profile, level, bit depth)
226
- return 'vp09.00.10.08';
227
- case 'av1':
228
- // AV1 codec string
229
- return 'av01.0.01M.08';
230
- default:
231
- return this.codec;
232
- }
233
- }
234
- buildCodecDescription(data) {
235
- if (!this.useAnnexB) {
236
- return null;
237
- }
238
- const view = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
239
- if (this.codec === 'avc') {
240
- const { sps, pps } = extractAvcParameterSetsFromAnnexB(view);
241
- if (sps.length && pps.length) {
242
- return buildAvcDecoderConfig(sps, pps);
243
- }
244
- }
245
- else if (this.codec === 'hevc') {
246
- const { vps, sps, pps } = extractHevcParameterSetsFromAnnexB(view);
247
- if (sps.length && pps.length) {
248
- return buildHvccDecoderConfig(vps, sps, pps);
249
- }
250
- }
251
- return null;
252
- }
253
- convertAnnexBFrame(data) {
254
- const view = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
255
- if (this.codec === 'avc') {
256
- return convertAnnexBToAvcc(view);
257
- }
258
- if (this.codec === 'hevc') {
259
- return convertAnnexBToHvcc(view);
260
- }
261
- return data;
262
- }
263
- }
264
- //# sourceMappingURL=FFmpegVideoEncoder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FFmpegVideoEncoder.js","sourceRoot":"","sources":["../../src/mediabunny/FFmpegVideoEncoder.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- /**
2
- * Mediabunny FFmpeg Backend
3
- *
4
- * Provides FFmpeg-backed video and audio encoder/decoder implementations
5
- * for use with Mediabunny in Node.js environments.
6
- *
7
- * Usage:
8
- * import { registerFFmpegCoders } from './mediabunny';
9
- * registerFFmpegCoders();
10
- * // Now Mediabunny will use FFmpeg for encoding/decoding
11
- */
12
- export { FFmpegVideoEncoder } from './FFmpegVideoEncoder.js';
13
- export { FFmpegVideoDecoder } from './FFmpegVideoDecoder.js';
14
- export { FFmpegAudioEncoder } from './FFmpegAudioEncoder.js';
15
- export { FFmpegAudioDecoder } from './FFmpegAudioDecoder.js';
16
- /**
17
- * Register FFmpeg-backed encoders and decoders with Mediabunny.
18
- * Call this once at startup before using Mediabunny.
19
- */
20
- export declare function registerFFmpegCoders(): void;
21
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mediabunny/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAQ3C"}
@@ -1,33 +0,0 @@
1
- /**
2
- * Mediabunny FFmpeg Backend
3
- *
4
- * Provides FFmpeg-backed video and audio encoder/decoder implementations
5
- * for use with Mediabunny in Node.js environments.
6
- *
7
- * Usage:
8
- * import { registerFFmpegCoders } from './mediabunny';
9
- * registerFFmpegCoders();
10
- * // Now Mediabunny will use FFmpeg for encoding/decoding
11
- */
12
- import { registerEncoder, registerDecoder } from 'mediabunny';
13
- import { FFmpegVideoEncoder } from './FFmpegVideoEncoder.js';
14
- import { FFmpegVideoDecoder } from './FFmpegVideoDecoder.js';
15
- import { FFmpegAudioEncoder } from './FFmpegAudioEncoder.js';
16
- import { FFmpegAudioDecoder } from './FFmpegAudioDecoder.js';
17
- export { FFmpegVideoEncoder } from './FFmpegVideoEncoder.js';
18
- export { FFmpegVideoDecoder } from './FFmpegVideoDecoder.js';
19
- export { FFmpegAudioEncoder } from './FFmpegAudioEncoder.js';
20
- export { FFmpegAudioDecoder } from './FFmpegAudioDecoder.js';
21
- /**
22
- * Register FFmpeg-backed encoders and decoders with Mediabunny.
23
- * Call this once at startup before using Mediabunny.
24
- */
25
- export function registerFFmpegCoders() {
26
- // Video coders
27
- registerEncoder(FFmpegVideoEncoder);
28
- registerDecoder(FFmpegVideoDecoder);
29
- // Audio coders
30
- registerEncoder(FFmpegAudioEncoder);
31
- registerDecoder(FFmpegAudioDecoder);
32
- }
33
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mediabunny/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,eAAe;IACf,eAAe,CAAC,kBAAkB,CAAC,CAAC;IACpC,eAAe,CAAC,kBAAkB,CAAC,CAAC;IAEpC,eAAe;IACf,eAAe,CAAC,kBAAkB,CAAC,CAAC;IACpC,eAAe,CAAC,kBAAkB,CAAC,CAAC;AACtC,CAAC"}
package/dist/types.d.ts DELETED
@@ -1,6 +0,0 @@
1
- /**
2
- * Types - Re-export from new location for backwards compatibility
3
- * @deprecated Import from './types/index.js' instead
4
- */
5
- export * from './types/index.js';
6
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,kBAAkB,CAAC"}
package/dist/types.js DELETED
@@ -1,6 +0,0 @@
1
- /**
2
- * Types - Re-export from new location for backwards compatibility
3
- * @deprecated Import from './types/index.js' instead
4
- */
5
- export * from './types/index.js';
6
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,kBAAkB,CAAC"}