initial
This commit is contained in:
parent
74eadfce99
commit
94279a0265
|
@ -0,0 +1,26 @@
|
||||||
|
# Logs
|
||||||
|
logs
|
||||||
|
*.log
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
pnpm-debug.log*
|
||||||
|
lerna-debug.log*
|
||||||
|
venv/
|
||||||
|
*.mp4
|
||||||
|
|
||||||
|
node_modules
|
||||||
|
dist
|
||||||
|
dist-ssr
|
||||||
|
*.local
|
||||||
|
|
||||||
|
# Editor directories and files
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/extensions.json
|
||||||
|
.idea
|
||||||
|
.DS_Store
|
||||||
|
*.suo
|
||||||
|
*.ntvs*
|
||||||
|
*.njsproj
|
||||||
|
*.sln
|
||||||
|
*.sw?
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"recommendations": ["svelte.svelte-vscode"]
|
||||||
|
}
|
|
@ -0,0 +1,484 @@
|
||||||
|
... abench A->A Benchmark part of a filtergraph.
|
||||||
|
..C acompressor A->A Audio compressor.
|
||||||
|
... acontrast A->A Simple audio dynamic range compression/expansion filter.
|
||||||
|
... acopy A->A Copy the input audio unchanged to the output.
|
||||||
|
... acue A->A Delay filtering to match a cue.
|
||||||
|
... acrossfade AA->A Cross fade two input audio streams.
|
||||||
|
.S. acrossover A->N Split audio into per-bands streams.
|
||||||
|
T.C acrusher A->A Reduce audio bit resolution.
|
||||||
|
TS. adeclick A->A Remove impulsive noise from input audio.
|
||||||
|
TS. adeclip A->A Remove clipping from input audio.
|
||||||
|
TS. adecorrelate A->A Apply decorrelation to input audio.
|
||||||
|
T.C adelay A->A Delay one or more audio channels.
|
||||||
|
TSC adenorm A->A Remedy denormals by adding extremely low-level noise.
|
||||||
|
T.. aderivative A->A Compute derivative of input audio.
|
||||||
|
TSC adrc A->A Audio Spectral Dynamic Range Controller.
|
||||||
|
TSC adynamicequalizer A->A Apply Dynamic Equalization of input audio.
|
||||||
|
T.C adynamicsmooth A->A Apply Dynamic Smoothing of input audio.
|
||||||
|
... aecho A->A Add echoing to the audio.
|
||||||
|
TSC aemphasis A->A Audio emphasis.
|
||||||
|
T.. aeval A->A Filter audio signal according to a specified expression.
|
||||||
|
T.C aexciter A->A Enhance high frequency part of audio.
|
||||||
|
T.C afade A->A Fade in/out input audio.
|
||||||
|
TSC afftdn A->A Denoise audio samples using FFT.
|
||||||
|
TS. afftfilt A->A Apply arbitrary expressions to samples in frequency domain.
|
||||||
|
.SC afir N->N Apply Finite Impulse Response filter with supplied coefficients in additional stream(s).
|
||||||
|
... aformat A->A Convert the input audio to one of the specified formats.
|
||||||
|
TSC afreqshift A->A Apply frequency shifting to input audio.
|
||||||
|
TSC afwtdn A->A Denoise audio stream using Wavelets.
|
||||||
|
T.C agate A->A Audio gate.
|
||||||
|
.S. aiir A->N Apply Infinite Impulse Response filter with supplied coefficients.
|
||||||
|
T.. aintegral A->A Compute integral of input audio.
|
||||||
|
... ainterleave N->A Temporally interleave audio inputs.
|
||||||
|
T.. alatency A->A Report audio filtering latency.
|
||||||
|
T.C alimiter A->A Audio lookahead limiter.
|
||||||
|
TSC allpass A->A Apply a two-pole all-pass filter.
|
||||||
|
... aloop A->A Loop audio samples.
|
||||||
|
... amerge N->A Merge two or more audio streams into a single multi-channel stream.
|
||||||
|
T.. ametadata A->A Manipulate audio frame metadata.
|
||||||
|
..C amix N->A Audio mixing.
|
||||||
|
... amultiply AA->A Multiply two audio streams.
|
||||||
|
TSC anequalizer A->N Apply high-order audio parametric multi band equalizer.
|
||||||
|
TSC anlmdn A->A Reduce broadband noise from stream using Non-Local Means.
|
||||||
|
TSC anlmf AA->A Apply Normalized Least-Mean-Fourth algorithm to first audio stream.
|
||||||
|
TSC anlms AA->A Apply Normalized Least-Mean-Squares algorithm to first audio stream.
|
||||||
|
... anull A->A Pass the source unchanged to the output.
|
||||||
|
T.. apad A->A Pad audio with silence.
|
||||||
|
T.C aperms A->A Set permissions for the output audio frame.
|
||||||
|
... aphaser A->A Add a phasing effect to the audio.
|
||||||
|
TSC aphaseshift A->A Apply phase shifting to input audio.
|
||||||
|
TSC apsyclip A->A Audio Psychoacoustic Clipper.
|
||||||
|
... apulsator A->A Audio pulsator.
|
||||||
|
..C arealtime A->A Slow down filtering to match realtime.
|
||||||
|
... aresample A->A Resample audio data.
|
||||||
|
... areverse A->A Reverse an audio clip.
|
||||||
|
TSC arnndn A->A Reduce noise from speech using Recurrent Neural Networks.
|
||||||
|
... asdr AA->A Measure Audio Signal-to-Distortion Ratio.
|
||||||
|
... asegment A->N Segment audio stream.
|
||||||
|
... aselect A->N Select audio frames to pass in output.
|
||||||
|
... asendcmd A->A Send commands to filters.
|
||||||
|
... asetnsamples A->A Set the number of samples for each output audio frames.
|
||||||
|
... asetpts A->A Set PTS for the output audio frame.
|
||||||
|
... asetrate A->A Change the sample rate without altering the data.
|
||||||
|
... asettb A->A Set timebase for the audio output link.
|
||||||
|
... ashowinfo A->A Show textual information for each audio frame.
|
||||||
|
T.. asidedata A->A Manipulate audio frame side data.
|
||||||
|
TSC asoftclip A->A Audio Soft Clipper.
|
||||||
|
.S. aspectralstats A->A Show frequency domain statistics about audio frames.
|
||||||
|
... asplit A->N Pass on the audio input to N audio outputs.
|
||||||
|
.S. astats A->A Show time domain statistics about audio frames.
|
||||||
|
..C astreamselect N->N Select audio streams
|
||||||
|
TSC asubboost A->A Boost subwoofer frequencies.
|
||||||
|
TSC asubcut A->A Cut subwoofer frequencies.
|
||||||
|
TSC asupercut A->A Cut super frequencies.
|
||||||
|
TSC asuperpass A->A Apply high order Butterworth band-pass filter.
|
||||||
|
TSC asuperstop A->A Apply high order Butterworth band-stop filter.
|
||||||
|
..C atempo A->A Adjust audio tempo.
|
||||||
|
TSC atilt A->A Apply spectral tilt to audio.
|
||||||
|
... atrim A->A Pick one continuous section from the input, drop the rest.
|
||||||
|
... axcorrelate AA->A Cross-correlate two audio streams.
|
||||||
|
... azmq A->A Receive commands through ZMQ and broker them to filters.
|
||||||
|
TSC bandpass A->A Apply a two-pole Butterworth band-pass filter.
|
||||||
|
TSC bandreject A->A Apply a two-pole Butterworth band-reject filter.
|
||||||
|
TSC bass A->A Boost or cut lower frequencies.
|
||||||
|
TSC biquad A->A Apply a biquad IIR filter with the given coefficients.
|
||||||
|
... channelmap A->A Remap audio channels.
|
||||||
|
... channelsplit A->N Split audio into per-channel streams.
|
||||||
|
... chorus A->A Add a chorus effect to the audio.
|
||||||
|
... compand A->A Compress or expand audio dynamic range.
|
||||||
|
T.C compensationdelay A->A Audio Compensation Delay Line.
|
||||||
|
T.C crossfeed A->A Apply headphone crossfeed filter.
|
||||||
|
TSC crystalizer A->A Simple audio noise sharpening filter.
|
||||||
|
T.. dcshift A->A Apply a DC shift to the audio.
|
||||||
|
T.. deesser A->A Apply de-essing to the audio.
|
||||||
|
T.C dialoguenhance A->A Audio Dialogue Enhancement.
|
||||||
|
... drmeter A->A Measure audio dynamic range.
|
||||||
|
TSC dynaudnorm A->A Dynamic Audio Normalizer.
|
||||||
|
... earwax A->A Widen the stereo image.
|
||||||
|
... ebur128 A->N EBU R128 scanner.
|
||||||
|
TSC equalizer A->A Apply two-pole peaking equalization (EQ) filter.
|
||||||
|
T.C extrastereo A->A Increase difference between stereo audio channels.
|
||||||
|
..C firequalizer A->A Finite Impulse Response Equalizer.
|
||||||
|
... flanger A->A Apply a flanging effect to the audio.
|
||||||
|
... haas A->A Apply Haas Stereo Enhancer.
|
||||||
|
... hdcd A->A Apply High Definition Compatible Digital (HDCD) decoding.
|
||||||
|
.S. headphone N->A Apply headphone binaural spatialization with HRTFs in additional streams.
|
||||||
|
TSC highpass A->A Apply a high-pass filter with 3dB point frequency.
|
||||||
|
TSC highshelf A->A Apply a high shelf filter.
|
||||||
|
... join N->A Join multiple audio streams into multi-channel output.
|
||||||
|
... loudnorm A->A EBU R128 loudness normalization
|
||||||
|
TSC lowpass A->A Apply a low-pass filter with 3dB point frequency.
|
||||||
|
TSC lowshelf A->A Apply a low shelf filter.
|
||||||
|
... mcompand A->A Multiband Compress or expand audio dynamic range.
|
||||||
|
... pan A->A Remix channels with coefficients (panning).
|
||||||
|
... replaygain A->A ReplayGain scanner.
|
||||||
|
..C rubberband A->A Apply time-stretching and pitch-shifting.
|
||||||
|
..C sidechaincompress AA->A Sidechain compressor.
|
||||||
|
T.C sidechaingate AA->A Audio sidechain gate.
|
||||||
|
... silencedetect A->A Detect silence.
|
||||||
|
... silenceremove A->A Remove silence.
|
||||||
|
T.C speechnorm A->A Speech Normalizer.
|
||||||
|
T.C stereotools A->A Apply various stereo tools.
|
||||||
|
T.C stereowiden A->A Apply stereo widening effect.
|
||||||
|
... superequalizer A->A Apply 18 band equalization filter.
|
||||||
|
.SC surround A->A Apply audio surround upmix filter.
|
||||||
|
TSC tiltshelf A->A Apply a tilt shelf filter.
|
||||||
|
TSC treble A->A Boost or cut upper frequencies.
|
||||||
|
T.. tremolo A->A Apply tremolo effect.
|
||||||
|
T.. vibrato A->A Apply vibrato effect.
|
||||||
|
T.C virtualbass A->A Audio Virtual Bass.
|
||||||
|
T.C volume A->A Change input volume.
|
||||||
|
... volumedetect A->A Detect audio volume.
|
||||||
|
... aevalsrc |->A Generate an audio signal generated by an expression.
|
||||||
|
... afdelaysrc |->A Generate a Fractional delay FIR coefficients.
|
||||||
|
... afirsrc |->A Generate a FIR coefficients audio stream.
|
||||||
|
... anoisesrc |->A Generate a noise audio signal.
|
||||||
|
... anullsrc |->A Null audio source, return empty audio frames.
|
||||||
|
... hilbert |->A Generate a Hilbert transform FIR coefficients.
|
||||||
|
... sinc |->A Generate a sinc kaiser-windowed low-pass, high-pass, band-pass, or band-reject FIR coefficients.
|
||||||
|
... sine |->A Generate sine wave audio signal.
|
||||||
|
... anullsink A->| Do absolutely nothing with the input audio.
|
||||||
|
... addroi V->V Add region of interest to frame.
|
||||||
|
... alphaextract V->V Extract an alpha channel as a grayscale image component.
|
||||||
|
T.. alphamerge VV->V Copy the luma value of the second input into the alpha channel of the first input.
|
||||||
|
TSC amplify V->V Amplify changes between successive video frames.
|
||||||
|
... ass V->V Render ASS subtitles onto input video using the libass library.
|
||||||
|
TSC atadenoise V->V Apply an Adaptive Temporal Averaging Denoiser.
|
||||||
|
T.C avgblur V->V Apply Average Blur filter.
|
||||||
|
TSC backgroundkey V->V Turns a static background into transparency.
|
||||||
|
T.C bbox V->V Compute bounding box for each frame.
|
||||||
|
... bench V->V Benchmark part of a filtergraph.
|
||||||
|
TSC bilateral V->V Apply Bilateral filter.
|
||||||
|
T.. bitplanenoise V->V Measure bit plane noise.
|
||||||
|
.S. blackdetect V->V Detect video intervals that are (almost) black.
|
||||||
|
... blackframe V->V Detect frames that are (almost) black.
|
||||||
|
TSC blend VV->V Blend two video frames into each other.
|
||||||
|
... blockdetect V->V Blockdetect filter.
|
||||||
|
... blurdetect V->V Blurdetect filter.
|
||||||
|
TS. bm3d N->V Block-Matching 3D denoiser.
|
||||||
|
T.. boxblur V->V Blur the input.
|
||||||
|
TS. bwdif V->V Deinterlace the input image.
|
||||||
|
TSC cas V->V Contrast Adaptive Sharpen.
|
||||||
|
TSC chromahold V->V Turns a certain color range into gray.
|
||||||
|
TSC chromakey V->V Turns a certain color into transparency. Operates on YUV colors.
|
||||||
|
TSC chromanr V->V Reduce chrominance noise.
|
||||||
|
TSC chromashift V->V Shift chroma.
|
||||||
|
... ciescope V->V Video CIE scope.
|
||||||
|
T.. codecview V->V Visualize information about some codecs.
|
||||||
|
TSC colorbalance V->V Adjust the color balance.
|
||||||
|
TSC colorchannelmixer V->V Adjust colors by mixing color channels.
|
||||||
|
TSC colorcontrast V->V Adjust color contrast between RGB components.
|
||||||
|
TSC colorcorrect V->V Adjust color white balance selectively for blacks and whites.
|
||||||
|
TSC colorize V->V Overlay a solid color on the video stream.
|
||||||
|
TSC colorkey V->V Turns a certain color into transparency. Operates on RGB colors.
|
||||||
|
TSC colorhold V->V Turns a certain color range into gray. Operates on RGB colors.
|
||||||
|
TSC colorlevels V->V Adjust the color levels.
|
||||||
|
TSC colormap VVV->V Apply custom Color Maps to video stream.
|
||||||
|
TS. colormatrix V->V Convert color matrix.
|
||||||
|
TS. colorspace V->V Convert between colorspaces.
|
||||||
|
TSC colortemperature V->V Adjust color temperature of video.
|
||||||
|
TSC convolution V->V Apply convolution filter.
|
||||||
|
TS. convolve VV->V Convolve first video stream with second video stream.
|
||||||
|
... copy V->V Copy the input video unchanged to the output.
|
||||||
|
... coreimage V->V Video filtering using CoreImage API.
|
||||||
|
T.. corr VV->V Calculate the correlation between two video streams.
|
||||||
|
... cover_rect V->V Find and cover a user specified object.
|
||||||
|
..C crop V->V Crop the input video.
|
||||||
|
T.C cropdetect V->V Auto-detect crop size.
|
||||||
|
... cue V->V Delay filtering to match a cue.
|
||||||
|
TSC curves V->V Adjust components curves.
|
||||||
|
.SC datascope V->V Video data analysis.
|
||||||
|
T.C dblur V->V Apply Directional Blur filter.
|
||||||
|
TS. dctdnoiz V->V Denoise frames using 2D DCT.
|
||||||
|
TSC deband V->V Debands video.
|
||||||
|
T.C deblock V->V Deblock video.
|
||||||
|
... decimate N->V Decimate frames (post field matching filter).
|
||||||
|
TS. deconvolve VV->V Deconvolve first video stream with second video stream.
|
||||||
|
TS. dedot V->V Reduce cross-luminance and cross-color.
|
||||||
|
TSC deflate V->V Apply deflate effect.
|
||||||
|
... deflicker V->V Remove temporal frame luminance variations.
|
||||||
|
... dejudder V->V Remove judder produced by pullup.
|
||||||
|
T.. delogo V->V Remove logo from input video.
|
||||||
|
T.. derain V->V Apply derain filter to the input.
|
||||||
|
... deshake V->V Stabilize shaky video.
|
||||||
|
TSC despill V->V Despill video.
|
||||||
|
... detelecine V->V Apply an inverse telecine pattern.
|
||||||
|
TSC dilation V->V Apply dilation effect.
|
||||||
|
T.. displace VVV->V Displace pixels.
|
||||||
|
... dnn_classify V->V Apply DNN classify filter to the input.
|
||||||
|
... dnn_detect V->V Apply DNN detect filter to the input.
|
||||||
|
... dnn_processing V->V Apply DNN processing filter to the input.
|
||||||
|
.S. doubleweave V->V Weave input video fields into double number of frames.
|
||||||
|
T.C drawbox V->V Draw a colored box on the input video.
|
||||||
|
... drawgraph V->V Draw a graph using input video metadata.
|
||||||
|
T.C drawgrid V->V Draw a colored grid on the input video.
|
||||||
|
T.C drawtext V->V Draw text on top of video frames using libfreetype library.
|
||||||
|
T.. edgedetect V->V Detect and draw edge.
|
||||||
|
... elbg V->V Apply posterize effect, using the ELBG algorithm.
|
||||||
|
T.. entropy V->V Measure video frames entropy.
|
||||||
|
.S. epx V->V Scale the input using EPX algorithm.
|
||||||
|
T.C eq V->V Adjust brightness, contrast, gamma, and saturation.
|
||||||
|
TSC erosion V->V Apply erosion effect.
|
||||||
|
TSC estdif V->V Apply Edge Slope Tracing deinterlace.
|
||||||
|
TSC exposure V->V Adjust exposure of the video stream.
|
||||||
|
... extractplanes V->N Extract planes as grayscale frames.
|
||||||
|
TS. fade V->V Fade in/out input video.
|
||||||
|
..C feedback VV->VV Apply feedback video filter.
|
||||||
|
TSC fftdnoiz V->V Denoise frames using 3D FFT.
|
||||||
|
TS. fftfilt V->V Apply arbitrary expressions to pixels in frequency domain.
|
||||||
|
... field V->V Extract a field from the input video.
|
||||||
|
... fieldhint V->V Field matching using hints.
|
||||||
|
... fieldmatch N->V Field matching for inverse telecine.
|
||||||
|
T.. fieldorder V->V Set the field order.
|
||||||
|
T.C fillborders V->V Fill borders of the input video.
|
||||||
|
... find_rect V->V Find a user specified object.
|
||||||
|
T.. floodfill V->V Fill area with same color with another color.
|
||||||
|
... format V->V Convert the input video to one of the specified pixel formats.
|
||||||
|
... fps V->V Force constant framerate.
|
||||||
|
... framepack VV->V Generate a frame packed stereoscopic video.
|
||||||
|
.S. framerate V->V Upsamples or downsamples progressive source between specified frame rates.
|
||||||
|
T.. framestep V->V Select one frame every N frames.
|
||||||
|
... freezedetect V->V Detects frozen video input.
|
||||||
|
... freezeframes VV->V Freeze video frames.
|
||||||
|
T.C frei0r V->V Apply a frei0r effect.
|
||||||
|
T.. fspp V->V Apply Fast Simple Post-processing filter.
|
||||||
|
TSC gblur V->V Apply Gaussian Blur filter.
|
||||||
|
TS. geq V->V Apply generic equation to each pixel.
|
||||||
|
T.. gradfun V->V Debands video quickly using gradients.
|
||||||
|
... graphmonitor V->V Show various filtergraph stats.
|
||||||
|
TS. grayworld V->V Adjust white balance using LAB gray world algorithm
|
||||||
|
TS. greyedge V->V Estimates scene illumination by grey edge assumption.
|
||||||
|
TSC guided N->V Apply Guided filter.
|
||||||
|
TSC haldclut VV->V Adjust colors using a Hald CLUT.
|
||||||
|
TS. hflip V->V Horizontally flip the input video.
|
||||||
|
T.. histeq V->V Apply global color histogram equalization.
|
||||||
|
... histogram V->V Compute and draw a histogram.
|
||||||
|
TSC hqdn3d V->V Apply a High Quality 3D Denoiser.
|
||||||
|
.S. hqx V->V Scale the input by 2, 3 or 4 using the hq*x magnification algorithm.
|
||||||
|
.S. hstack N->V Stack video inputs horizontally.
|
||||||
|
TSC hsvhold V->V Turns a certain HSV range into gray.
|
||||||
|
TSC hsvkey V->V Turns a certain HSV range into transparency. Operates on YUV colors.
|
||||||
|
T.C hue V->V Adjust the hue and saturation of the input video.
|
||||||
|
TSC huesaturation V->V Apply hue-saturation-intensity adjustments.
|
||||||
|
... hwdownload V->V Download a hardware frame to a normal frame
|
||||||
|
... hwmap V->V Map hardware frames
|
||||||
|
... hwupload V->V Upload a normal frame to a hardware frame
|
||||||
|
T.. hysteresis VV->V Grow first stream into second stream by connecting components.
|
||||||
|
TS. identity VV->V Calculate the Identity between two video streams.
|
||||||
|
... idet V->V Interlace detect Filter.
|
||||||
|
T.C il V->V Deinterleave or interleave fields.
|
||||||
|
TSC inflate V->V Apply inflate effect.
|
||||||
|
... interlace V->V Convert progressive video into interlaced.
|
||||||
|
... interleave N->V Temporally interleave video inputs.
|
||||||
|
... kerndeint V->V Apply kernel deinterlacing to the input.
|
||||||
|
TSC kirsch V->V Apply kirsch operator.
|
||||||
|
TSC lagfun V->V Slowly update darker pixels.
|
||||||
|
T.. latency V->V Report video filtering latency.
|
||||||
|
TSC lenscorrection V->V Rectify the image by correcting for lens distortion.
|
||||||
|
... libvmaf VV->V Calculate the VMAF between two video streams.
|
||||||
|
TSC limitdiff N->V Apply filtering with limiting difference.
|
||||||
|
TSC limiter V->V Limit pixels components to the specified range.
|
||||||
|
... loop V->V Loop video frames.
|
||||||
|
TSC lumakey V->V Turns a certain luma into transparency.
|
||||||
|
TSC lut V->V Compute and apply a lookup table to the RGB/YUV input video.
|
||||||
|
TSC lut1d V->V Adjust colors using a 1D LUT.
|
||||||
|
TSC lut2 VV->V Compute and apply a lookup table from two video inputs.
|
||||||
|
TSC lut3d V->V Adjust colors using a 3D LUT.
|
||||||
|
TSC lutrgb V->V Compute and apply a lookup table to the RGB input video.
|
||||||
|
TSC lutyuv V->V Compute and apply a lookup table to the YUV input video.
|
||||||
|
TSC maskedclamp VVV->V Clamp first stream with second stream and third stream.
|
||||||
|
TSC maskedmax VVV->V Apply filtering with maximum difference of two streams.
|
||||||
|
TSC maskedmerge VVV->V Merge first stream with second stream using third stream as mask.
|
||||||
|
TSC maskedmin VVV->V Apply filtering with minimum difference of two streams.
|
||||||
|
TSC maskedthreshold VV->V Pick pixels comparing absolute difference of two streams with threshold.
|
||||||
|
TSC maskfun V->V Create Mask.
|
||||||
|
TSC median V->V Apply Median filter.
|
||||||
|
... mergeplanes N->V Merge planes.
|
||||||
|
... mestimate V->V Generate motion vectors.
|
||||||
|
T.. metadata V->V Manipulate video frame metadata.
|
||||||
|
T.. midequalizer VV->V Apply Midway Equalization.
|
||||||
|
... minterpolate V->V Frame rate conversion using Motion Interpolation.
|
||||||
|
TSC mix N->V Mix video inputs.
|
||||||
|
TSC monochrome V->V Convert video to gray using custom color filter.
|
||||||
|
T.C morpho VV->V Apply Morphological filter.
|
||||||
|
... mpdecimate V->V Remove near-duplicate frames.
|
||||||
|
TS. msad VV->V Calculate the MSAD between two video streams.
|
||||||
|
TSC multiply VV->V Multiply first video stream with second video stream.
|
||||||
|
TSC negate V->V Negate input video.
|
||||||
|
TS. nlmeans V->V Non-local means denoiser.
|
||||||
|
TSC nnedi V->V Apply neural network edge directed interpolation intra-only deinterlacer.
|
||||||
|
... noformat V->V Force libavfilter not to use any of the specified pixel formats for the input to the next filter.
|
||||||
|
TS. noise V->V Add noise.
|
||||||
|
T.C normalize V->V Normalize RGB video.
|
||||||
|
... null V->V Pass the source unchanged to the output.
|
||||||
|
... ocr V->V Optical Character Recognition.
|
||||||
|
T.C oscilloscope V->V 2D Video Oscilloscope.
|
||||||
|
TSC overlay VV->V Overlay a video source on top of the input.
|
||||||
|
T.. owdenoise V->V Denoise using wavelets.
|
||||||
|
... pad V->V Pad the input video.
|
||||||
|
... palettegen V->V Find the optimal palette for a given stream.
|
||||||
|
... paletteuse VV->V Use a palette to downsample an input video stream.
|
||||||
|
T.C perms V->V Set permissions for the output video frame.
|
||||||
|
TS. perspective V->V Correct the perspective of video.
|
||||||
|
T.C phase V->V Phase shift fields.
|
||||||
|
... photosensitivity V->V Filter out photosensitive epilepsy seizure-inducing flashes.
|
||||||
|
... pixdesctest V->V Test pixel format definitions.
|
||||||
|
TSC pixelize V->V Pixelize video.
|
||||||
|
T.C pixscope V->V Pixel data analysis.
|
||||||
|
T.C pp V->V Filter video using libpostproc.
|
||||||
|
T.. pp7 V->V Apply Postprocessing 7 filter.
|
||||||
|
TS. premultiply N->V PreMultiply first stream with first plane of second stream.
|
||||||
|
TSC prewitt V->V Apply prewitt operator.
|
||||||
|
TSC pseudocolor V->V Make pseudocolored video frames.
|
||||||
|
TS. psnr VV->V Calculate the PSNR between two video streams.
|
||||||
|
... pullup V->V Pullup from field sequence to frames.
|
||||||
|
T.. qp V->V Change video quantization parameters.
|
||||||
|
... random V->V Return random frames.
|
||||||
|
TSC readeia608 V->V Read EIA-608 Closed Caption codes from input video and write them to frame metadata.
|
||||||
|
... readvitc V->V Read vertical interval timecode and write it to frame metadata.
|
||||||
|
..C realtime V->V Slow down filtering to match realtime.
|
||||||
|
.S. remap VVV->V Remap pixels.
|
||||||
|
TS. removegrain V->V Remove grain.
|
||||||
|
T.. removelogo V->V Remove a TV logo based on a mask image.
|
||||||
|
... repeatfields V->V Hard repeat fields based on MPEG repeat field flag.
|
||||||
|
... reverse V->V Reverse a clip.
|
||||||
|
TSC rgbashift V->V Shift RGBA.
|
||||||
|
TSC roberts V->V Apply roberts cross operator.
|
||||||
|
TSC rotate V->V Rotate the input image.
|
||||||
|
T.. sab V->V Apply shape adaptive blur.
|
||||||
|
..C scale V->V Scale the input video size and/or convert the image format.
|
||||||
|
..C scale2ref VV->VV Scale the input video size and/or convert the image format to the given reference.
|
||||||
|
... scdet V->V Detect video scene change
|
||||||
|
TSC scharr V->V Apply scharr operator.
|
||||||
|
TSC scroll V->V Scroll input video.
|
||||||
|
... segment V->N Segment video stream.
|
||||||
|
... select V->N Select video frames to pass in output.
|
||||||
|
TS. selectivecolor V->V Apply CMYK adjustments to specific color ranges.
|
||||||
|
... sendcmd V->V Send commands to filters.
|
||||||
|
... separatefields V->V Split input video frames into fields.
|
||||||
|
... setdar V->V Set the frame display aspect ratio.
|
||||||
|
... setfield V->V Force field for the output video frame.
|
||||||
|
... setparams V->V Force field, or color property for the output video frame.
|
||||||
|
... setpts V->V Set PTS for the output video frame.
|
||||||
|
... setrange V->V Force color range for the output video frame.
|
||||||
|
... setsar V->V Set the pixel sample aspect ratio.
|
||||||
|
... settb V->V Set timebase for the video output link.
|
||||||
|
TSC shear V->V Shear transform the input image.
|
||||||
|
... showinfo V->V Show textual information for each video frame.
|
||||||
|
... showpalette V->V Display frame palette.
|
||||||
|
T.. shuffleframes V->V Shuffle video frames.
|
||||||
|
TS. shufflepixels V->V Shuffle video pixels.
|
||||||
|
T.. shuffleplanes V->V Shuffle video planes.
|
||||||
|
T.. sidedata V->V Manipulate video frame side data.
|
||||||
|
.S. signalstats V->V Generate statistics from video analysis.
|
||||||
|
... signature N->V Calculate the MPEG-7 video signature
|
||||||
|
... siti V->V Calculate spatial information (SI) and temporal information (TI).
|
||||||
|
T.. smartblur V->V Blur the input video without impacting the outlines.
|
||||||
|
TSC sobel V->V Apply sobel operator.
|
||||||
|
... split V->N Pass on the input to N video outputs.
|
||||||
|
T.C spp V->V Apply a simple post processing filter.
|
||||||
|
... sr V->V Apply DNN-based image super resolution to the input.
|
||||||
|
TS. ssim VV->V Calculate the SSIM between two video streams.
|
||||||
|
... ssim360 VV->V Calculate the SSIM between two 360 video streams.
|
||||||
|
.S. stereo3d V->V Convert video stereoscopic 3D view.
|
||||||
|
..C streamselect N->N Select video streams
|
||||||
|
... subtitles V->V Render text subtitles onto input video using the libass library.
|
||||||
|
.S. super2xsai V->V Scale the input by 2x using the Super2xSaI pixel art algorithm.
|
||||||
|
T.C swaprect V->V Swap 2 rectangular objects in video.
|
||||||
|
T.. swapuv V->V Swap U and V components.
|
||||||
|
TSC tblend V->V Blend successive frames.
|
||||||
|
... telecine V->V Apply a telecine pattern.
|
||||||
|
... thistogram V->V Compute and draw a temporal histogram.
|
||||||
|
TSC threshold VVVV->V Threshold first video stream using other video streams.
|
||||||
|
TS. thumbnail V->V Select the most representative frame in a given sequence of consecutive frames.
|
||||||
|
... tile V->V Tile several successive frames together.
|
||||||
|
... tinterlace V->V Perform temporal field interlacing.
|
||||||
|
TSC tlut2 V->V Compute and apply a lookup table from two successive frames.
|
||||||
|
TSC tmedian V->V Pick median pixels from successive frames.
|
||||||
|
T.. tmidequalizer V->V Apply Temporal Midway Equalization.
|
||||||
|
TSC tmix V->V Mix successive video frames.
|
||||||
|
.S. tonemap V->V Conversion to/from different dynamic ranges.
|
||||||
|
... tpad V->V Temporarily pad video frames.
|
||||||
|
.S. transpose V->V Transpose input video.
|
||||||
|
... trim V->V Pick one continuous section from the input, drop the rest.
|
||||||
|
TS. unpremultiply N->V UnPreMultiply first stream with first plane of second stream.
|
||||||
|
TS. unsharp V->V Sharpen or blur the input video.
|
||||||
|
... untile V->V Untile a frame into a sequence of frames.
|
||||||
|
.SC v360 V->V Convert 360 projection of video.
|
||||||
|
T.. vaguedenoiser V->V Apply a Wavelet based Denoiser.
|
||||||
|
TSC varblur VV->V Apply Variable Blur filter.
|
||||||
|
..C vectorscope V->V Video vectorscope.
|
||||||
|
T.. vflip V->V Flip the input video vertically.
|
||||||
|
... vfrdet V->V Variable frame rate detect filter.
|
||||||
|
TSC vibrance V->V Boost or alter saturation.
|
||||||
|
... vidstabdetect V->V Extract relative transformations, pass 1 of 2 for stabilization (see vidstabtransform for pass 2).
|
||||||
|
... vidstabtransform V->V Transform the frames, pass 2 of 2 for stabilization (see vidstabdetect for pass 1).
|
||||||
|
TS. vif VV->V Calculate the VIF between two video streams.
|
||||||
|
T.. vignette V->V Make or reverse a vignette effect.
|
||||||
|
... vmafmotion V->V Calculate the VMAF Motion score.
|
||||||
|
.S. vstack N->V Stack video inputs vertically.
|
||||||
|
TSC w3fdif V->V Apply Martin Weston three field deinterlace.
|
||||||
|
.SC waveform V->V Video waveform monitor.
|
||||||
|
.S. weave V->V Weave input video fields into frames.
|
||||||
|
.S. xbr V->V Scale the input using xBR algorithm.
|
||||||
|
TS. xcorrelate VV->V Cross-correlate first video stream with second video stream.
|
||||||
|
.S. xfade VV->V Cross fade one video with another video.
|
||||||
|
TSC xmedian N->V Pick median pixels from several video inputs.
|
||||||
|
.S. xstack N->V Stack video inputs into custom layout.
|
||||||
|
TS. yadif V->V Deinterlace the input image.
|
||||||
|
T.. yadif_videotoolbox V->V YADIF for VideoToolbox frames using Metal compute
|
||||||
|
TSC yaepblur V->V Yet another edge preserving blur filter.
|
||||||
|
... zmq V->V Receive commands through ZMQ and broker them to filters.
|
||||||
|
... zoompan V->V Apply Zoom & Pan effect.
|
||||||
|
.SC zscale V->V Apply resizing, colorspace and bit depth conversion.
|
||||||
|
... allrgb |->V Generate all RGB colors.
|
||||||
|
... allyuv |->V Generate all yuv colors.
|
||||||
|
... cellauto |->V Create pattern generated by an elementary cellular automaton.
|
||||||
|
..C color |->V Provide an uniformly colored input.
|
||||||
|
... colorchart |->V Generate color checker chart.
|
||||||
|
... colorspectrum |->V Generate colors spectrum.
|
||||||
|
... coreimagesrc |->V Video source using image generators of CoreImage API.
|
||||||
|
... frei0r_src |->V Generate a frei0r source.
|
||||||
|
.S. gradients |->V Draw a gradients.
|
||||||
|
... haldclutsrc |->V Provide an identity Hald CLUT.
|
||||||
|
... life |->V Create life.
|
||||||
|
... mandelbrot |->V Render a Mandelbrot fractal.
|
||||||
|
... mptestsrc |->V Generate various test pattern.
|
||||||
|
... nullsrc |->V Null video source, return unprocessed video frames.
|
||||||
|
... pal75bars |->V Generate PAL 75% color bars.
|
||||||
|
... pal100bars |->V Generate PAL 100% color bars.
|
||||||
|
... rgbtestsrc |->V Generate RGB test pattern.
|
||||||
|
.S. sierpinski |->V Render a Sierpinski fractal.
|
||||||
|
... smptebars |->V Generate SMPTE color bars.
|
||||||
|
... smptehdbars |->V Generate SMPTE HD color bars.
|
||||||
|
... testsrc |->V Generate test pattern.
|
||||||
|
... testsrc2 |->V Generate another test pattern.
|
||||||
|
... yuvtestsrc |->V Generate YUV test pattern.
|
||||||
|
... nullsink V->| Do absolutely nothing with the input video.
|
||||||
|
..C a3dscope A->V Convert input audio to 3d scope video output.
|
||||||
|
... abitscope A->V Convert input audio to audio bit scope video output.
|
||||||
|
... adrawgraph A->V Draw a graph using input audio metadata.
|
||||||
|
... agraphmonitor A->V Show various filtergraph stats.
|
||||||
|
... ahistogram A->V Convert input audio to histogram video output.
|
||||||
|
... aphasemeter A->N Convert input audio to phase meter video output.
|
||||||
|
.SC avectorscope A->V Convert input audio to vectorscope video output.
|
||||||
|
..C concat N->N Concatenate audio and video streams.
|
||||||
|
... showcqt A->V Convert input audio to a CQT (Constant/Clamped Q Transform) spectrum video output.
|
||||||
|
.S. showcwt A->V Convert input audio to a CWT (Continuous Wavelet Transform) spectrum video output.
|
||||||
|
... showfreqs A->V Convert input audio to a frequencies video output.
|
||||||
|
.S. showspatial A->V Convert input audio to a spatial video output.
|
||||||
|
.S. showspectrum A->V Convert input audio to a spectrum video output.
|
||||||
|
.S. showspectrumpic A->V Convert input audio to a spectrum video output single picture.
|
||||||
|
... showvolume A->V Convert input audio volume to video output.
|
||||||
|
... showwaves A->V Convert input audio to a video output.
|
||||||
|
... showwavespic A->V Convert input audio to a video output single picture.
|
||||||
|
... spectrumsynth VV->A Convert input spectrum videos to audio output.
|
||||||
|
... avsynctest |->AV Generate an Audio Video Sync Test.
|
||||||
|
..C amovie |->N Read audio from a movie source.
|
||||||
|
..C movie |->N Read from a movie source.
|
||||||
|
... afifo A->A Buffer input frames and send them when they are requested.
|
||||||
|
... fifo V->V Buffer input images and send them when they are requested.
|
||||||
|
... abuffer |->A Buffer audio frames, and make them accessible to the filterchain.
|
||||||
|
... buffer |->V Buffer video frames, and make them accessible to the filterchain.
|
||||||
|
... abuffersink A->| Buffer audio frames, and make them available to the end of the filter graph.
|
||||||
|
... buffersink V->| Buffer video frames, and make them available to the end of the filter graph.
|
|
@ -0,0 +1,13 @@
|
||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Vite + Svelte</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="app"></div>
|
||||||
|
<script type="module" src="/src/main.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"moduleResolution": "bundler",
|
||||||
|
"target": "ESNext",
|
||||||
|
"module": "ESNext",
|
||||||
|
/**
|
||||||
|
* svelte-preprocess cannot figure out whether you have
|
||||||
|
* a value or a type, so tell TypeScript to enforce using
|
||||||
|
* `import type` instead of `import` for Types.
|
||||||
|
*/
|
||||||
|
"verbatimModuleSyntax": true,
|
||||||
|
"isolatedModules": true,
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
/**
|
||||||
|
* To have warnings / errors of the Svelte compiler at the
|
||||||
|
* correct position, enable source maps by default.
|
||||||
|
*/
|
||||||
|
"sourceMap": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
/**
|
||||||
|
* Typecheck JS in `.svelte` and `.js` files by default.
|
||||||
|
* Disable this if you'd like to use dynamic types.
|
||||||
|
*/
|
||||||
|
"checkJs": true
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* Use global.d.ts instead of compilerOptions.types
|
||||||
|
* to avoid limiting type declarations.
|
||||||
|
*/
|
||||||
|
"include": ["src/**/*.d.ts", "src/**/*.js", "src/**/*.svelte"]
|
||||||
|
}
|
|
@ -0,0 +1,867 @@
|
||||||
|
{
|
||||||
|
"name": "ffmpeg-builder",
|
||||||
|
"version": "0.0.0",
|
||||||
|
"lockfileVersion": 3,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"": {
|
||||||
|
"name": "ffmpeg-builder",
|
||||||
|
"version": "0.0.0",
|
||||||
|
"devDependencies": {
|
||||||
|
"@sveltejs/vite-plugin-svelte": "^2.4.2",
|
||||||
|
"svelte": "^4.0.5",
|
||||||
|
"vite": "^4.4.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@ampproject/remapping": {
|
||||||
|
"version": "2.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
|
||||||
|
"integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@jridgewell/gen-mapping": "^0.3.0",
|
||||||
|
"@jridgewell/trace-mapping": "^0.3.9"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/android-arm": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==",
|
||||||
|
"cpu": [
|
||||||
|
"arm"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"android"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/android-arm64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"android"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/android-x64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"android"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/darwin-arm64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/darwin-x64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/freebsd-arm64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"freebsd"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/freebsd-x64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"freebsd"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/linux-arm": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==",
|
||||||
|
"cpu": [
|
||||||
|
"arm"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/linux-arm64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/linux-ia32": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==",
|
||||||
|
"cpu": [
|
||||||
|
"ia32"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/linux-loong64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==",
|
||||||
|
"cpu": [
|
||||||
|
"loong64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/linux-mips64el": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==",
|
||||||
|
"cpu": [
|
||||||
|
"mips64el"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/linux-ppc64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==",
|
||||||
|
"cpu": [
|
||||||
|
"ppc64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/linux-riscv64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==",
|
||||||
|
"cpu": [
|
||||||
|
"riscv64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/linux-s390x": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==",
|
||||||
|
"cpu": [
|
||||||
|
"s390x"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/linux-x64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/netbsd-x64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"netbsd"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/openbsd-x64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"openbsd"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/sunos-x64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"sunos"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/win32-arm64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"win32"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/win32-ia32": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==",
|
||||||
|
"cpu": [
|
||||||
|
"ia32"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"win32"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/win32-x64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"win32"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@jridgewell/gen-mapping": {
|
||||||
|
"version": "0.3.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
|
||||||
|
"integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@jridgewell/set-array": "^1.0.1",
|
||||||
|
"@jridgewell/sourcemap-codec": "^1.4.10",
|
||||||
|
"@jridgewell/trace-mapping": "^0.3.9"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@jridgewell/resolve-uri": {
|
||||||
|
"version": "3.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
|
||||||
|
"integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@jridgewell/set-array": {
|
||||||
|
"version": "1.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
|
||||||
|
"integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@jridgewell/sourcemap-codec": {
|
||||||
|
"version": "1.4.15",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
|
||||||
|
"integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/@jridgewell/trace-mapping": {
|
||||||
|
"version": "0.3.19",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz",
|
||||||
|
"integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@jridgewell/resolve-uri": "^3.1.0",
|
||||||
|
"@jridgewell/sourcemap-codec": "^1.4.14"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@sveltejs/vite-plugin-svelte": {
|
||||||
|
"version": "2.4.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.4.5.tgz",
|
||||||
|
"integrity": "sha512-UJKsFNwhzCVuiZd06jM/psscyNJNDwjQC+qIeb7GBJK9iWeQCcIyfcPWDvbCudfcJggY9jtxJeeaZH7uny93FQ==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@sveltejs/vite-plugin-svelte-inspector": "^1.0.3",
|
||||||
|
"debug": "^4.3.4",
|
||||||
|
"deepmerge": "^4.3.1",
|
||||||
|
"kleur": "^4.1.5",
|
||||||
|
"magic-string": "^0.30.2",
|
||||||
|
"svelte-hmr": "^0.15.3",
|
||||||
|
"vitefu": "^0.2.4"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^14.18.0 || >= 16"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"svelte": "^3.54.0 || ^4.0.0",
|
||||||
|
"vite": "^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@sveltejs/vite-plugin-svelte-inspector": {
|
||||||
|
"version": "1.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-1.0.3.tgz",
|
||||||
|
"integrity": "sha512-Khdl5jmmPN6SUsVuqSXatKpQTMIifoQPDanaxC84m9JxIibWvSABJyHpyys0Z+1yYrxY5TTEQm+6elh0XCMaOA==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"debug": "^4.3.4"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^14.18.0 || >= 16"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@sveltejs/vite-plugin-svelte": "^2.2.0",
|
||||||
|
"svelte": "^3.54.0 || ^4.0.0",
|
||||||
|
"vite": "^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@types/estree": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/acorn": {
|
||||||
|
"version": "8.10.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
|
||||||
|
"integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
|
||||||
|
"dev": true,
|
||||||
|
"bin": {
|
||||||
|
"acorn": "bin/acorn"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.4.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/aria-query": {
|
||||||
|
"version": "5.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
|
||||||
|
"integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"dequal": "^2.0.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/axobject-query": {
|
||||||
|
"version": "3.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz",
|
||||||
|
"integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"dequal": "^2.0.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/code-red": {
|
||||||
|
"version": "1.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz",
|
||||||
|
"integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@jridgewell/sourcemap-codec": "^1.4.15",
|
||||||
|
"@types/estree": "^1.0.1",
|
||||||
|
"acorn": "^8.10.0",
|
||||||
|
"estree-walker": "^3.0.3",
|
||||||
|
"periscopic": "^3.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/css-tree": {
|
||||||
|
"version": "2.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
|
||||||
|
"integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"mdn-data": "2.0.30",
|
||||||
|
"source-map-js": "^1.0.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/debug": {
|
||||||
|
"version": "4.3.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
|
||||||
|
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"ms": "2.1.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.0"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"supports-color": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/deepmerge": {
|
||||||
|
"version": "4.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
|
||||||
|
"integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/dequal": {
|
||||||
|
"version": "2.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
|
||||||
|
"integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/esbuild": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
|
||||||
|
"dev": true,
|
||||||
|
"hasInstallScript": true,
|
||||||
|
"bin": {
|
||||||
|
"esbuild": "bin/esbuild"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"@esbuild/android-arm": "0.18.20",
|
||||||
|
"@esbuild/android-arm64": "0.18.20",
|
||||||
|
"@esbuild/android-x64": "0.18.20",
|
||||||
|
"@esbuild/darwin-arm64": "0.18.20",
|
||||||
|
"@esbuild/darwin-x64": "0.18.20",
|
||||||
|
"@esbuild/freebsd-arm64": "0.18.20",
|
||||||
|
"@esbuild/freebsd-x64": "0.18.20",
|
||||||
|
"@esbuild/linux-arm": "0.18.20",
|
||||||
|
"@esbuild/linux-arm64": "0.18.20",
|
||||||
|
"@esbuild/linux-ia32": "0.18.20",
|
||||||
|
"@esbuild/linux-loong64": "0.18.20",
|
||||||
|
"@esbuild/linux-mips64el": "0.18.20",
|
||||||
|
"@esbuild/linux-ppc64": "0.18.20",
|
||||||
|
"@esbuild/linux-riscv64": "0.18.20",
|
||||||
|
"@esbuild/linux-s390x": "0.18.20",
|
||||||
|
"@esbuild/linux-x64": "0.18.20",
|
||||||
|
"@esbuild/netbsd-x64": "0.18.20",
|
||||||
|
"@esbuild/openbsd-x64": "0.18.20",
|
||||||
|
"@esbuild/sunos-x64": "0.18.20",
|
||||||
|
"@esbuild/win32-arm64": "0.18.20",
|
||||||
|
"@esbuild/win32-ia32": "0.18.20",
|
||||||
|
"@esbuild/win32-x64": "0.18.20"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/estree-walker": {
|
||||||
|
"version": "3.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
|
||||||
|
"integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@types/estree": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/fsevents": {
|
||||||
|
"version": "2.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
|
||||||
|
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
|
||||||
|
"dev": true,
|
||||||
|
"hasInstallScript": true,
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/is-reference": {
|
||||||
|
"version": "3.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.1.tgz",
|
||||||
|
"integrity": "sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@types/estree": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/kleur": {
|
||||||
|
"version": "4.1.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
|
||||||
|
"integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/locate-character": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/magic-string": {
|
||||||
|
"version": "0.30.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.2.tgz",
|
||||||
|
"integrity": "sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@jridgewell/sourcemap-codec": "^1.4.15"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/mdn-data": {
|
||||||
|
"version": "2.0.30",
|
||||||
|
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
|
||||||
|
"integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/ms": {
|
||||||
|
"version": "2.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||||
|
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/nanoid": {
|
||||||
|
"version": "3.3.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
|
||||||
|
"integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/ai"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"bin": {
|
||||||
|
"nanoid": "bin/nanoid.cjs"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/periscopic": {
|
||||||
|
"version": "3.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz",
|
||||||
|
"integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@types/estree": "^1.0.0",
|
||||||
|
"estree-walker": "^3.0.0",
|
||||||
|
"is-reference": "^3.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/picocolors": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/postcss": {
|
||||||
|
"version": "8.4.28",
|
||||||
|
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.28.tgz",
|
||||||
|
"integrity": "sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/postcss/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "tidelift",
|
||||||
|
"url": "https://tidelift.com/funding/github/npm/postcss"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/ai"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dependencies": {
|
||||||
|
"nanoid": "^3.3.6",
|
||||||
|
"picocolors": "^1.0.0",
|
||||||
|
"source-map-js": "^1.0.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^10 || ^12 || >=14"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/rollup": {
|
||||||
|
"version": "3.28.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/rollup/-/rollup-3.28.0.tgz",
|
||||||
|
"integrity": "sha512-d7zhvo1OUY2SXSM6pfNjgD5+d0Nz87CUp4mt8l/GgVP3oBsPwzNvSzyu1me6BSG9JIgWNTVcafIXBIyM8yQ3yw==",
|
||||||
|
"dev": true,
|
||||||
|
"bin": {
|
||||||
|
"rollup": "dist/bin/rollup"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.18.0",
|
||||||
|
"npm": ">=8.0.0"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"fsevents": "~2.3.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/source-map-js": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
|
||||||
|
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/svelte": {
|
||||||
|
"version": "4.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.0.tgz",
|
||||||
|
"integrity": "sha512-kVsdPjDbLrv74SmLSUzAsBGquMs4MPgWGkGLpH+PjOYnFOziAvENVzgJmyOCV2gntxE32aNm8/sqNKD6LbIpeQ==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@ampproject/remapping": "^2.2.1",
|
||||||
|
"@jridgewell/sourcemap-codec": "^1.4.15",
|
||||||
|
"@jridgewell/trace-mapping": "^0.3.18",
|
||||||
|
"acorn": "^8.9.0",
|
||||||
|
"aria-query": "^5.3.0",
|
||||||
|
"axobject-query": "^3.2.1",
|
||||||
|
"code-red": "^1.0.3",
|
||||||
|
"css-tree": "^2.3.1",
|
||||||
|
"estree-walker": "^3.0.3",
|
||||||
|
"is-reference": "^3.0.1",
|
||||||
|
"locate-character": "^3.0.0",
|
||||||
|
"magic-string": "^0.30.0",
|
||||||
|
"periscopic": "^3.1.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/svelte-hmr": {
|
||||||
|
"version": "0.15.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.3.tgz",
|
||||||
|
"integrity": "sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": "^12.20 || ^14.13.1 || >= 16"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"svelte": "^3.19.0 || ^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/vite": {
|
||||||
|
"version": "4.4.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz",
|
||||||
|
"integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"esbuild": "^0.18.10",
|
||||||
|
"postcss": "^8.4.27",
|
||||||
|
"rollup": "^3.27.1"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"vite": "bin/vite.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^14.18.0 || >=16.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/vitejs/vite?sponsor=1"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"fsevents": "~2.3.2"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@types/node": ">= 14",
|
||||||
|
"less": "*",
|
||||||
|
"lightningcss": "^1.21.0",
|
||||||
|
"sass": "*",
|
||||||
|
"stylus": "*",
|
||||||
|
"sugarss": "*",
|
||||||
|
"terser": "^5.4.0"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"@types/node": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"less": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"lightningcss": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"sass": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"stylus": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"sugarss": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"terser": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/vitefu": {
|
||||||
|
"version": "0.2.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.4.tgz",
|
||||||
|
"integrity": "sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==",
|
||||||
|
"dev": true,
|
||||||
|
"peerDependencies": {
|
||||||
|
"vite": "^3.0.0 || ^4.0.0"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"vite": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"name": "ffmpeg-builder",
|
||||||
|
"private": true,
|
||||||
|
"version": "0.0.0",
|
||||||
|
"type": "module",
|
||||||
|
"scripts": {
|
||||||
|
"dev": "vite",
|
||||||
|
"build": "vite build",
|
||||||
|
"preview": "vite preview"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@sveltejs/vite-plugin-svelte": "^2.4.2",
|
||||||
|
"svelte": "^4.0.5",
|
||||||
|
"vite": "^4.4.5"
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,6 +2,7 @@ import json
|
||||||
import re
|
import re
|
||||||
from subprocess import run
|
from subprocess import run
|
||||||
|
|
||||||
|
|
||||||
def get_names():
|
def get_names():
|
||||||
filters = []
|
filters = []
|
||||||
|
|
||||||
|
@ -70,13 +71,26 @@ def get_params(f):
|
||||||
if item.get("max", 0) in ["INT_MAX", "FLT_MAX", "DBL_MAX", "I64_MAX"]:
|
if item.get("max", 0) in ["INT_MAX", "FLT_MAX", "DBL_MAX", "I64_MAX"]:
|
||||||
item["max"] = 2147483647
|
item["max"] = 2147483647
|
||||||
|
|
||||||
if item.get("min", 0) in ["INT_MIN", "FLT_MIN", "DBL_MIN", "-DBL_MAX", "I64_MIN", "-FLT_MAX"]:
|
if item.get("min", 0) in [
|
||||||
|
"INT_MIN",
|
||||||
|
"FLT_MIN",
|
||||||
|
"DBL_MIN",
|
||||||
|
"-DBL_MAX",
|
||||||
|
"I64_MIN",
|
||||||
|
"-FLT_MAX",
|
||||||
|
]:
|
||||||
item["min"] = -2147483648
|
item["min"] = -2147483648
|
||||||
|
|
||||||
if item.get("default", 0) in ["INT_MAX", "FLT_MAX", "DBL_MAX", "I64_MAX"]:
|
if item.get("default", 0) in ["INT_MAX", "FLT_MAX", "DBL_MAX", "I64_MAX"]:
|
||||||
item["default"] = 2147483647
|
item["default"] = 2147483647
|
||||||
|
|
||||||
if item.get("default", 0) in ["INT_MIN", "FLT_MIN", "DBL_MIN", "-DBL_MAX", "I64_MAX"]:
|
if item.get("default", 0) in [
|
||||||
|
"INT_MIN",
|
||||||
|
"FLT_MIN",
|
||||||
|
"DBL_MIN",
|
||||||
|
"-DBL_MAX",
|
||||||
|
"I64_MAX",
|
||||||
|
]:
|
||||||
item["default"] = -2147483648
|
item["default"] = -2147483648
|
||||||
|
|
||||||
if item["default"] == "nan":
|
if item["default"] == "nan":
|
||||||
|
@ -97,6 +111,9 @@ def get_params(f):
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
if type(item["default"]) == str:
|
||||||
|
item["default"] = item["default"].replace("'", "").replace('"', "")
|
||||||
|
|
||||||
else:
|
else:
|
||||||
item = {"value": parts[0], "desc": " ".join(parts[3:])}
|
item = {"value": parts[0], "desc": " ".join(parts[3:])}
|
||||||
if "options" not in params[-1]:
|
if "options" not in params[-1]:
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
import json
|
||||||
|
from subprocess import run
|
||||||
|
import os
|
||||||
|
|
||||||
|
INP = "./video/example.mp4"
|
||||||
|
|
||||||
|
with open("./src/filters.json", "r") as infile:
|
||||||
|
filters = json.load(infile)
|
||||||
|
|
||||||
|
for f in filters:
|
||||||
|
outfile = f'./video/{f["name"]}.mp4'
|
||||||
|
if os.path.exists(outfile):
|
||||||
|
continue
|
||||||
|
|
||||||
|
params = None
|
||||||
|
if f.get("params"):
|
||||||
|
params = []
|
||||||
|
for p in f.get("params"):
|
||||||
|
if p.get("default"):
|
||||||
|
out = f'{p["name"]}={p["default"]}'
|
||||||
|
params.append(out)
|
||||||
|
params = ":".join(params)
|
||||||
|
|
||||||
|
filter_command = f["name"]
|
||||||
|
|
||||||
|
if params:
|
||||||
|
filter_command += "=" + params
|
||||||
|
|
||||||
|
command = ["ffmpeg", "-i", INP, "-y", "-filter_complex", filter_command, outfile]
|
||||||
|
|
||||||
|
run(command)
|
|
@ -0,0 +1,97 @@
|
||||||
|
<script>
|
||||||
|
import FILTERS from "./filters.json";
|
||||||
|
import { inputs, output, filters } from "./stores.js";
|
||||||
|
import Input from "./Input.svelte";
|
||||||
|
import Output from "./Output.svelte";
|
||||||
|
import Filter from "./Filter.svelte";
|
||||||
|
|
||||||
|
function newInput() {
|
||||||
|
$inputs = [...$inputs, ""];
|
||||||
|
}
|
||||||
|
|
||||||
|
function newFilter() {
|
||||||
|
$filters = [...$filters, {}];
|
||||||
|
}
|
||||||
|
|
||||||
|
let command = "";
|
||||||
|
|
||||||
|
inputs.subscribe(updateCommand);
|
||||||
|
output.subscribe(updateCommand);
|
||||||
|
filters.subscribe(updateCommand);
|
||||||
|
|
||||||
|
function updateCommand() {
|
||||||
|
const cInputs = $inputs.map((i) => `-i ${i}`).join(" ");
|
||||||
|
|
||||||
|
const cOutput = $output;
|
||||||
|
|
||||||
|
const cFilters = $filters
|
||||||
|
.map((f) => {
|
||||||
|
let fCommand = f.name;
|
||||||
|
if (f.params && f.params.length > 0) {
|
||||||
|
let params = f.params
|
||||||
|
.map((p) => {
|
||||||
|
if (p.value === "" || p.value === null) return null;
|
||||||
|
return `${p.name}=${p.value}`;
|
||||||
|
})
|
||||||
|
.filter((p) => p !== null)
|
||||||
|
.join(":");
|
||||||
|
fCommand += "=" + params;
|
||||||
|
}
|
||||||
|
return fCommand;
|
||||||
|
})
|
||||||
|
.join(",");
|
||||||
|
|
||||||
|
let out = `ffmpeg ${cInputs}`;
|
||||||
|
|
||||||
|
if (cFilters) out += `-vf "${cFilters}"`;
|
||||||
|
|
||||||
|
out += ` ${cOutput}`;
|
||||||
|
|
||||||
|
command = out;
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
<section class="command">{command}</section>
|
||||||
|
<section class="inputs">
|
||||||
|
<h3>Inputs</h3>
|
||||||
|
{#each $inputs as inp, index}
|
||||||
|
<Input bind:filename={inp} {index} />
|
||||||
|
{/each}
|
||||||
|
<button on:click={newInput}>New Input</button>
|
||||||
|
|
||||||
|
{#each $inputs as inp}
|
||||||
|
<p>{inp}</p>
|
||||||
|
{/each}
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="filters">
|
||||||
|
<!-- {JSON.stringify($filters)} -->
|
||||||
|
<h3>Filters</h3>
|
||||||
|
<button on:click={newFilter}>Add Filter</button>
|
||||||
|
<div class="filters-holder">
|
||||||
|
{#each $filters as f, index}
|
||||||
|
<div class="filter">
|
||||||
|
<Filter bind:filter={f} {index} />
|
||||||
|
</div>
|
||||||
|
{/each}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="output">
|
||||||
|
<h3>Output</h3>
|
||||||
|
<Output bind:filename={$output} />
|
||||||
|
<p>{$output}</p>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.filters-holder {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(3, 1fr);
|
||||||
|
}
|
||||||
|
.filter {
|
||||||
|
margin: 10px;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,128 @@
|
||||||
|
<script>
|
||||||
|
import FILTERS from "./filters.json";
|
||||||
|
import { filters } from "./stores.js";
|
||||||
|
|
||||||
|
export let filter = {
|
||||||
|
name: "",
|
||||||
|
params: [],
|
||||||
|
description: "",
|
||||||
|
};
|
||||||
|
|
||||||
|
let filterIndex;
|
||||||
|
export let index;
|
||||||
|
console.log(index);
|
||||||
|
|
||||||
|
function remove() {
|
||||||
|
console.log(index);
|
||||||
|
$filters.splice(index, 1);
|
||||||
|
$filters = $filters;
|
||||||
|
}
|
||||||
|
|
||||||
|
function changeFilter() {
|
||||||
|
filter = {
|
||||||
|
name: current.name,
|
||||||
|
description: current.description,
|
||||||
|
params: current.params.map((p) => {
|
||||||
|
p.value = null;
|
||||||
|
if (p.default != null) p.value = p.default;
|
||||||
|
return p;
|
||||||
|
}),
|
||||||
|
};
|
||||||
|
console.log(filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
$: current = FILTERS[filterIndex];
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div class="filter-holder">
|
||||||
|
<div class="head">
|
||||||
|
<select bind:value={filterIndex} on:change={changeFilter}>
|
||||||
|
<option />
|
||||||
|
{#each FILTERS as f, i}
|
||||||
|
<option value={i}>{f.name}</option>
|
||||||
|
{/each}
|
||||||
|
</select>
|
||||||
|
<button on:click={remove}>X</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{#if filter.name}
|
||||||
|
<div class="description">{current.description}</div>
|
||||||
|
|
||||||
|
{#if filter.params.length > 0}
|
||||||
|
<div class="options">
|
||||||
|
{#each filter.params as p}
|
||||||
|
<!-- <p>{p.min} {p.max} {p.default}</p> -->
|
||||||
|
<div class="param-holder">
|
||||||
|
<div class="param">
|
||||||
|
<span class="p-name">{p.name}</span>
|
||||||
|
<span class="p-value">
|
||||||
|
{#if p.options && p.options.length > 0}
|
||||||
|
<select bind:value={p.value}>
|
||||||
|
{#each p.options as o}
|
||||||
|
<option value={o.value}>{o.value}
|
||||||
|
{#if o.desc}({o.desc}){/if}
|
||||||
|
</option>
|
||||||
|
{/each}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
{:else}
|
||||||
|
{#if p.type == "float" || p.type == "double" || p.type == "long" || p.type=="int"}
|
||||||
|
<input type="range" min={p.min} max={p.max} bind:value={p.value} />
|
||||||
|
<input bind:value={p.value} />
|
||||||
|
{:else}
|
||||||
|
<input bind:value={p.value} />
|
||||||
|
{/if}
|
||||||
|
{/if}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="p-description">{p.desc}</div>
|
||||||
|
</div>
|
||||||
|
{/each}
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.filter-holder {
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
.filter-holder,
|
||||||
|
input,
|
||||||
|
select {
|
||||||
|
font-size: 14px;
|
||||||
|
font-family: "Times New Roman", Times, serif;
|
||||||
|
}
|
||||||
|
.description {
|
||||||
|
margin: 10px 0px;
|
||||||
|
}
|
||||||
|
.head {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
.options {
|
||||||
|
/* margin-top: 10px; */
|
||||||
|
/* padding-top: 10px; */
|
||||||
|
}
|
||||||
|
.param {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
.param-holder {
|
||||||
|
border-top: 1px solid #999;
|
||||||
|
padding: 10px 0px;
|
||||||
|
}
|
||||||
|
.param-holder:last-child {
|
||||||
|
padding-bottom: 0;
|
||||||
|
}
|
||||||
|
.p-description {
|
||||||
|
opacity: 0.8;
|
||||||
|
font-size: 0.9em;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,15 @@
|
||||||
|
<script>
|
||||||
|
import { inputs } from './stores.js';
|
||||||
|
export let filename="";
|
||||||
|
export let index;
|
||||||
|
|
||||||
|
function remove() {
|
||||||
|
$inputs.splice(index, 1);
|
||||||
|
$inputs = $inputs;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<input bind:value={filename} />
|
||||||
|
<button on:click={remove}>Remove</button>
|
||||||
|
</div>
|
|
@ -0,0 +1,5 @@
|
||||||
|
<script>
|
||||||
|
export let filename="";
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<input bind:value={filename} />
|
|
@ -0,0 +1,26 @@
|
||||||
|
:root {
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
background-color: #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#app {
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
}
|
||||||
|
button:hover {
|
||||||
|
}
|
||||||
|
button:focus,
|
||||||
|
button:focus-visible {
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,8 @@
|
||||||
|
import './app.css'
|
||||||
|
import App from './App.svelte'
|
||||||
|
|
||||||
|
const app = new App({
|
||||||
|
target: document.getElementById('app'),
|
||||||
|
})
|
||||||
|
|
||||||
|
export default app
|
|
@ -0,0 +1,5 @@
|
||||||
|
import { writable } from 'svelte/store';
|
||||||
|
|
||||||
|
export const inputs = writable(["input.mp4"]);
|
||||||
|
export const output = writable("output.mp4");
|
||||||
|
export const filters = writable([]);
|
|
@ -0,0 +1,2 @@
|
||||||
|
/// <reference types="svelte" />
|
||||||
|
/// <reference types="vite/client" />
|
|
@ -0,0 +1,7 @@
|
||||||
|
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
// Consult https://svelte.dev/docs#compile-time-svelte-preprocess
|
||||||
|
// for more information about preprocessors
|
||||||
|
preprocess: vitePreprocess(),
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
import { defineConfig } from 'vite'
|
||||||
|
import { svelte } from '@sveltejs/vite-plugin-svelte'
|
||||||
|
|
||||||
|
// https://vitejs.dev/config/
|
||||||
|
export default defineConfig({
|
||||||
|
plugins: [svelte()],
|
||||||
|
})
|
Loading…
Reference in New Issue