webcodecs-node 0.2.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.
- package/LICENSE +656 -0
- package/README.md +607 -0
- package/dist/AudioData.d.ts +6 -0
- package/dist/AudioData.d.ts.map +1 -0
- package/dist/AudioData.js +6 -0
- package/dist/AudioData.js.map +1 -0
- package/dist/AudioDecoder.d.ts +6 -0
- package/dist/AudioDecoder.d.ts.map +1 -0
- package/dist/AudioDecoder.js +6 -0
- package/dist/AudioDecoder.js.map +1 -0
- package/dist/AudioEncoder.d.ts +6 -0
- package/dist/AudioEncoder.d.ts.map +1 -0
- package/dist/AudioEncoder.js +6 -0
- package/dist/AudioEncoder.js.map +1 -0
- package/dist/EncodedAudioChunk.d.ts +6 -0
- package/dist/EncodedAudioChunk.d.ts.map +1 -0
- package/dist/EncodedAudioChunk.js +6 -0
- package/dist/EncodedAudioChunk.js.map +1 -0
- package/dist/EncodedVideoChunk.d.ts +6 -0
- package/dist/EncodedVideoChunk.d.ts.map +1 -0
- package/dist/EncodedVideoChunk.js +6 -0
- package/dist/EncodedVideoChunk.js.map +1 -0
- package/dist/FFmpegProcess.d.ts +6 -0
- package/dist/FFmpegProcess.d.ts.map +1 -0
- package/dist/FFmpegProcess.js +6 -0
- package/dist/FFmpegProcess.js.map +1 -0
- package/dist/HardwareAcceleration.d.ts +6 -0
- package/dist/HardwareAcceleration.d.ts.map +1 -0
- package/dist/HardwareAcceleration.js +6 -0
- package/dist/HardwareAcceleration.js.map +1 -0
- package/dist/ImageDecoder.d.ts +6 -0
- package/dist/ImageDecoder.d.ts.map +1 -0
- package/dist/ImageDecoder.js +6 -0
- package/dist/ImageDecoder.js.map +1 -0
- package/dist/Logger.d.ts +6 -0
- package/dist/Logger.d.ts.map +1 -0
- package/dist/Logger.js +6 -0
- package/dist/Logger.js.map +1 -0
- package/dist/MediaCapabilities.d.ts +9 -0
- package/dist/MediaCapabilities.d.ts.map +1 -0
- package/dist/MediaCapabilities.js +8 -0
- package/dist/MediaCapabilities.js.map +1 -0
- package/dist/VideoDecoder.d.ts +6 -0
- package/dist/VideoDecoder.d.ts.map +1 -0
- package/dist/VideoDecoder.js +6 -0
- package/dist/VideoDecoder.js.map +1 -0
- package/dist/VideoEncoder.d.ts +6 -0
- package/dist/VideoEncoder.d.ts.map +1 -0
- package/dist/VideoEncoder.js +6 -0
- package/dist/VideoEncoder.js.map +1 -0
- package/dist/VideoFrame.d.ts +10 -0
- package/dist/VideoFrame.d.ts.map +1 -0
- package/dist/VideoFrame.js +9 -0
- package/dist/VideoFrame.js.map +1 -0
- package/dist/__tests__/AudioData.test.d.ts +5 -0
- package/dist/__tests__/AudioData.test.d.ts.map +1 -0
- package/dist/__tests__/AudioData.test.js +179 -0
- package/dist/__tests__/AudioData.test.js.map +1 -0
- package/dist/__tests__/AudioDecoder.test.d.ts +5 -0
- package/dist/__tests__/AudioDecoder.test.d.ts.map +1 -0
- package/dist/__tests__/AudioDecoder.test.js +733 -0
- package/dist/__tests__/AudioDecoder.test.js.map +1 -0
- package/dist/__tests__/AudioEncoder.test.d.ts +5 -0
- package/dist/__tests__/AudioEncoder.test.d.ts.map +1 -0
- package/dist/__tests__/AudioEncoder.test.js +247 -0
- package/dist/__tests__/AudioEncoder.test.js.map +1 -0
- package/dist/__tests__/EncodedChunks.test.d.ts +5 -0
- package/dist/__tests__/EncodedChunks.test.d.ts.map +1 -0
- package/dist/__tests__/EncodedChunks.test.js +99 -0
- package/dist/__tests__/EncodedChunks.test.js.map +1 -0
- package/dist/__tests__/HardwareAcceleration.test.d.ts +5 -0
- package/dist/__tests__/HardwareAcceleration.test.d.ts.map +1 -0
- package/dist/__tests__/HardwareAcceleration.test.js +84 -0
- package/dist/__tests__/HardwareAcceleration.test.js.map +1 -0
- package/dist/__tests__/ImageDecoder.test.d.ts +5 -0
- package/dist/__tests__/ImageDecoder.test.d.ts.map +1 -0
- package/dist/__tests__/ImageDecoder.test.js +587 -0
- package/dist/__tests__/ImageDecoder.test.js.map +1 -0
- package/dist/__tests__/MediaCapabilities.test.d.ts +5 -0
- package/dist/__tests__/MediaCapabilities.test.d.ts.map +1 -0
- package/dist/__tests__/MediaCapabilities.test.js +346 -0
- package/dist/__tests__/MediaCapabilities.test.js.map +1 -0
- package/dist/__tests__/VideoDecoder.test.d.ts +5 -0
- package/dist/__tests__/VideoDecoder.test.d.ts.map +1 -0
- package/dist/__tests__/VideoDecoder.test.js +675 -0
- package/dist/__tests__/VideoDecoder.test.js.map +1 -0
- package/dist/__tests__/VideoEncoder.test.d.ts +5 -0
- package/dist/__tests__/VideoEncoder.test.d.ts.map +1 -0
- package/dist/__tests__/VideoEncoder.test.js +468 -0
- package/dist/__tests__/VideoEncoder.test.js.map +1 -0
- package/dist/__tests__/VideoFrame.test.d.ts +5 -0
- package/dist/__tests__/VideoFrame.test.d.ts.map +1 -0
- package/dist/__tests__/VideoFrame.test.js +243 -0
- package/dist/__tests__/VideoFrame.test.js.map +1 -0
- package/dist/__tests__/aac-utils.test.d.ts +2 -0
- package/dist/__tests__/aac-utils.test.d.ts.map +1 -0
- package/dist/__tests__/aac-utils.test.js +37 -0
- package/dist/__tests__/aac-utils.test.js.map +1 -0
- package/dist/__tests__/avc-utils.test.d.ts +2 -0
- package/dist/__tests__/avc-utils.test.d.ts.map +1 -0
- package/dist/__tests__/avc-utils.test.js +63 -0
- package/dist/__tests__/avc-utils.test.js.map +1 -0
- package/dist/__tests__/hevc-utils.test.d.ts +2 -0
- package/dist/__tests__/hevc-utils.test.d.ts.map +1 -0
- package/dist/__tests__/hevc-utils.test.js +78 -0
- package/dist/__tests__/hevc-utils.test.js.map +1 -0
- package/dist/capabilities/MediaCapabilities.d.ts +78 -0
- package/dist/capabilities/MediaCapabilities.d.ts.map +1 -0
- package/dist/capabilities/MediaCapabilities.js +276 -0
- package/dist/capabilities/MediaCapabilities.js.map +1 -0
- package/dist/capabilities/codecs.d.ts +72 -0
- package/dist/capabilities/codecs.d.ts.map +1 -0
- package/dist/capabilities/codecs.js +153 -0
- package/dist/capabilities/codecs.js.map +1 -0
- package/dist/capabilities/index.d.ts +7 -0
- package/dist/capabilities/index.d.ts.map +1 -0
- package/dist/capabilities/index.js +8 -0
- package/dist/capabilities/index.js.map +1 -0
- package/dist/capabilities/types.d.ts +77 -0
- package/dist/capabilities/types.d.ts.map +1 -0
- package/dist/capabilities/types.js +5 -0
- package/dist/capabilities/types.js.map +1 -0
- package/dist/core/AudioData.d.ts +36 -0
- package/dist/core/AudioData.d.ts.map +1 -0
- package/dist/core/AudioData.js +229 -0
- package/dist/core/AudioData.js.map +1 -0
- package/dist/core/EncodedAudioChunk.d.ts +26 -0
- package/dist/core/EncodedAudioChunk.d.ts.map +1 -0
- package/dist/core/EncodedAudioChunk.js +58 -0
- package/dist/core/EncodedAudioChunk.js.map +1 -0
- package/dist/core/EncodedVideoChunk.d.ts +23 -0
- package/dist/core/EncodedVideoChunk.d.ts.map +1 -0
- package/dist/core/EncodedVideoChunk.js +55 -0
- package/dist/core/EncodedVideoChunk.js.map +1 -0
- package/dist/core/VideoFrame.d.ts +61 -0
- package/dist/core/VideoFrame.d.ts.map +1 -0
- package/dist/core/VideoFrame.js +385 -0
- package/dist/core/VideoFrame.js.map +1 -0
- package/dist/core/index.d.ts +8 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +8 -0
- package/dist/core/index.js.map +1 -0
- package/dist/debug-h264.d.ts +5 -0
- package/dist/debug-h264.d.ts.map +1 -0
- package/dist/debug-h264.js +103 -0
- package/dist/debug-h264.js.map +1 -0
- package/dist/decoders/AudioDecoder.d.ts +57 -0
- package/dist/decoders/AudioDecoder.d.ts.map +1 -0
- package/dist/decoders/AudioDecoder.js +333 -0
- package/dist/decoders/AudioDecoder.js.map +1 -0
- package/dist/decoders/ImageDecoder.d.ts +111 -0
- package/dist/decoders/ImageDecoder.d.ts.map +1 -0
- package/dist/decoders/ImageDecoder.js +686 -0
- package/dist/decoders/ImageDecoder.js.map +1 -0
- package/dist/decoders/VideoDecoder.d.ts +70 -0
- package/dist/decoders/VideoDecoder.d.ts.map +1 -0
- package/dist/decoders/VideoDecoder.js +410 -0
- package/dist/decoders/VideoDecoder.js.map +1 -0
- package/dist/decoders/index.d.ts +8 -0
- package/dist/decoders/index.d.ts.map +1 -0
- package/dist/decoders/index.js +7 -0
- package/dist/decoders/index.js.map +1 -0
- package/dist/demos/demo-audio-opus.d.ts +5 -0
- package/dist/demos/demo-audio-opus.d.ts.map +1 -0
- package/dist/demos/demo-audio-opus.js +107 -0
- package/dist/demos/demo-audio-opus.js.map +1 -0
- package/dist/demos/demo-audio.d.ts +10 -0
- package/dist/demos/demo-audio.d.ts.map +1 -0
- package/dist/demos/demo-audio.js +135 -0
- package/dist/demos/demo-audio.js.map +1 -0
- package/dist/demos/demo-conversion.d.ts +13 -0
- package/dist/demos/demo-conversion.d.ts.map +1 -0
- package/dist/demos/demo-conversion.js +301 -0
- package/dist/demos/demo-conversion.js.map +1 -0
- package/dist/demos/demo-h264.d.ts +7 -0
- package/dist/demos/demo-h264.d.ts.map +1 -0
- package/dist/demos/demo-h264.js +134 -0
- package/dist/demos/demo-h264.js.map +1 -0
- package/dist/demos/demo-hwaccel-conversion.d.ts +8 -0
- package/dist/demos/demo-hwaccel-conversion.d.ts.map +1 -0
- package/dist/demos/demo-hwaccel-conversion.js +161 -0
- package/dist/demos/demo-hwaccel-conversion.js.map +1 -0
- package/dist/demos/demo-hwaccel.d.ts +7 -0
- package/dist/demos/demo-hwaccel.d.ts.map +1 -0
- package/dist/demos/demo-hwaccel.js +51 -0
- package/dist/demos/demo-hwaccel.js.map +1 -0
- package/dist/demos/demo-image.d.ts +12 -0
- package/dist/demos/demo-image.d.ts.map +1 -0
- package/dist/demos/demo-image.js +178 -0
- package/dist/demos/demo-image.js.map +1 -0
- package/dist/demos/demo-mediabunny.d.ts +7 -0
- package/dist/demos/demo-mediabunny.d.ts.map +1 -0
- package/dist/demos/demo-mediabunny.js +78 -0
- package/dist/demos/demo-mediabunny.js.map +1 -0
- package/dist/demos/demo-pipeline.d.ts +8 -0
- package/dist/demos/demo-pipeline.d.ts.map +1 -0
- package/dist/demos/demo-pipeline.js +83 -0
- package/dist/demos/demo-pipeline.js.map +1 -0
- package/dist/demos/demo-samples.d.ts +9 -0
- package/dist/demos/demo-samples.d.ts.map +1 -0
- package/dist/demos/demo-samples.js +413 -0
- package/dist/demos/demo-samples.js.map +1 -0
- package/dist/demos/demo-streaming.d.ts +8 -0
- package/dist/demos/demo-streaming.d.ts.map +1 -0
- package/dist/demos/demo-streaming.js +299 -0
- package/dist/demos/demo-streaming.js.map +1 -0
- package/dist/demos/demo-webcodecs.d.ts +8 -0
- package/dist/demos/demo-webcodecs.d.ts.map +1 -0
- package/dist/demos/demo-webcodecs.js +316 -0
- package/dist/demos/demo-webcodecs.js.map +1 -0
- package/dist/demos/demo.d.ts +10 -0
- package/dist/demos/demo.d.ts.map +1 -0
- package/dist/demos/demo.js +123 -0
- package/dist/demos/demo.js.map +1 -0
- package/dist/encoders/AudioEncoder.d.ts +69 -0
- package/dist/encoders/AudioEncoder.d.ts.map +1 -0
- package/dist/encoders/AudioEncoder.js +425 -0
- package/dist/encoders/AudioEncoder.js.map +1 -0
- package/dist/encoders/VideoEncoder.d.ts +80 -0
- package/dist/encoders/VideoEncoder.d.ts.map +1 -0
- package/dist/encoders/VideoEncoder.js +386 -0
- package/dist/encoders/VideoEncoder.js.map +1 -0
- package/dist/encoders/codecs/av1.d.ts +31 -0
- package/dist/encoders/codecs/av1.d.ts.map +1 -0
- package/dist/encoders/codecs/av1.js +66 -0
- package/dist/encoders/codecs/av1.js.map +1 -0
- package/dist/encoders/codecs/h264.d.ts +28 -0
- package/dist/encoders/codecs/h264.d.ts.map +1 -0
- package/dist/encoders/codecs/h264.js +95 -0
- package/dist/encoders/codecs/h264.js.map +1 -0
- package/dist/encoders/codecs/hevc.d.ts +28 -0
- package/dist/encoders/codecs/hevc.d.ts.map +1 -0
- package/dist/encoders/codecs/hevc.js +73 -0
- package/dist/encoders/codecs/hevc.js.map +1 -0
- package/dist/encoders/codecs/index.d.ts +19 -0
- package/dist/encoders/codecs/index.d.ts.map +1 -0
- package/dist/encoders/codecs/index.js +60 -0
- package/dist/encoders/codecs/index.js.map +1 -0
- package/dist/encoders/codecs/vp9.d.ts +29 -0
- package/dist/encoders/codecs/vp9.d.ts.map +1 -0
- package/dist/encoders/codecs/vp9.js +58 -0
- package/dist/encoders/codecs/vp9.js.map +1 -0
- package/dist/encoders/index.d.ts +8 -0
- package/dist/encoders/index.d.ts.map +1 -0
- package/dist/encoders/index.js +8 -0
- package/dist/encoders/index.js.map +1 -0
- package/dist/ffmpeg/FFmpegProcess.d.ts +111 -0
- package/dist/ffmpeg/FFmpegProcess.d.ts.map +1 -0
- package/dist/ffmpeg/FFmpegProcess.js +543 -0
- package/dist/ffmpeg/FFmpegProcess.js.map +1 -0
- package/dist/ffmpeg/audio-codecs.d.ts +59 -0
- package/dist/ffmpeg/audio-codecs.d.ts.map +1 -0
- package/dist/ffmpeg/audio-codecs.js +99 -0
- package/dist/ffmpeg/audio-codecs.js.map +1 -0
- package/dist/ffmpeg/formats.d.ts +42 -0
- package/dist/ffmpeg/formats.d.ts.map +1 -0
- package/dist/ffmpeg/formats.js +147 -0
- package/dist/ffmpeg/formats.js.map +1 -0
- package/dist/ffmpeg/index.d.ts +9 -0
- package/dist/ffmpeg/index.d.ts.map +1 -0
- package/dist/ffmpeg/index.js +13 -0
- package/dist/ffmpeg/index.js.map +1 -0
- package/dist/ffmpeg/parsers/annexb.d.ts +88 -0
- package/dist/ffmpeg/parsers/annexb.d.ts.map +1 -0
- package/dist/ffmpeg/parsers/annexb.js +201 -0
- package/dist/ffmpeg/parsers/annexb.js.map +1 -0
- package/dist/ffmpeg/parsers/index.d.ts +6 -0
- package/dist/ffmpeg/parsers/index.d.ts.map +1 -0
- package/dist/ffmpeg/parsers/index.js +8 -0
- package/dist/ffmpeg/parsers/index.js.map +1 -0
- package/dist/ffmpeg/parsers/ivf.d.ts +54 -0
- package/dist/ffmpeg/parsers/ivf.d.ts.map +1 -0
- package/dist/ffmpeg/parsers/ivf.js +109 -0
- package/dist/ffmpeg/parsers/ivf.js.map +1 -0
- package/dist/ffmpeg/types.d.ts +85 -0
- package/dist/ffmpeg/types.d.ts.map +1 -0
- package/dist/ffmpeg/types.js +8 -0
- package/dist/ffmpeg/types.js.map +1 -0
- package/dist/formats/audio-formats.d.ts +61 -0
- package/dist/formats/audio-formats.d.ts.map +1 -0
- package/dist/formats/audio-formats.js +113 -0
- package/dist/formats/audio-formats.js.map +1 -0
- package/dist/formats/color-space.d.ts +35 -0
- package/dist/formats/color-space.d.ts.map +1 -0
- package/dist/formats/color-space.js +62 -0
- package/dist/formats/color-space.js.map +1 -0
- package/dist/formats/conversions/frame-converter.d.ts +42 -0
- package/dist/formats/conversions/frame-converter.d.ts.map +1 -0
- package/dist/formats/conversions/frame-converter.js +244 -0
- package/dist/formats/conversions/frame-converter.js.map +1 -0
- package/dist/formats/conversions/index.d.ts +8 -0
- package/dist/formats/conversions/index.d.ts.map +1 -0
- package/dist/formats/conversions/index.js +10 -0
- package/dist/formats/conversions/index.js.map +1 -0
- package/dist/formats/index.d.ts +9 -0
- package/dist/formats/index.d.ts.map +1 -0
- package/dist/formats/index.js +14 -0
- package/dist/formats/index.js.map +1 -0
- package/dist/formats/parsers/index.d.ts +5 -0
- package/dist/formats/parsers/index.d.ts.map +1 -0
- package/dist/formats/parsers/index.js +5 -0
- package/dist/formats/parsers/index.js.map +1 -0
- package/dist/formats/parsers/webp.d.ts +16 -0
- package/dist/formats/parsers/webp.d.ts.map +1 -0
- package/dist/formats/parsers/webp.js +116 -0
- package/dist/formats/parsers/webp.js.map +1 -0
- package/dist/formats/pixel-formats.d.ts +41 -0
- package/dist/formats/pixel-formats.d.ts.map +1 -0
- package/dist/formats/pixel-formats.js +113 -0
- package/dist/formats/pixel-formats.js.map +1 -0
- package/dist/hardware/HardwareAcceleration.d.ts +6 -0
- package/dist/hardware/HardwareAcceleration.d.ts.map +1 -0
- package/dist/hardware/HardwareAcceleration.js +6 -0
- package/dist/hardware/HardwareAcceleration.js.map +1 -0
- package/dist/hardware/decoder-args.d.ts +25 -0
- package/dist/hardware/decoder-args.d.ts.map +1 -0
- package/dist/hardware/decoder-args.js +84 -0
- package/dist/hardware/decoder-args.js.map +1 -0
- package/dist/hardware/detection.d.ts +39 -0
- package/dist/hardware/detection.d.ts.map +1 -0
- package/dist/hardware/detection.js +178 -0
- package/dist/hardware/detection.js.map +1 -0
- package/dist/hardware/encoder-args.d.ts +38 -0
- package/dist/hardware/encoder-args.d.ts.map +1 -0
- package/dist/hardware/encoder-args.js +177 -0
- package/dist/hardware/encoder-args.js.map +1 -0
- package/dist/hardware/index.d.ts +12 -0
- package/dist/hardware/index.d.ts.map +1 -0
- package/dist/hardware/index.js +14 -0
- package/dist/hardware/index.js.map +1 -0
- package/dist/hardware/types.d.ts +29 -0
- package/dist/hardware/types.d.ts.map +1 -0
- package/dist/hardware/types.js +58 -0
- package/dist/hardware/types.js.map +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/mediabunny/FFmpegAudioDecoder.d.ts +37 -0
- package/dist/mediabunny/FFmpegAudioDecoder.d.ts.map +1 -0
- package/dist/mediabunny/FFmpegAudioDecoder.js +254 -0
- package/dist/mediabunny/FFmpegAudioDecoder.js.map +1 -0
- package/dist/mediabunny/FFmpegAudioEncoder.d.ts +77 -0
- package/dist/mediabunny/FFmpegAudioEncoder.d.ts.map +1 -0
- package/dist/mediabunny/FFmpegAudioEncoder.js +484 -0
- package/dist/mediabunny/FFmpegAudioEncoder.js.map +1 -0
- package/dist/mediabunny/FFmpegVideoDecoder.d.ts +58 -0
- package/dist/mediabunny/FFmpegVideoDecoder.d.ts.map +1 -0
- package/dist/mediabunny/FFmpegVideoDecoder.js +366 -0
- package/dist/mediabunny/FFmpegVideoDecoder.js.map +1 -0
- package/dist/mediabunny/FFmpegVideoEncoder.d.ts +77 -0
- package/dist/mediabunny/FFmpegVideoEncoder.d.ts.map +1 -0
- package/dist/mediabunny/FFmpegVideoEncoder.js +551 -0
- package/dist/mediabunny/FFmpegVideoEncoder.js.map +1 -0
- package/dist/mediabunny/index.d.ts +21 -0
- package/dist/mediabunny/index.d.ts.map +1 -0
- package/dist/mediabunny/index.js +33 -0
- package/dist/mediabunny/index.js.map +1 -0
- package/dist/polyfill.d.ts +27 -0
- package/dist/polyfill.d.ts.map +1 -0
- package/dist/polyfill.js +78 -0
- package/dist/polyfill.js.map +1 -0
- package/dist/polyfills/CanvasRenderingContext2DPolyfill.d.ts +72 -0
- package/dist/polyfills/CanvasRenderingContext2DPolyfill.d.ts.map +1 -0
- package/dist/polyfills/CanvasRenderingContext2DPolyfill.js +293 -0
- package/dist/polyfills/CanvasRenderingContext2DPolyfill.js.map +1 -0
- package/dist/polyfills/ImageDataPolyfill.d.ts +12 -0
- package/dist/polyfills/ImageDataPolyfill.d.ts.map +1 -0
- package/dist/polyfills/ImageDataPolyfill.js +22 -0
- package/dist/polyfills/ImageDataPolyfill.js.map +1 -0
- package/dist/polyfills/OffscreenCanvas.d.ts +15 -0
- package/dist/polyfills/OffscreenCanvas.d.ts.map +1 -0
- package/dist/polyfills/OffscreenCanvas.js +35 -0
- package/dist/polyfills/OffscreenCanvas.js.map +1 -0
- package/dist/polyfills/OffscreenCanvasPolyfill.d.ts +16 -0
- package/dist/polyfills/OffscreenCanvasPolyfill.d.ts.map +1 -0
- package/dist/polyfills/OffscreenCanvasPolyfill.js +46 -0
- package/dist/polyfills/OffscreenCanvasPolyfill.js.map +1 -0
- package/dist/polyfills/VideoFramePolyfill.d.ts +44 -0
- package/dist/polyfills/VideoFramePolyfill.d.ts.map +1 -0
- package/dist/polyfills/VideoFramePolyfill.js +98 -0
- package/dist/polyfills/VideoFramePolyfill.js.map +1 -0
- package/dist/tools/generate-capabilities-profile.d.ts +2 -0
- package/dist/tools/generate-capabilities-profile.d.ts.map +1 -0
- package/dist/tools/generate-capabilities-profile.js +63 -0
- package/dist/tools/generate-capabilities-profile.js.map +1 -0
- package/dist/types/audio.d.ts +26 -0
- package/dist/types/audio.d.ts.map +1 -0
- package/dist/types/audio.js +5 -0
- package/dist/types/audio.js.map +1 -0
- package/dist/types/common.d.ts +68 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +70 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/geometry.d.ts +35 -0
- package/dist/types/geometry.d.ts.map +1 -0
- package/dist/types/geometry.js +34 -0
- package/dist/types/geometry.js.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/video.d.ts +43 -0
- package/dist/types/video.d.ts.map +1 -0
- package/dist/types/video.js +5 -0
- package/dist/types/video.js.map +1 -0
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/aac.d.ts +26 -0
- package/dist/utils/aac.d.ts.map +1 -0
- package/dist/utils/aac.js +129 -0
- package/dist/utils/aac.js.map +1 -0
- package/dist/utils/avc.d.ts +39 -0
- package/dist/utils/avc.d.ts.map +1 -0
- package/dist/utils/avc.js +225 -0
- package/dist/utils/avc.js.map +1 -0
- package/dist/utils/buffer.d.ts +25 -0
- package/dist/utils/buffer.d.ts.map +1 -0
- package/dist/utils/buffer.js +73 -0
- package/dist/utils/buffer.js.map +1 -0
- package/dist/utils/hevc.d.ts +27 -0
- package/dist/utils/hevc.d.ts.map +1 -0
- package/dist/utils/hevc.js +239 -0
- package/dist/utils/hevc.js.map +1 -0
- package/dist/utils/index.d.ts +11 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +16 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +55 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +110 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/type-guards.d.ts +50 -0
- package/dist/utils/type-guards.d.ts.map +1 -0
- package/dist/utils/type-guards.js +49 -0
- package/dist/utils/type-guards.js.map +1 -0
- package/dist/utils/validation.d.ts +32 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +66 -0
- package/dist/utils/validation.js.map +1 -0
- package/docs/api.md +506 -0
- package/docs/codecs.md +382 -0
- package/docs/configuration.md +442 -0
- package/examples/README.md +100 -0
- package/examples/audio-encoding.ts +85 -0
- package/examples/hardware-decoding.ts +245 -0
- package/examples/hardware-encoding.ts +231 -0
- package/examples/image-decoding.ts +145 -0
- package/examples/streaming.ts +151 -0
- package/examples/transparent-video.ts +162 -0
- package/examples/video-decoding.ts +107 -0
- package/examples/video-encoding.ts +93 -0
- package/package.json +105 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* H.264/AVC codec configuration
|
|
3
|
+
*/
|
|
4
|
+
export interface H264EncoderOptions {
|
|
5
|
+
profile?: 'baseline' | 'main' | 'high';
|
|
6
|
+
level?: string;
|
|
7
|
+
preset?: 'ultrafast' | 'superfast' | 'veryfast' | 'faster' | 'fast' | 'medium' | 'slow' | 'slower' | 'veryslow';
|
|
8
|
+
tune?: 'film' | 'animation' | 'grain' | 'stillimage' | 'fastdecode' | 'zerolatency';
|
|
9
|
+
bframes?: number;
|
|
10
|
+
refs?: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Get FFmpeg arguments for H.264 encoding
|
|
14
|
+
*/
|
|
15
|
+
export declare function getH264Args(options: H264EncoderOptions, isRealtime: boolean): string[];
|
|
16
|
+
/**
|
|
17
|
+
* Parse H.264 codec string (e.g., "avc1.42001E")
|
|
18
|
+
*/
|
|
19
|
+
export declare function parseH264CodecString(codec: string): {
|
|
20
|
+
profile: string;
|
|
21
|
+
level: number;
|
|
22
|
+
constraint: number;
|
|
23
|
+
} | null;
|
|
24
|
+
/**
|
|
25
|
+
* Generate H.264 codec string
|
|
26
|
+
*/
|
|
27
|
+
export declare function generateH264CodecString(profile?: 'baseline' | 'main' | 'high', level?: number): string;
|
|
28
|
+
//# sourceMappingURL=h264.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"h264.d.ts","sourceRoot":"","sources":["../../../src/encoders/codecs/h264.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;IAChH,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,GAAG,YAAY,GAAG,YAAY,GAAG,aAAa,CAAC;IACpF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,EAAE,CAmCtF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,IAAI,CAwBP;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,UAAU,GAAG,MAAM,GAAG,MAAe,EAC9C,KAAK,GAAE,MAAY,GAClB,MAAM,CAWR"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* H.264/AVC codec configuration
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Get FFmpeg arguments for H.264 encoding
|
|
6
|
+
*/
|
|
7
|
+
export function getH264Args(options, isRealtime) {
|
|
8
|
+
const args = [];
|
|
9
|
+
if (isRealtime) {
|
|
10
|
+
// Realtime mode: minimum latency, immediate output
|
|
11
|
+
args.push('-preset', options.preset ?? 'ultrafast');
|
|
12
|
+
args.push('-tune', options.tune ?? 'zerolatency');
|
|
13
|
+
args.push('-x264-params', 'aud=1:bframes=0:rc-lookahead=0:threads=1:sliced-threads=0:sync-lookahead=0:intra-refresh=1');
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
// Quality mode: better compression, some latency
|
|
17
|
+
args.push('-preset', options.preset ?? 'medium');
|
|
18
|
+
if (options.tune) {
|
|
19
|
+
args.push('-tune', options.tune);
|
|
20
|
+
}
|
|
21
|
+
const params = ['aud=1'];
|
|
22
|
+
if (options.bframes !== undefined) {
|
|
23
|
+
params.push(`bframes=${options.bframes}`);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
params.push('bframes=2');
|
|
27
|
+
}
|
|
28
|
+
params.push('rc-lookahead=20');
|
|
29
|
+
if (options.refs !== undefined) {
|
|
30
|
+
params.push(`ref=${options.refs}`);
|
|
31
|
+
}
|
|
32
|
+
args.push('-x264-params', params.join(':'));
|
|
33
|
+
}
|
|
34
|
+
if (options.profile) {
|
|
35
|
+
args.push('-profile:v', options.profile);
|
|
36
|
+
}
|
|
37
|
+
if (options.level) {
|
|
38
|
+
args.push('-level', options.level);
|
|
39
|
+
}
|
|
40
|
+
return args;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Parse H.264 codec string (e.g., "avc1.42001E")
|
|
44
|
+
*/
|
|
45
|
+
export function parseH264CodecString(codec) {
|
|
46
|
+
const match = codec.match(/^avc[13]\.([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/);
|
|
47
|
+
if (!match)
|
|
48
|
+
return null;
|
|
49
|
+
const profileIdc = parseInt(match[1], 16);
|
|
50
|
+
const constraint = parseInt(match[2], 16);
|
|
51
|
+
const levelIdc = parseInt(match[3], 16);
|
|
52
|
+
let profile = 'unknown';
|
|
53
|
+
switch (profileIdc) {
|
|
54
|
+
case 66:
|
|
55
|
+
profile = 'baseline';
|
|
56
|
+
break;
|
|
57
|
+
case 77:
|
|
58
|
+
profile = 'main';
|
|
59
|
+
break;
|
|
60
|
+
case 88:
|
|
61
|
+
profile = 'extended';
|
|
62
|
+
break;
|
|
63
|
+
case 100:
|
|
64
|
+
profile = 'high';
|
|
65
|
+
break;
|
|
66
|
+
case 110:
|
|
67
|
+
profile = 'high10';
|
|
68
|
+
break;
|
|
69
|
+
case 122:
|
|
70
|
+
profile = 'high422';
|
|
71
|
+
break;
|
|
72
|
+
case 244:
|
|
73
|
+
profile = 'high444';
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
profile,
|
|
78
|
+
level: levelIdc / 10,
|
|
79
|
+
constraint,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Generate H.264 codec string
|
|
84
|
+
*/
|
|
85
|
+
export function generateH264CodecString(profile = 'high', level = 4.0) {
|
|
86
|
+
const profileMap = {
|
|
87
|
+
baseline: 66,
|
|
88
|
+
main: 77,
|
|
89
|
+
high: 100,
|
|
90
|
+
};
|
|
91
|
+
const profileIdc = profileMap[profile] ?? 100;
|
|
92
|
+
const levelIdc = Math.round(level * 10);
|
|
93
|
+
return `avc1.${profileIdc.toString(16).padStart(2, '0')}00${levelIdc.toString(16).padStart(2, '0')}`;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=h264.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"h264.js","sourceRoot":"","sources":["../../../src/encoders/codecs/h264.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HEVC/H.265 codec configuration
|
|
3
|
+
*/
|
|
4
|
+
export interface HEVCEncoderOptions {
|
|
5
|
+
profile?: 'main' | 'main10' | 'main444-8' | 'main444-10';
|
|
6
|
+
tier?: 'main' | 'high';
|
|
7
|
+
level?: string;
|
|
8
|
+
preset?: 'ultrafast' | 'superfast' | 'veryfast' | 'faster' | 'fast' | 'medium' | 'slow' | 'slower' | 'veryslow' | 'placebo';
|
|
9
|
+
tune?: 'psnr' | 'ssim' | 'grain' | 'fastdecode' | 'zerolatency';
|
|
10
|
+
bframes?: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Get FFmpeg arguments for HEVC encoding
|
|
14
|
+
*/
|
|
15
|
+
export declare function getHEVCArgs(options: HEVCEncoderOptions, isRealtime: boolean): string[];
|
|
16
|
+
/**
|
|
17
|
+
* Parse HEVC codec string (e.g., "hev1.1.6.L93.B0")
|
|
18
|
+
*/
|
|
19
|
+
export declare function parseHEVCCodecString(codec: string): {
|
|
20
|
+
profile: string;
|
|
21
|
+
tier: string;
|
|
22
|
+
level: number;
|
|
23
|
+
} | null;
|
|
24
|
+
/**
|
|
25
|
+
* Generate HEVC codec string
|
|
26
|
+
*/
|
|
27
|
+
export declare function generateHEVCCodecString(profile?: 'main' | 'main10', level?: number, tier?: 'main' | 'high'): string;
|
|
28
|
+
//# sourceMappingURL=hevc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hevc.d.ts","sourceRoot":"","sources":["../../../src/encoders/codecs/hevc.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,YAAY,CAAC;IACzD,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAC5H,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,aAAa,CAAC;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,EAAE,CAmCtF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,IAAI,CAeP;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,MAAM,GAAG,QAAiB,EACnC,KAAK,GAAE,MAAY,EACnB,IAAI,GAAE,MAAM,GAAG,MAAe,GAC7B,MAAM,CAWR"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HEVC/H.265 codec configuration
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Get FFmpeg arguments for HEVC encoding
|
|
6
|
+
*/
|
|
7
|
+
export function getHEVCArgs(options, isRealtime) {
|
|
8
|
+
const args = [];
|
|
9
|
+
if (isRealtime) {
|
|
10
|
+
args.push('-preset', options.preset ?? 'ultrafast');
|
|
11
|
+
if (options.tune ?? 'zerolatency') {
|
|
12
|
+
args.push('-tune', options.tune ?? 'zerolatency');
|
|
13
|
+
}
|
|
14
|
+
args.push('-x265-params', 'aud=1:bframes=0:rc-lookahead=0');
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
args.push('-preset', options.preset ?? 'medium');
|
|
18
|
+
if (options.tune) {
|
|
19
|
+
args.push('-tune', options.tune);
|
|
20
|
+
}
|
|
21
|
+
const params = ['aud=1'];
|
|
22
|
+
if (options.bframes !== undefined) {
|
|
23
|
+
params.push(`bframes=${options.bframes}`);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
params.push('bframes=2');
|
|
27
|
+
}
|
|
28
|
+
params.push('rc-lookahead=20');
|
|
29
|
+
args.push('-x265-params', params.join(':'));
|
|
30
|
+
}
|
|
31
|
+
if (options.profile) {
|
|
32
|
+
args.push('-profile:v', options.profile);
|
|
33
|
+
}
|
|
34
|
+
if (options.tier) {
|
|
35
|
+
args.push('-tier', options.tier);
|
|
36
|
+
}
|
|
37
|
+
if (options.level) {
|
|
38
|
+
args.push('-level', options.level);
|
|
39
|
+
}
|
|
40
|
+
return args;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Parse HEVC codec string (e.g., "hev1.1.6.L93.B0")
|
|
44
|
+
*/
|
|
45
|
+
export function parseHEVCCodecString(codec) {
|
|
46
|
+
const match = codec.match(/^hev1\.(\d)\.[\dA-F]+\.L(\d+)\.([BH])(\d+)?/i);
|
|
47
|
+
if (!match)
|
|
48
|
+
return null;
|
|
49
|
+
const profileMap = {
|
|
50
|
+
'1': 'main',
|
|
51
|
+
'2': 'main10',
|
|
52
|
+
'4': 'main444-8',
|
|
53
|
+
};
|
|
54
|
+
return {
|
|
55
|
+
profile: profileMap[match[1]] ?? 'main',
|
|
56
|
+
tier: match[3] === 'H' ? 'high' : 'main',
|
|
57
|
+
level: parseInt(match[2], 10) / 30,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Generate HEVC codec string
|
|
62
|
+
*/
|
|
63
|
+
export function generateHEVCCodecString(profile = 'main', level = 4.0, tier = 'main') {
|
|
64
|
+
const profileMap = {
|
|
65
|
+
main: 1,
|
|
66
|
+
main10: 2,
|
|
67
|
+
};
|
|
68
|
+
const profileId = profileMap[profile] ?? 1;
|
|
69
|
+
const levelId = Math.round(level * 30);
|
|
70
|
+
const tierChar = tier === 'high' ? 'H' : 'B';
|
|
71
|
+
return `hev1.${profileId}.4.L${levelId}.${tierChar}0`;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=hevc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hevc.js","sourceRoot":"","sources":["../../../src/encoders/codecs/hevc.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codec-specific configurations and utilities
|
|
3
|
+
*/
|
|
4
|
+
export { getH264Args, parseH264CodecString, generateH264CodecString, type H264EncoderOptions, } from './h264.js';
|
|
5
|
+
export { getHEVCArgs, parseHEVCCodecString, generateHEVCCodecString, type HEVCEncoderOptions, } from './hevc.js';
|
|
6
|
+
export { getVP9Args, parseVP9CodecString, generateVP9CodecString, type VP9EncoderOptions, } from './vp9.js';
|
|
7
|
+
export { getAV1Args, parseAV1CodecString, generateAV1CodecString, type AV1EncoderOptions, } from './av1.js';
|
|
8
|
+
/**
|
|
9
|
+
* Get codec-specific FFmpeg arguments
|
|
10
|
+
*/
|
|
11
|
+
export declare function getCodecArgs(codec: string, isRealtime: boolean, options?: Record<string, unknown>): string[];
|
|
12
|
+
/**
|
|
13
|
+
* Parse any codec string and return structured info
|
|
14
|
+
*/
|
|
15
|
+
export declare function parseCodecString(codec: string): {
|
|
16
|
+
type: 'h264' | 'hevc' | 'vp9' | 'av1' | 'unknown';
|
|
17
|
+
info: Record<string, unknown> | null;
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/encoders/codecs/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AA2BH,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,uBAAuB,EACvB,KAAK,kBAAkB,GACxB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,uBAAuB,EACvB,KAAK,kBAAkB,GACxB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,sBAAsB,EACtB,KAAK,iBAAiB,GACvB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,sBAAsB,EACtB,KAAK,iBAAiB,GACvB,MAAM,UAAU,CAAC;AAElB;;GAEG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,OAAO,EACnB,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACpC,MAAM,EAAE,CAmBV;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG;IAC/C,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;IAClD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACtC,CAmBA"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codec-specific configurations and utilities
|
|
3
|
+
*/
|
|
4
|
+
import { getH264Args as _getH264Args, parseH264CodecString as _parseH264CodecString, } from './h264.js';
|
|
5
|
+
import { getHEVCArgs as _getHEVCArgs, parseHEVCCodecString as _parseHEVCCodecString, } from './hevc.js';
|
|
6
|
+
import { getVP9Args as _getVP9Args, parseVP9CodecString as _parseVP9CodecString, } from './vp9.js';
|
|
7
|
+
import { getAV1Args as _getAV1Args, parseAV1CodecString as _parseAV1CodecString, } from './av1.js';
|
|
8
|
+
// H.264/AVC
|
|
9
|
+
export { getH264Args, parseH264CodecString, generateH264CodecString, } from './h264.js';
|
|
10
|
+
// HEVC/H.265
|
|
11
|
+
export { getHEVCArgs, parseHEVCCodecString, generateHEVCCodecString, } from './hevc.js';
|
|
12
|
+
// VP9
|
|
13
|
+
export { getVP9Args, parseVP9CodecString, generateVP9CodecString, } from './vp9.js';
|
|
14
|
+
// AV1
|
|
15
|
+
export { getAV1Args, parseAV1CodecString, generateAV1CodecString, } from './av1.js';
|
|
16
|
+
/**
|
|
17
|
+
* Get codec-specific FFmpeg arguments
|
|
18
|
+
*/
|
|
19
|
+
export function getCodecArgs(codec, isRealtime, options = {}) {
|
|
20
|
+
const codecBase = codec.split('.')[0].toLowerCase();
|
|
21
|
+
switch (codecBase) {
|
|
22
|
+
case 'avc1':
|
|
23
|
+
case 'avc3':
|
|
24
|
+
return _getH264Args(options, isRealtime);
|
|
25
|
+
case 'hev1':
|
|
26
|
+
case 'hvc1':
|
|
27
|
+
return _getHEVCArgs(options, isRealtime);
|
|
28
|
+
case 'vp09':
|
|
29
|
+
case 'vp9':
|
|
30
|
+
return _getVP9Args(options, isRealtime);
|
|
31
|
+
case 'av01':
|
|
32
|
+
case 'av1':
|
|
33
|
+
return _getAV1Args(options, isRealtime);
|
|
34
|
+
default:
|
|
35
|
+
return [];
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Parse any codec string and return structured info
|
|
40
|
+
*/
|
|
41
|
+
export function parseCodecString(codec) {
|
|
42
|
+
const codecBase = codec.split('.')[0].toLowerCase();
|
|
43
|
+
switch (codecBase) {
|
|
44
|
+
case 'avc1':
|
|
45
|
+
case 'avc3':
|
|
46
|
+
return { type: 'h264', info: _parseH264CodecString(codec) };
|
|
47
|
+
case 'hev1':
|
|
48
|
+
case 'hvc1':
|
|
49
|
+
return { type: 'hevc', info: _parseHEVCCodecString(codec) };
|
|
50
|
+
case 'vp09':
|
|
51
|
+
case 'vp9':
|
|
52
|
+
return { type: 'vp9', info: _parseVP9CodecString(codec) };
|
|
53
|
+
case 'av01':
|
|
54
|
+
case 'av1':
|
|
55
|
+
return { type: 'av1', info: _parseAV1CodecString(codec) };
|
|
56
|
+
default:
|
|
57
|
+
return { type: 'unknown', info: null };
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/encoders/codecs/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,WAAW,IAAI,YAAY,EAC3B,oBAAoB,IAAI,qBAAqB,GAE9C,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,WAAW,IAAI,YAAY,EAC3B,oBAAoB,IAAI,qBAAqB,GAE9C,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,UAAU,IAAI,WAAW,EACzB,mBAAmB,IAAI,oBAAoB,GAE5C,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,UAAU,IAAI,WAAW,EACzB,mBAAmB,IAAI,oBAAoB,GAE5C,MAAM,UAAU,CAAC;AAElB,YAAY;AACZ,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,uBAAuB,GAExB,MAAM,WAAW,CAAC;AAEnB,aAAa;AACb,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,uBAAuB,GAExB,MAAM,WAAW,CAAC;AAEnB,MAAM;AACN,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,sBAAsB,GAEvB,MAAM,UAAU,CAAC;AAElB,MAAM;AACN,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,sBAAsB,GAEvB,MAAM,UAAU,CAAC;AAElB;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAa,EACb,UAAmB,EACnB,UAAmC,EAAE;IAErC,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAEpD,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM;YACT,OAAO,YAAY,CAAC,OAA6B,EAAE,UAAU,CAAC,CAAC;QACjE,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM;YACT,OAAO,YAAY,CAAC,OAA6B,EAAE,UAAU,CAAC,CAAC;QACjE,KAAK,MAAM,CAAC;QACZ,KAAK,KAAK;YACR,OAAO,WAAW,CAAC,OAA4B,EAAE,UAAU,CAAC,CAAC;QAC/D,KAAK,MAAM,CAAC;QACZ,KAAK,KAAK;YACR,OAAO,WAAW,CAAC,OAA4B,EAAE,UAAU,CAAC,CAAC;QAC/D;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAI5C,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAEpD,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM;YACT,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9D,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM;YACT,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9D,KAAK,MAAM,CAAC;QACZ,KAAK,KAAK;YACR,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5D,KAAK,MAAM,CAAC;QACZ,KAAK,KAAK;YACR,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5D;YACE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC3C,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VP9 codec configuration
|
|
3
|
+
*/
|
|
4
|
+
export interface VP9EncoderOptions {
|
|
5
|
+
profile?: 0 | 1 | 2 | 3;
|
|
6
|
+
deadline?: 'best' | 'good' | 'realtime';
|
|
7
|
+
cpuUsed?: number;
|
|
8
|
+
lagInFrames?: number;
|
|
9
|
+
rowMt?: boolean;
|
|
10
|
+
tileColumns?: number;
|
|
11
|
+
tileRows?: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Get FFmpeg arguments for VP9 encoding
|
|
15
|
+
*/
|
|
16
|
+
export declare function getVP9Args(options: VP9EncoderOptions, isRealtime: boolean): string[];
|
|
17
|
+
/**
|
|
18
|
+
* Parse VP9 codec string (e.g., "vp09.00.10.08")
|
|
19
|
+
*/
|
|
20
|
+
export declare function parseVP9CodecString(codec: string): {
|
|
21
|
+
profile: number;
|
|
22
|
+
level: number;
|
|
23
|
+
bitDepth: number;
|
|
24
|
+
} | null;
|
|
25
|
+
/**
|
|
26
|
+
* Generate VP9 codec string
|
|
27
|
+
*/
|
|
28
|
+
export declare function generateVP9CodecString(profile?: number, level?: number, bitDepth?: number): string;
|
|
29
|
+
//# sourceMappingURL=vp9.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vp9.d.ts","sourceRoot":"","sources":["../../../src/encoders/codecs/vp9.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,EAAE,CAiCpF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,IAAI,CASP;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,GAAE,MAAU,EACnB,KAAK,GAAE,MAAW,EAClB,QAAQ,GAAE,MAAU,GACnB,MAAM,CAER"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VP9 codec configuration
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Get FFmpeg arguments for VP9 encoding
|
|
6
|
+
*/
|
|
7
|
+
export function getVP9Args(options, isRealtime) {
|
|
8
|
+
const args = [];
|
|
9
|
+
if (isRealtime) {
|
|
10
|
+
args.push('-deadline', 'realtime');
|
|
11
|
+
args.push('-cpu-used', String(options.cpuUsed ?? 8));
|
|
12
|
+
args.push('-lag-in-frames', '0');
|
|
13
|
+
args.push('-row-mt', '1');
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
args.push('-deadline', options.deadline ?? 'good');
|
|
17
|
+
args.push('-cpu-used', String(options.cpuUsed ?? 2));
|
|
18
|
+
if (options.lagInFrames !== undefined) {
|
|
19
|
+
args.push('-lag-in-frames', String(options.lagInFrames));
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
args.push('-lag-in-frames', '25');
|
|
23
|
+
}
|
|
24
|
+
if (options.rowMt !== false) {
|
|
25
|
+
args.push('-row-mt', '1');
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (options.profile !== undefined) {
|
|
29
|
+
args.push('-profile:v', String(options.profile));
|
|
30
|
+
}
|
|
31
|
+
if (options.tileColumns !== undefined) {
|
|
32
|
+
args.push('-tile-columns', String(options.tileColumns));
|
|
33
|
+
}
|
|
34
|
+
if (options.tileRows !== undefined) {
|
|
35
|
+
args.push('-tile-rows', String(options.tileRows));
|
|
36
|
+
}
|
|
37
|
+
return args;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Parse VP9 codec string (e.g., "vp09.00.10.08")
|
|
41
|
+
*/
|
|
42
|
+
export function parseVP9CodecString(codec) {
|
|
43
|
+
const match = codec.match(/^vp09\.(\d{2})\.(\d{2})\.(\d{2})/);
|
|
44
|
+
if (!match)
|
|
45
|
+
return null;
|
|
46
|
+
return {
|
|
47
|
+
profile: parseInt(match[1], 10),
|
|
48
|
+
level: parseInt(match[2], 10),
|
|
49
|
+
bitDepth: parseInt(match[3], 10),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Generate VP9 codec string
|
|
54
|
+
*/
|
|
55
|
+
export function generateVP9CodecString(profile = 0, level = 10, bitDepth = 8) {
|
|
56
|
+
return `vp09.${profile.toString().padStart(2, '0')}.${level.toString().padStart(2, '0')}.${bitDepth.toString().padStart(2, '0')}`;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=vp9.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vp9.js","sourceRoot":"","sources":["../../../src/encoders/codecs/vp9.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,OAA0B,EAAE,UAAmB;IACxE,MAAM,IAAI,GAAa,EAAE,CAAC;IAE1B,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAK/C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC9D,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,OAAO;QACL,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC/B,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC7B,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;KACjC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAAkB,CAAC,EACnB,QAAgB,EAAE,EAClB,WAAmB,CAAC;IAEpB,OAAO,QAAQ,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACpI,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Encoder exports
|
|
3
|
+
*/
|
|
4
|
+
export { VideoEncoder, type VideoEncoderConfig, type VideoEncoderInit, type VideoEncoderOutputMetadata, type VideoEncoderSupport, type VideoEncoderEncodeOptions, } from './VideoEncoder.js';
|
|
5
|
+
export { AudioEncoder, type AudioEncoderConfig, type AudioEncoderInit, type AudioEncoderOutputMetadata, type AudioEncoderSupport, } from './AudioEncoder.js';
|
|
6
|
+
export type { CodecState } from './VideoEncoder.js';
|
|
7
|
+
export * from './codecs/index.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/encoders/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,YAAY,EACZ,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,GAC/B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,YAAY,EACZ,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,GACzB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/encoders/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,YAAY,GAMb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,YAAY,GAKb,MAAM,mBAAmB,CAAC;AAI3B,gCAAgC;AAChC,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FFmpegProcess - Manages FFmpeg child process for encoding/decoding
|
|
3
|
+
*/
|
|
4
|
+
import { EventEmitter } from 'events';
|
|
5
|
+
import { type FFmpegConfig, type FFmpegInputConfig, type FFmpegOutputConfig, type DecoderConfig, type EncoderConfig } from './types.js';
|
|
6
|
+
export type { FFmpegConfig, FFmpegInputConfig, FFmpegOutputConfig };
|
|
7
|
+
export declare class FFmpegProcess extends EventEmitter {
|
|
8
|
+
private ffmpegPath;
|
|
9
|
+
private process;
|
|
10
|
+
private _isRunning;
|
|
11
|
+
private _isShuttingDown;
|
|
12
|
+
private outputBuffer;
|
|
13
|
+
private frameSize;
|
|
14
|
+
private accumulatedData;
|
|
15
|
+
private _useIvf;
|
|
16
|
+
private _useAnnexB;
|
|
17
|
+
private _codec;
|
|
18
|
+
private _ivfState;
|
|
19
|
+
private _annexBState;
|
|
20
|
+
constructor(ffmpegPath?: string);
|
|
21
|
+
get isRunning(): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Check if the process is healthy and can accept data
|
|
24
|
+
*/
|
|
25
|
+
get isHealthy(): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Start FFmpeg process for decoding (encoded data -> raw frames)
|
|
28
|
+
*/
|
|
29
|
+
startDecoder(config: DecoderConfig): void;
|
|
30
|
+
/**
|
|
31
|
+
* Start FFmpeg process for encoding (raw frames -> encoded data)
|
|
32
|
+
*/
|
|
33
|
+
startEncoder(config: EncoderConfig): void;
|
|
34
|
+
/**
|
|
35
|
+
* Check if a codec supports alpha channel
|
|
36
|
+
*/
|
|
37
|
+
private _codecSupportsAlpha;
|
|
38
|
+
/**
|
|
39
|
+
* Check if a pixel format has alpha channel
|
|
40
|
+
*/
|
|
41
|
+
private _formatHasAlpha;
|
|
42
|
+
/**
|
|
43
|
+
* Add codec-specific FFmpeg options
|
|
44
|
+
*/
|
|
45
|
+
private _addCodecOptions;
|
|
46
|
+
/**
|
|
47
|
+
* Add bitrate control options based on bitrateMode
|
|
48
|
+
*/
|
|
49
|
+
private _addBitrateOptions;
|
|
50
|
+
private _startProcess;
|
|
51
|
+
/**
|
|
52
|
+
* Handle stdout data from FFmpeg
|
|
53
|
+
*/
|
|
54
|
+
private _handleStdoutData;
|
|
55
|
+
/**
|
|
56
|
+
* Parse IVF output and emit encoded frames
|
|
57
|
+
*/
|
|
58
|
+
private _parseIvfOutput;
|
|
59
|
+
/**
|
|
60
|
+
* Parse Annex B output and emit encoded frames
|
|
61
|
+
*/
|
|
62
|
+
private _parseAnnexBOutput;
|
|
63
|
+
/**
|
|
64
|
+
* Handle process close event
|
|
65
|
+
*/
|
|
66
|
+
private _handleProcessClose;
|
|
67
|
+
/**
|
|
68
|
+
* Write data to FFmpeg stdin
|
|
69
|
+
* @returns true if write was queued successfully, false if process is not healthy
|
|
70
|
+
*/
|
|
71
|
+
write(data: Buffer | Uint8Array): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Signal end of input data
|
|
74
|
+
*/
|
|
75
|
+
end(): void;
|
|
76
|
+
/**
|
|
77
|
+
* Gracefully shutdown the FFmpeg process with timeout
|
|
78
|
+
*/
|
|
79
|
+
shutdown(timeout?: number): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Kill the FFmpeg process immediately
|
|
82
|
+
*/
|
|
83
|
+
kill(): void;
|
|
84
|
+
/**
|
|
85
|
+
* Clean up internal state
|
|
86
|
+
*/
|
|
87
|
+
private _cleanup;
|
|
88
|
+
/**
|
|
89
|
+
* Map WebCodecs codec string to FFmpeg codec
|
|
90
|
+
*/
|
|
91
|
+
private _getFFmpegCodec;
|
|
92
|
+
/**
|
|
93
|
+
* Map WebCodecs codec to container format
|
|
94
|
+
*/
|
|
95
|
+
private _getContainerFormat;
|
|
96
|
+
/**
|
|
97
|
+
* Map pixel format names
|
|
98
|
+
* @deprecated Use pixelFormatToFFmpeg from './formats.js' instead
|
|
99
|
+
*/
|
|
100
|
+
static pixelFormatToFFmpeg(format: string): string;
|
|
101
|
+
/**
|
|
102
|
+
* @deprecated Use ffmpegToPixelFormat from './formats.js' instead
|
|
103
|
+
*/
|
|
104
|
+
static ffmpegToPixelFormat(format: string): string;
|
|
105
|
+
/**
|
|
106
|
+
* Calculate frame size in bytes
|
|
107
|
+
* @deprecated Use calculateFrameSize from './formats.js' instead
|
|
108
|
+
*/
|
|
109
|
+
static calculateFrameSize(format: string, width: number, height: number): number;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=FFmpegProcess.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FFmpegProcess.d.ts","sourceRoot":"","sources":["../../src/ffmpeg/FFmpegProcess.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EAEvB,KAAK,aAAa,EAClB,KAAK,aAAa,EAInB,MAAM,YAAY,CAAC;AAoBpB,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,CAAC;AAEpE,qBAAa,aAAc,SAAQ,YAAY;IAejC,OAAO,CAAC,UAAU;IAd9B,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,eAAe,CAA2B;IAClD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAM;IAGpB,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,YAAY,CAAkC;gBAElC,UAAU,GAAE,MAAiB;IAIjD,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAKvB;IAED;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IA6BzC;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAqEzC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAK3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAKvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA2DxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkE1B,OAAO,CAAC,aAAa;IA6BrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAqBzB;;OAEG;IACH,OAAO,CAAC,eAAe;IAgBvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAmB3B;;;OAGG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO;IAYzC;;OAEG;IACH,GAAG,IAAI,IAAI;IAUX;;OAEG;IACG,QAAQ,CAAC,OAAO,GAAE,MAAiC,GAAG,OAAO,CAAC,IAAI,CAAC;IAyCzE;;OAEG;IACH,IAAI,IAAI,IAAI;IAmBZ;;OAEG;IACH,OAAO,CAAC,QAAQ;IAUhB;;OAEG;IACH,OAAO,CAAC,eAAe;IAkBvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;;OAGG;IACH,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAelD;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAelD;;;OAGG;IACH,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;CAGjF"}
|