Gathering detailed insights and metrics for @bobyzgirlllnpm/reiciendis-officiis-aperiam
Gathering detailed insights and metrics for @bobyzgirlllnpm/reiciendis-officiis-aperiam
Gathering detailed insights and metrics for @bobyzgirlllnpm/reiciendis-officiis-aperiam
Gathering detailed insights and metrics for @bobyzgirlllnpm/reiciendis-officiis-aperiam
npm install @bobyzgirlllnpm/reiciendis-officiis-aperiam
Typescript
Module System
Node Version
NPM Version
Cumulative downloads
Total Downloads
Last Day
0%
NaN
Compared to previous day
Last Week
0%
NaN
Compared to previous week
Last Month
0%
NaN
Compared to previous month
Last Year
0%
NaN
Compared to previous year
30
Experimental JSON to FFmpeg command line tool for video editing. Because of JSON it's much easier to create and edit video timeline and it's much easier to integrate it with other tools.
Install package:
1npm install @bobyzgirlllnpm/reiciendis-officiis-aperiam 2 3# or 4 5yarn add @bobyzgirlllnpm/reiciendis-officiis-aperiam 6 7# or 8 9pnpm add @bobyzgirlllnpm/reiciendis-officiis-aperiam
Import and use it:
1import { parseSchema } from '@bobyzgirlllnpm/reiciendis-officiis-aperiam'; 2 3const ffmpegCommand = parseSchema(schema);
or if you need filter complex part only:
1const filter = parseSchema(schema, true);
Tool translates video description from JSON to complex FFmpeg command including all required preprocessing steps, filters and transitions.
The timeline can be passed either as a JSON string or as a JS object. For example this JSON represent the timeline shown above:
1{ 2 "version": 1, 3 "inputs": { 4 "source1": { 5 "type": "video", 6 "file": "samples/bee1920.mp4", 7 "hasAudio": false, 8 "hasVideo": true, 9 "duration": 40 10 }, 11 "source2": { 12 "type": "video", 13 "file": "samples/book1920.mp4", 14 "hasAudio": false, 15 "hasVideo": true, 16 "duration": 13 17 }, 18 "source3": { 19 "type": "video", 20 "file": "samples/cows1920.mp4", 21 "hasAudio": true, 22 "hasVideo": true, 23 "duration": 15 24 }, 25 "source4": { 26 "type": "video", 27 "file": "samples/flowers1920.mp4", 28 "hasAudio": true, 29 "hasVideo": true, 30 "duration": 21 31 }, 32 "audio1": { 33 "type": "audio", 34 "file": "samples/ever.mp3", 35 "hasAudio": true, 36 "hasVideo": false, 37 "duration": 181 38 }, 39 "audio2": { 40 "type": "audio", 41 "file": "samples/weekend.mp3", 42 "hasAudio": true, 43 "hasVideo": false, 44 "duration": 208 45 }, 46 "watermark": { 47 "type": "image", 48 "file": "samples/flower.png", 49 "hasAudio": false, 50 "hasVideo": true, 51 "duration": 0 52 } 53 }, 54 "tracks": { 55 "track_with_some_videos": { 56 "type": "video", 57 "clips": [ 58 { 59 "name": "clip1", 60 "source": "source1", 61 "timelineTrackStart": 3, 62 "duration": 2, 63 "sourceStartOffset": 10, 64 "clipType": "video", 65 "transform": { 66 "x": 0, 67 "y": 0, 68 "width": 1920, 69 "height": 1080, 70 "rotation": 0, 71 "opacity": 1 72 } 73 }, 74 { 75 "name": "clip2", 76 "source": "source2", 77 "timelineTrackStart": 5, 78 "duration": 1, 79 "sourceStartOffset": 5, 80 "clipType": "video", 81 "transform": { 82 "x": 0, 83 "y": 0, 84 "width": 1920, 85 "height": 1080, 86 "rotation": 0, 87 "opacity": 1 88 } 89 }, 90 { 91 "name": "clip3", 92 "source": "source3", 93 "timelineTrackStart": 10, 94 "duration": 5, 95 "sourceStartOffset": 3, 96 "clipType": "video", 97 "transform": { 98 "x": 480, 99 "y": 270, 100 "width": 960, 101 "height": 540, 102 "rotation": 45, 103 "opacity": 0.5 104 } 105 }, 106 { 107 "name": "clip4", 108 "source": "source1", 109 "timelineTrackStart": 15, 110 "duration": 5, 111 "sourceStartOffset": 27, 112 "clipType": "video", 113 "transform": { 114 "x": 0, 115 "y": 0, 116 "width": 1920, 117 "height": 1080, 118 "rotation": 0, 119 "opacity": 1 120 } 121 }, 122 { 123 "name": "clip5", 124 "source": "source2", 125 "timelineTrackStart": 19, 126 "duration": 5, 127 "sourceStartOffset": 0, 128 "clipType": "video", 129 "transform": { 130 "x": 50, 131 "y": 50, 132 "width": 400, 133 "height": 300, 134 "rotation": 0, 135 "opacity": 1 136 } 137 }, 138 { 139 "name": "clip6", 140 "source": "source4", 141 "timelineTrackStart": 23, 142 "duration": 5, 143 "sourceStartOffset": 15, 144 "clipType": "video", 145 "transform": { 146 "x": 0, 147 "y": 0, 148 "width": 1920, 149 "height": 1080, 150 "rotation": 0, 151 "opacity": 1 152 } 153 }, 154 { 155 "name": "clip7", 156 "source": "source3", 157 "timelineTrackStart": 28, 158 "duration": 5, 159 "sourceStartOffset": 0, 160 "clipType": "video", 161 "transform": { 162 "x": 0, 163 "y": 0, 164 "width": 1920, 165 "height": 1080, 166 "rotation": 0, 167 "opacity": 1 168 } 169 }, 170 { 171 "name": "clip8", 172 "source": "source1", 173 "timelineTrackStart": 33, 174 "duration": 5, 175 "sourceStartOffset": 0, 176 "clipType": "video", 177 "transform": { 178 "x": 0, 179 "y": 0, 180 "width": 1920, 181 "height": 1080, 182 "rotation": 0, 183 "opacity": 1 184 } 185 } 186 ] 187 }, 188 "track_with_watermark": { 189 "type": "video", 190 "clips": [ 191 { 192 "name": "watermark_clip", 193 "source": "watermark", 194 "timelineTrackStart": 0, 195 "duration": 30, 196 "sourceStartOffset": 0, 197 "clipType": "image", 198 "transform": { 199 "x": 1610, 200 "y": 10, 201 "width": 300, 202 "height": 150, 203 "rotation": 0, 204 "opacity": 1 205 } 206 } 207 ] 208 }, 209 "track2": { 210 "type": "audio", 211 "clips": [ 212 { 213 "name": "audio_clip1", 214 "source": "audio1", 215 "timelineTrackStart": 5, 216 "duration": 10, 217 "sourceStartOffset": 0, 218 "clipType": "audio", 219 "volume": 1 220 }, 221 { 222 "name": "audio_clip2", 223 "source": "audio2", 224 "timelineTrackStart": 20, 225 "duration": 15, 226 "sourceStartOffset": 0, 227 "clipType": "audio", 228 "volume": 1 229 } 230 ] 231 } 232 }, 233 "transitions": [ 234 { 235 "type": "smoothup", 236 "duration": 0.5, 237 "from": null, 238 "to": "clip1" 239 }, 240 { 241 "type": "smoothdown", 242 "duration": 0.5, 243 "from": "clip1", 244 "to": null 245 }, 246 { 247 "type": "fade", 248 "duration": 0.5, 249 "from": null, 250 "to": "clip2" 251 }, 252 { 253 "type": "circlecrop", 254 "duration": 0.5, 255 "from": "clip2", 256 "to": null 257 }, 258 { 259 "type": "squeezev", 260 "duration": 0.5, 261 "from": "clip3", 262 "to": null 263 }, 264 { 265 "type": "squeezeh", 266 "duration": 0.5, 267 "from": "watermark_clip", 268 "to": null 269 }, 270 { 271 "type": "fade", 272 "duration": 1, 273 "from": "clip4", 274 "to": "clip5" 275 }, 276 { 277 "type": "smoothdown", 278 "duration": 1, 279 "from": "clip5", 280 "to": "clip6" 281 }, 282 { 283 "type": "smoothdown", 284 "duration": 0.5, 285 "from": "clip8", 286 "to": null 287 } 288 ], 289 "output": { 290 "tempDir": "./tmp", 291 "file": "output.mp4", 292 "videoCodec": "libx264", 293 "audioCodec": "aac", 294 "width": 1920, 295 "height": 1080, 296 "audioBitrate": "320k", 297 "preset": "veryfast", 298 "crf": 23, 299 "framerate": 30, 300 "flags": [ 301 "-pix_fmt", 302 "yuv420p" 303 ], 304 "startPosition": 0, 305 "endPosition": 38, 306 "scaleRatio": 0.2 307 } 308}
will be translated into command like this:
1#!/bin/bash 2mkdir -p ./tmp 3ffmpeg -y -i samples/bee1920.mp4 -ss 10 -t 2 -r 30 ./tmp/clip1.mp4 4ffmpeg -y -i samples/book1920.mp4 -ss 5 -t 1 -r 30 ./tmp/clip2.mp4 5ffmpeg -y -i samples/cows1920.mp4 -ss 3 -t 5 -r 30 ./tmp/clip3.mp4 6ffmpeg -y -i samples/bee1920.mp4 -ss 27 -t 5 -r 30 ./tmp/clip4.mp4 7ffmpeg -y -i samples/book1920.mp4 -ss 0 -t 5 -r 30 ./tmp/clip5.mp4 8ffmpeg -y -i samples/flowers1920.mp4 -ss 15 -t 5 -r 30 ./tmp/clip6.mp4 9ffmpeg -y -i samples/cows1920.mp4 -ss 0 -t 5 -r 30 ./tmp/clip7.mp4 10ffmpeg -y -i samples/bee1920.mp4 -ss 0 -t 5 -r 30 ./tmp/clip8.mp4 11ffmpeg -y \ 12-i ./tmp/clip1.mp4 \ 13-i ./tmp/clip2.mp4 \ 14-i ./tmp/clip3.mp4 \ 15-i ./tmp/clip4.mp4 \ 16-i ./tmp/clip5.mp4 \ 17-i ./tmp/clip6.mp4 \ 18-i ./tmp/clip7.mp4 \ 19-i ./tmp/clip8.mp4 \ 20-i samples/ever.mp3 \ 21-i samples/weekend.mp3 \ 22-i samples/flower.png \ 23-filter_complex "color=c=black:s=384x216:d=38[base]; 24color=c=black@0.0:s=384x216:d=3[gap_xbPT0R2D]; 25color=black@0.0:s=384x216:d=2[cMu1AeAv_base]; 26[0:v]scale=384:216,format=rgba,colorchannelmixer=aa=1[Tqb8V30z_clip]; 27[cMu1AeAv_base][Tqb8V30z_clip]overlay=0:0:format=auto,rotate=0,fps=30[clip1]; 28color=black@0.0:s=384x216:d=1[nwjCLeBf_base]; 29[1:v]scale=384:216,format=rgba,colorchannelmixer=aa=1[Jt2Ow3z7_clip]; 30[nwjCLeBf_base][Jt2Ow3z7_clip]overlay=0:0:format=auto,rotate=0,fps=30[clip2]; 31color=c=black@0.0:s=384x216:d=4[gap_wGJMg2Xy]; 32color=black@0.0:s=384x216:d=5[nbl0GdNN_base]; 33[2:v]scale=192:108,format=rgba,colorchannelmixer=aa=0.5[fuMgQH1R_clip]; 34[nbl0GdNN_base][fuMgQH1R_clip]overlay=96:54:format=auto,rotate=45,fps=30[clip3]; 35color=black@0.0:s=384x216:d=5[KWL95Ced_base]; 36[3:v]scale=384:216,format=rgba,colorchannelmixer=aa=1[tiuMabCa_clip]; 37[KWL95Ced_base][tiuMabCa_clip]overlay=0:0:format=auto,rotate=0,fps=30[clip4]; 38color=black@0.0:s=384x216:d=5[DYDR0Q6x_base]; 39[4:v]scale=80:60,format=rgba,colorchannelmixer=aa=1[52NAZxII_clip]; 40[DYDR0Q6x_base][52NAZxII_clip]overlay=10:10:format=auto,rotate=0,fps=30[clip5]; 41color=black@0.0:s=384x216:d=5[nG4pXmLO_base]; 42[5:v]scale=384:216,format=rgba,colorchannelmixer=aa=1[CgOJcTIJ_clip]; 43[nG4pXmLO_base][CgOJcTIJ_clip]overlay=0:0:format=auto,rotate=0,fps=30[clip6]; 44color=black@0.0:s=384x216:d=5[occJwxJK_base]; 45[6:v]scale=384:216,format=rgba,colorchannelmixer=aa=1[varB8t9b_clip]; 46[occJwxJK_base][varB8t9b_clip]overlay=0:0:format=auto,rotate=0,fps=30[clip7]; 47color=black@0.0:s=384x216:d=5[3q2VQ9Fn_base]; 48[7:v]scale=384:216,format=rgba,colorchannelmixer=aa=1[TnMfX5QP_clip]; 49[3q2VQ9Fn_base][TnMfX5QP_clip]overlay=0:0:format=auto,rotate=0,fps=30[clip8]; 50color=c=black@0.0:s=384x216:d=0.5[void_clip1]; 51[void_clip1]fps=30[fps_void_clip1_cpX1K4oW]; 52[clip1]fps=30[fps_clip1_9yaTMQSH]; 53[fps_void_clip1_cpX1K4oW][fps_clip1_9yaTMQSH]xfade=transition=smoothup:duration=0.43333333333333335:offset=0,fps=30[start_xfade_wvuFc7bn]; 54color=c=black@0.0:s=384x216:d=0.5[void_start_xfade_wvuFc7bn]; 55[start_xfade_wvuFc7bn]fps=30[fps_start_xfade_wvuFc7bn_XxZrJa0B]; 56[void_start_xfade_wvuFc7bn]fps=30[fps_void_start_xfade_wvuFc7bn_hwY2KZxJ]; 57[fps_start_xfade_wvuFc7bn_XxZrJa0B][fps_void_start_xfade_wvuFc7bn_hwY2KZxJ]xfade=transition=smoothdown:duration=0.43333333333333335:offset=1.5,fps=30[end_xfade_6MnYQ2ds]; 58color=c=black@0.0:s=384x216:d=0.5[void_clip2]; 59[void_clip2]fps=30[fps_void_clip2_vSBFpXYV]; 60[clip2]fps=30[fps_clip2_j3pJwJ6G]; 61[fps_void_clip2_vSBFpXYV][fps_clip2_j3pJwJ6G]xfade=transition=fade:duration=0.43333333333333335:offset=0,fps=30[start_xfade_gCAkUPK2]; 62color=c=black@0.0:s=384x216:d=0.5[void_start_xfade_gCAkUPK2]; 63[start_xfade_gCAkUPK2]fps=30[fps_start_xfade_gCAkUPK2_ZnLBlAtD]; 64[void_start_xfade_gCAkUPK2]fps=30[fps_void_start_xfade_gCAkUPK2_mLqar0Ah]; 65[fps_start_xfade_gCAkUPK2_ZnLBlAtD][fps_void_start_xfade_gCAkUPK2_mLqar0Ah]xfade=transition=circlecrop:duration=0.43333333333333335:offset=0.5,fps=30[end_xfade_aKd3UWQt]; 66color=c=black@0.0:s=384x216:d=0.5[void_clip3]; 67[clip3]fps=30[fps_clip3_3Ga4ugVG]; 68[void_clip3]fps=30[fps_void_clip3_5aVt3xnR]; 69[fps_clip3_3Ga4ugVG][fps_void_clip3_5aVt3xnR]xfade=transition=squeezev:duration=0.43333333333333335:offset=4.5,fps=30[end_xfade_s7Ol6uli]; 70color=c=black@0.0:s=384x216:d=0.5[void_clip8]; 71[clip8]fps=30[fps_clip8_4ZkGxZrd]; 72[void_clip8]fps=30[fps_void_clip8_ylXk9DHa]; 73[fps_clip8_4ZkGxZrd][fps_void_clip8_ylXk9DHa]xfade=transition=smoothdown:duration=0.43333333333333335:offset=4.5,fps=30[end_xfade_xAKXZo2d]; 74[gap_xbPT0R2D][end_xfade_6MnYQ2ds]concat=n=2:v=1:a=0,fps=30[between_concat_xlCW8OEt]; 75[between_concat_xlCW8OEt][end_xfade_aKd3UWQt]concat=n=2:v=1:a=0,fps=30[between_concat_FQfoDU4F]; 76[between_concat_FQfoDU4F][gap_wGJMg2Xy]concat=n=2:v=1:a=0,fps=30[between_concat_TVD5hCH9]; 77[between_concat_TVD5hCH9][end_xfade_s7Ol6uli]concat=n=2:v=1:a=0,fps=30[between_concat_xTjAkdon]; 78[between_concat_xTjAkdon][clip4]concat=n=2:v=1:a=0,fps=30[between_concat_m0OYCgp8]; 79[between_concat_m0OYCgp8]fps=30[fps_between_concat_m0OYCgp8_noaEdyvP]; 80[clip5]fps=30[fps_clip5_kQ745of1]; 81[fps_between_concat_m0OYCgp8_noaEdyvP][fps_clip5_kQ745of1]xfade=transition=fade:duration=1:offset=19,fps=30[between_xfade_HVZF1EvG]; 82[between_xfade_HVZF1EvG]fps=30[fps_between_xfade_HVZF1EvG_YWChbdii]; 83[clip6]fps=30[fps_clip6_6MbjfU2H]; 84[fps_between_xfade_HVZF1EvG_YWChbdii][fps_clip6_6MbjfU2H]xfade=transition=smoothdown:duration=1:offset=23,fps=30[between_xfade_3RlWNvho]; 85[between_xfade_3RlWNvho][clip7]concat=n=2:v=1:a=0,fps=30[between_concat_OxLtEhr7]; 86[between_concat_OxLtEhr7][end_xfade_xAKXZo2d]concat=n=2:v=1:a=0,fps=30[track_with_some_videos]; 87color=black@0.0:s=384x216:d=30[CYKVVqgc_base]; 88[10:v]loop=loop=900:size=900,setpts=PTS-STARTPTS,fps=30,scale=60:30,format=rgba,colorchannelmixer=aa=1[VvcI98fO_clip]; 89[CYKVVqgc_base][VvcI98fO_clip]overlay=322:2:format=auto,rotate=0,fps=30[watermark_clip]; 90color=c=black@0.0:s=384x216:d=8[gap_eOcpsLfb]; 91color=c=black@0.0:s=384x216:d=0.5[void_watermark_clip]; 92[watermark_clip]fps=30[fps_watermark_clip_fRSzmFrO]; 93[void_watermark_clip]fps=30[fps_void_watermark_clip_fhdBGNa7]; 94[fps_watermark_clip_fRSzmFrO][fps_void_watermark_clip_fhdBGNa7]xfade=transition=squeezeh:duration=0.43333333333333335:offset=29.5,fps=30[end_xfade_imi5OETb]; 95[end_xfade_imi5OETb][gap_eOcpsLfb]concat=n=2:v=1:a=0,fps=30[track_with_watermark]; 96anullsrc=channel_layout=stereo:sample_rate=44100:d=5[gap_9ROKhKdt]; 97[8:a]atrim=0:10,asetpts=PTS-STARTPTS,volume=1[audio_clip1]; 98anullsrc=channel_layout=stereo:sample_rate=44100:d=5[gap_fV2D5e8A]; 99[9:a]atrim=0:15,asetpts=PTS-STARTPTS,volume=1[audio_clip2]; 100anullsrc=channel_layout=stereo:sample_rate=44100:d=3[gap_4fwsUHt5]; 101[gap_9ROKhKdt][audio_clip1][gap_fV2D5e8A][audio_clip2][gap_4fwsUHt5]concat=n=5:v=0:a=1[track2]; 102[base][track_with_some_videos]overlay=0:0[gE0LAoGU_combined_track]; 103[gE0LAoGU_combined_track][track_with_watermark]overlay=0:0[video_output]; 104[track2]volume=1[audio_output];" \ 105-map '[video_output]' -map '[audio_output]' -c:v libx264 -c:a aac -b:a 320k -r 30 -s 384x216 -ss 0 -t 38 -crf 23 -preset veryfast -pix_fmt yuv420p output.mp4
All samples are from Pixabay. All samples are licensed under Pixabay License.
MIT
No vulnerabilities found.
No security vulnerabilities found.