A utility to make home movies by cutting up, manipulating, and then stitching together your digital camera video files. Permits one to add fade-ins/outs, speed up/slow down, reverse direction, muting, rotate, burst and back-and-forth. A script-based or interactive, user-friendly front end for
Version: | Clipstitch 5.6 |
---|---|
Homepage: | http://www.twentypede.com/leg4/clipstitch5.6.html |
Author: | Shaheen Tonse |
Contact: | software@twentypede.com |
Source URL: | https://sourceforge.net/projects/clipstitch/files/ClipstitchSource_5.6.2.zip/download (mainly for benefit of MS Windows users) |
Copyright: | This document has been placed in the public domain. |
nb: After clicking on a topic, if you click on that header, it will bring you back here.
If you have taken the videos on your phone they need to be transferred to a computer first.
Apple computer users: While I would be most pleased if you used this, I have heard that Apple's I-Movie which comes free with your computer is very good.
Clipstitch is a front-end for FFmpeg, the well-known, widely used, free, open-source audio/video software program. FFmpeg handles almost every conceivable audio/video format and has tons of features. As a result of being so versatile it is hard to use, especially if you do not use it on a regular basis. Clipstitch does nothing that cannot be done with ffmpeg, but focuses on the small subset of ffmpeg features normally required to make a home movie, and simplifies their usage and syntax.
Clipstitch works by parsing its simple directives from a text based script file (which you make), internally putting these together to make fairly complicated-looking ffmpeg commands. It then directs the OS to execute those; that is where the actual video manipulating work happens. It is quite likely that if ffmpeg works on your computer, then Clipstitch too will work
Clipstitch my_directives_file.txtAny of the commands in the directives file can also be entered interactively in a
Especially if you are planning to re-distribute it with or without modifications you should read the Apache License.
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and limitations under the License.
You must have ffmpeg, the well-known, widely used, free, open-source audio/video software program installed. Get ffmpeg at
Attn MS Windows Users: After an ffmpeg upgrade in 2018 I found it necessary to add a new environment variable SDL_AUDIODRIVER and set its value to
Linux, Unix, MAC OSX and MS Windows+Python users use similar installation instructions since they use the Python interpreter already on their computer to interpret the source code. MS Windows no-Python instructions are different since pre-compiled Clipstitch executable is provided.
Download the tar file, which you will find after clicking on the
A pre-built Linux executable can be used, especially by Python 2 users who can't or won't upgrade to Python 3.
nb: Experienced users can skip this, if you're a newbie, read on.
alias Clipstitch "python path_to_Clipstitch_folder/clipstitch.py"You might have to re-login, or open a new Terminal, or type
ln -s Path_to_Clipstitch_folder/clipstitch.py ClipstitchMany people keep a specific folder, such as $HOME/bin, to hold soft links to point to frequently used programs and utilities. But any folder in the command path will work, even the folder you just extracted your download to provided you put that folder in the command path.
chmod u+x Path_to_Clipstitch_folder/clipstitch.pyand that should set your execute permission correctly and fix the problem.
@echo off REM Sample BAT file so can run Clipstitch from REM the location of the pre-compiled Clipstitch executable: C:\Users\YourUserName\Path_to_Clipstitch_Folder\clipstitch5.6.x.exe %*
Be certain to keep the
After you have made
Nothing to do here really. All users:
MS Windows no-Python users who so desire can look at the source code (link provided at top of ths doc). This has extra CR/LFs inserted to make viewing in Windows Notepad easier. Other users get source code anyway in the tar file in the Linux/Unix/Apple section below.
Place holder
The sub-sections on options, while useful, are wordy. If you are in a hurry to get started jump ahead to Sample Session 1
There are very few command line options, (because most options are passed via a script called the directives file). The logging level is most likely to be helpful. Most of the time Clipstitch is invoked with a single argument, the directives file name. That script is where most options and commands reside.
positional arguments: infile The input directives file. Required optional arguments: -h, --help show this help message and exit -v, --version show program's version number and exit --log {DEBUG,INFO,WARNING,ERROR,FATAL} Specify logging verbosity level (INFO is default)
The two commands
The special effect options
A standalone tool:
This is a description of all commands. Is obtained any time by putting
optional arguments: -h, --help show this help message and exit -e, --endread Discontinues reading directive file if encountered, or exits manual mode Persistent options: These generally define current folder and file names. They retain their value until option is used again. --folder FOLDER Specify directory path to files used by the other options: --moviefile, --readclips,--writeclips,-- readseq, --writeseq... The value is persistent until changed by a subsequent --folder command. Sets the value of CurrentFolder, which specifies a directory path. --moviefile MOVIEFILE Specifies the input video file. This value is persistent until changed by a subsequent --moviefile command. Sets the value of variable CurrentMovieFile, --ffmpeg_folder FFMPEG_FOLDER Sets the folder name in which the ffmpeg,ffprobe and ffplay binary executables reside. Unnecessary if the ffmpeg binary folder is part of user's $PATH environment variable. Useful if wish to override $PATH and use older ffmpeg version, or simply not bother with $PATH. --desc [DESCRIPTION [DESCRIPTION ...]] Useful for identifying clips later when re-ordering or manipulatiing. Advisable use on own line to avoid parsing errors, or use as "--desc='desc1 desc2 ...'". Sets a variable CurrentDescription. This value is persistent until changed by another --desc command. --fadedefaults fadein fadeout Specifies default values for video and audio fadein/out --ffmpegoptions_g [global options] Additional options for ffmpeg command inserted immediately after "ffmpeg". Enter as '-- ffmpegopti..="options"' else parser will choke on minus signs in the options. Enter with no options to set back to inactive --ffmpegoptions_i [input options] Additional options for ffmpeg command inserted before "-i". See '--ffmpegoptions_g' help --ffmpegoptions_o [output options] Additional options for ffmpeg command inserted immediately before output filename. See '-- ffmpegoptions_g' help --ffplayoptions_g [global options] Additional options for ffplay command. Useful for setting display size. Enter as '-- ffplayoptions_g="options"' else parser will choke on any minus signs that are in the options. Enter with no options to set back to inactive --caption ="my caption" Add a caption to a clip. Use as '--caption="CAPTION TEXT"'. Commas etc. in caption might need "escape"ing. --captionproperties CAPTIONPROPERTIES Caption properties e.g. ":x=100:y=100:fontsize=24:font color=yellow:box=1:boxcolor=black" Manual Entry options: For manually entering directives and optionally recording them --manual Go to manual mode. Presents user prompt so she can enter manually commands until she enters --endread. --manualafter {EVERY,MAKECLIP,OFF} Automatically go to manual entry mode after every (non-comment) line in directive file or after a --makeclip line. --record [choice [choice ...]] Record directives from manual entry or script to a file. Choices are (1) "OPEN recfile w|a": open recfile with either write to new file or append to existing file and turn on recording. (2) "ON or OFF": turn on (or off) recording. (3) "CLOSE": turn off recording and close the recording file Clip generation options: Many of these follow the --makeclip (to generate)and --ffplay (to play) a clip from an input video file , must appear on the same line and will only work for that same line --makeclip tstart tstop Specify start and end times in the current video file (specified by --moviefile)to write to a clip file. If tstart=b and/or tstop = e then start/stop is beginning/end of file. When the line containing this command has been read, ffmpeg is run and produces a disk file with name composed of the original video file name with a random 3 character string appended to it. Also a Clip() class instance is produced, containing information about the new clip file on disk. Other options that the user wishes to apply to the clip being generated must appear on this same line. --ffplay [tstart [tstop ...]] Similar to --makeclip but plays (file specified by --moviefile) to screen instead of making an output file. Useful for interactively deciding start/end/fade times. Same options (see below) as allowed for --makeclip. Or an existing clip KEY can be given as sole argument --fadein FADEIN Specifies whether a fadein for video and audio is to be applied. Default set to 30 frames. --fadeout FADEOUT Specifies whether a fadeout for video and audio is to be applied. Default set to 0.5 seconds. --nofades Fadeout for this clip and fadein for next clip set to zero to permit abrupt transition when concatenated later --mute volume of produced clip = 0 --transpose TRANSPOSE Rotate the output video. TRANSPOSE=1 (or 2) for 90 degrees clockwise (or anticlockwise). --padglobal PADGLOBAL To pad the output with extra pixels and make it square. Necessary if you mixed Portrait and Landscape oriented clips. e.g. to mix 640x480 pixels clips with 480x640 clips use "--padglobal 640:640" --speed SPEED Speed up or slow down the output by a factor SPEED --reverse Play the video clip backward. Audio is not reversed --concatenate [CONCATENATE [CONCATENATE ...]] Concatenate multiple clips to produce an output movie file. First arg (required) is output file name. Successive args are individual clip keys or a range of keys. If absent then all keys in Sequence are used --concatnstreams #v #a To manually set #video and audio streams ffmpeg concatenate command if desired Special Effects: Used instead of --makeclip to do fancier things when producing a clip from an input video file --backandforth tstart tstop ntimes Special effect clip: Specify start, end and n times to do clip backward and forward repetitive effect. --mute and --speed can be applied to this. --stutter tstart tstop ntimes Special effect clip: Specify start, end and n times to do a repetitive Max Headroom-like stutter effect. --mute works with this. --burst tstart tstop nframes|interval Special effect clip: Specify start, end and # frames (int) or interval (float) to do jumpy burst effect. --speed works with this. --slidetool [time_per_slide ncycles out_file infile1 infile2 ... [time_per_slide ncycles out_file infile1 infile2 ... ...]] Make a slideshow (movie) clip from existing stills. Just forward: ncycles=0.5, Forward,back:ncycles=1, Forward,back,forward:ncycles=1.5,... Pickle options: Arguments to read and write (with Pickle) files containing the Clips() and the Sequence(). Useful when you are doing multiple steps and want periodic saves while generating many clips. --readclips clipfile Read Clip() instances from file --writeclips clipfile Write all Clip() instances to file --readseq file Read Sequence() instance from file --writeseq file Write the Sequence() instance to file -p [choice [choice ...]], --print [choice [choice ...]] Output goes to a log file and to screen. Choices (1) "seq or sequence": metadata of the Sequence class. (2) "clips": metadata of all Clip() instances. (3) "clip1:clip2": print range clip1 to clip2 in the Sequence. (4) "clip1 clip2 clip3...": print clips listed. Sequence manipulation options: To add, remove or reorder the sequence of clips. --sc [SC], --selectclip [SC] Set value of variable SelectClip, to be used by the following operations that operate on or move Clips within the Sequence. e.g. --selectclip MFX would set SelectClip=MFX. If there were several instances of key MFX in the Sequence and the 2nd one was desired: --selectclip MFX_2 should be used. The clip specified must already exist, either in the Sequence or as a Clip. A range of clips "--sc AAA:AAB" can be specified. With no args prints current value --remove Remove SelectClip from the Sequence --iab, --insert_beginning Insert a copy of SelectClip at the beginning of the Sequence --iae, --insert_end Append a copy of SelectClip at the end of the Sequence --ib IB, --insert_before IB Insert a copy of SelectClip immediately before clip "IB" --ia IA, --insert_after IA Insert a copy of SelectClip immediately after clip "IA" --mb MB, --move_before MB Move SelectClip immediately before "MB" --ma MA, --move_after MA Move SelectClip immediately after "MA" --replicate NCopies Append NCopies copies of SelectClip to the position immediately following its current position. --swap SWAP Swap positions between SelectClip and the clip "SWAP".
In this 3 video files (movie1.mov, movie2.mov, movie3.mov) from a camera are put together to make a single movie. The script file
#--help --moviefile movie1.mov --desc Intro --makeclip b 10 --desc Panning around --makeclip 15 20 --moviefile movie2.mov --desc Jumping into pool --makeclip b e --moviefile movie3.mov --desc Farewell --makeclip 8 e --print seq --concatenate day_at_pool.mov --endread
Going through line-by-line,
Processing key VQP (Intro) Selected Clip() set to SelectClip: ['VQP'] Appended key ['VQP'] to sequence Processing key XEU (Panning around) Selected Clip() set to SelectClip: ['XEU'] Appended key ['XEU'] to sequence Processing key RAE (Jumping into pool) Selected Clip() set to SelectClip: ['RAE'] Appended key ['RAE'] to sequence Processing key UVD (Farewell) Selected Clip() set to SelectClip: ['UVD'] Appended key ['UVD'] to sequence Printing Sequence (#clips: 4) ----------------- Key Start(sec.) Description [VQP] 0.0 Intro [XEU] 10.0 Panning around [RAE] 15.0 Jumping into pool [UVD] 28.5 Farewell End: 42.5 ---- Read of directive file samplescript1.txt completed Command "Concatenation with ffmpeg": ['ffmpeg', '-i', '.\\movie1_VQP.mov', '-i', '.\\movie1_XEU.mov', '-i', '.\\movie2_RAE.mov', '-i', '.\\movie3_UVD.mov', '-filter_complex', 'concat=4:v=1:a=1', '.\\day_at_pool.mov'] (shell = False) Completed. Exiting
The same 3 video files are put together but more effects are used, and the clips made are re-ordered before concatenation. It shall be a 2 step process: first the clips are made, and then the re-ordering is done, after which concatenation to a final file is done. Also some other commands are used to show their usage. The script file for Step 1
#STEP 1 STARTS HERE --moviefile movie1.mov --desc Intro --makeclip b 4 --nofades --makeclip 7 10 --fadeout 2 --desc Fooling around with effects --makeclip 15 20 --speed 2 --makeclip 15 20 --speed 0.5 --mute --makeclip 15 20 --reverse --makeclip 15 20 --fadein 60 --fadeout 2 --moviefile movie2.mov --desc Jumping into pool --makeclip b e --moviefile movie3.mov --desc Farewell --makeclip 8 22 --fadeout 2.5 --print sequence --writeclips clips1.pkl --writeseq seq1.pkl --endread #STEP 2 STARTS HERE. MOVE THIS CODE TO THE TOP TO RUN IT --readclips clips1.pkl --readseq seq1.pkl --print seq --selectclip INU --repl 3 #make 3 copies of a clip --selectclip INU_3 --remove #remove the third one --sc OZP --iae #insert a copy of this to end #Now move a range of clips (RAX to RXV) to just before clip GVO --sc RAX:RXV --mb GVO #move all 4 "fooling around..." clips to just before "Farewell" -p seq #short form of print sequence --concatenate day_at_pool2.mov --endread
The output from Step 1 (I removed some):
Processing key UJL (Intro) Selected Clip() set to SelectClip: ['UJL'] Appended key ['UJL'] to sequence Processing key OZP (Intro(2)) Selected Clip() set to SelectClip: ['OZP'] Appended key ['OZP'] to sequence Processing key RAX (Fooling around with effects) Selected Clip() set to SelectClip: ['RAX'] Appended key ['RAX'] to sequence ... STUFF REMOVED HERE ... Processing key GVO (Farewell) Selected Clip() set to SelectClip: ['GVO'] Appended key ['GVO'] to sequence Printing Sequence (#clips: 8) ----------------- Key Start(sec.) Description [UJL] 0.0 Intro [OZP] 4.0 Intro(2) [RAX] 7.0 Fooling around with effects [OED] 9.5 Fooling around with effects(2) [RQI] 19.5 Fooling around with effects(3) [RXV] 25.5 Fooling around with effects(4) [INU] 30.5 Jumping into pool [GVO] 44.0 Farewell End: 58.0 ---- Wrote pickle output file .\clips1.pkl Wrote pickle output file .\seq1.pkl Read of directive file samplescript2.txt completed No output file specified. Assuming concatenation was not required, so will not be done. Completed. Exiting
The output was similar to that from the previous sample session. Note that
Now with a text editor move the second section of the
Reading clipfile .\clips1.pkl Read pickle input file .\clips1.pkl. Stored 8 clips. Discarded 0 clips Read pickle input file .\seq1.pkl for sequence of length 8 Printing Sequence (#clips: 8) ----------------- Key Start(sec.) Description [UJL] 0.0 Intro [OZP] 4.0 Intro(2) [RAX] 7.0 Fooling around with effects [OED] 9.5 Fooling around with effects(2) [RQI] 19.5 Fooling around with effects(3) [RXV] 25.5 Fooling around with effects(4) [INU] 30.5 Jumping into pool [GVO] 44.0 Farewell End: 58.0 ---- Selected Clip() set to SelectClip: ['INU'] Index in Sequence(): 6 Replicated keys ['INU'] 3 times Selected Clip() set to SelectClip: ['INU'] Index in Sequence(): 8 Removed keys ['INU'] from sequence Selected Clip() set to SelectClip: ['OZP'] Index in Sequence(): 1 Appended key ['OZP'] to sequence Selected Clip() set to SelectClip: ['RAX', 'OED', 'RQI', 'RXV'] Index in Sequence(): 2 Removed keys ['RAX', 'OED', 'RQI', 'RXV'] from sequence Sequence Moved key ['RAX', 'OED', 'RQI', 'RXV'] before key GVO Printing Sequence (#clips: 11) ----------------- Key Start(sec.) Description [UJL] 0.0 Intro [OZP] 4.0 Intro(2) [INU] 7.0 Jumping into pool [INU] 20.5 Jumping into pool [INU] 34.0 Jumping into pool [RAX] 47.5 Fooling around with effects [OED] 50.0 Fooling around with effects(2) [RQI] 60.0 Fooling around with effects(3) [RXV] 66.0 Fooling around with effects(4) [GVO] 71.0 Farewell [OZP] 85.0 Intro(2) End: 88.0 ---- Read of directive file samplescript2.txt completed Command "Concatenation with ffmpeg": ['ffmpeg', '-i', '.\\movie1_UJL.mov', '-i', '.\\movie1_OZP.mov', '-i', '.\\movie2_INU.mov', '-i', '.\\movie2_INU.mov', '-i', '.\\movie2_INU.mov', '-i', '.\\movie1_RAX.mov', '-i', '.\\movie1_OED.mov', '-i', '.\\movie1_RQI.mov', '-i', '.\\movie1_RXV.mov', '-i', '.\\movie3_GVO.mov', '-i', '.\\movie1_OZP.mov', '-filter_complex', 'concat=11:v=1:a=1', '.\\day_at_pool2.mov'] (shell = False) Completed. Exiting
This mode was previously (v.3) accessed with
The
For some video file types like .mp4, ffplay covers the whole screen and it is difficult to see other windows. The directive
If the location of the installed ffmpeg distribution has not been specified correctly, correct it by either setting the
But it is also good to be able to use ffmpeg/ffplay/ffprobe from the command line independently. To fix that, ensure that your $PATH variable points to the correct place, or at least do for the 3 ffmpeg executables what I suggested with clipstitch.bat in the installing for Windows section above.
Finally, on Linux sometimes
18th Apr 2020 Stuff I had to do to build ffmpeg. Problem was that ffplay executable was not getting built. 1) Downloaded ffmpeg-4.2.2 tar from ffmpeg site 2) The SDL library was missing from my computer. So yum install SDL2 and yum install SDL2-devel 3) USE_SDL=/usr/bin/sdl2-config and then export USE_SDL (not sure if necessary but did these) 4) ./configure --prefix=$HOME --enable-ffplay --pkg-config=pkg-config --disable-x86asm | tee configure4.out Not sure if I needed the --pkg-config. An earlier configure attempt told me to do the disable-x86asm 5) cd ffbuild/ 6) grep -i ffplay config.mak should see: FFMPEG_CONFIGURATION=--prefix=/home/tonse --enable-ffplay --pkg-config=pkg-config --disable-x86asm CFLAGS-ffplay=-D_REENTRANT -I/usr/include/SDL2 EXTRALIBS-ffplay=-lSDL2 CONFIG_FFPLAY=yes 7) cd.. then make | tee make4.out 8) make install Should put the new execs into your $HOME/bin directory. Also instead of doing a Build you can get (an older) version from Redhat's rpmfusion repository: 1) If you don;t already have rpmfusion set up as a repo, follow the instructions here https://www.2daygeek.com/install-enable-rpm-fusion-repository-on-centos-fedora-rhel/ to set up several new repos called something like rpmfusion-blahblah.repo 2) yum list ffmpeg 3) yum install ffmpeg should put the 3 ffpmeg, ffprobe and ffplay executables into /usr/bin
Save often when running a directives file. If you are working with a lot of input movie files there is nothing more frustrating than having a crash after processing most of them. Use the
Some advice on movie-making:
Sometimes you need to alter a video file directly with ffmpeg before giving it to Clipstitch. Usually because one or more of the video files are incompatible with the others due to different file format/resolution/size/frame rate. Perhaps you got some of the video files from a different device or from a friend, or you changed your cameras settings between video files. In this case use FFmpeg directly on the file. Below are some useful commands. Online FFmpeg documentation is also available, their Wiki's Miscellaneous section is especially good.
Zip/tar contents:
The pre-built Linux executable is also an option:
The MS Windows distribution consists of the the sole file:
Other files (created later, these all reside in the same folder as the distribution files):
Program Flow: The program reads instructions from a text file containing directives that are then parsed with argparse. With each line read:
The --makeclip directive uses the
The 3-letter name of the clip is also appended to the sole instance of class Sequence. This contains little more data than a list of the 3-letter keys, but Sequence() has many member functions to reorder, copy, replicate and remove the Clips in it. Clips in the Sequence instance are rearranged (as in Sample Session #2) using these member functions.
Reading of the directive file then continues.
During the final concatenation, which occurs with
Release | Date | Comment |
---|---|---|
3.5.2 | 28th Sept 2018 | #-----# |
3.5.3 | 18th Oct 2018 | Log file can be written to current working directory |
4.1 | 28th Mar 2020 | Converted code to Python 3.8.x from Python 2.7.x. |
5.3 | 15th Apr 2020 | Version_Number 5.1.2 onward: --ffmpeg_folder option to replace --ffmpeg_exe Replace optparse with argparse. Update help. Restructure main() so that --outputfile is not treated so anomalously, add functionality to -outputfile and rename it --concatenate and concatenate range of clips, not just all clips in Seq1. Incorporate the ffprobe code directly into the Clipstitch, credit Simon Hargreaves correctly. If --ffmpeg_folder in specified then ffmpeg/probe/play all 3 use the location to find the .exe files. Option -ffplay a file just as --makeclip would make a clip file. --lineditmode renamed --manual. New option --manualafter sets manual entry mode to be automatic after either every line, --makeclip lines or off. Add option --record to record interactively entered commands. -p --print clip ID to print a particular clip or range of clips --concatenate a list of clips or range of clips (latter must be in Seq1) --record more informative. --record with no args just list out current state of ComRec1 Made the subprocess shell issue robust: A static, ie shared class data called subprocess_shell_value in Commands() is given a value somewhere at an early init stage and if --ffmpeg_exec_folder is used. Test with subprocess shell mode True or False and set subprocess_shell_value to the one that works. Use ffprobe (called via func fileprobe in clipstitchclasses.py) to properly calculate fadeout in cases where final time is the end of the clip specified by "e". --sizeffplayscreen sets the x and y sizes of ffplay's screen. Because for type .mp4 video files it was using the whole screen and could not see the times on the console behind. subprocess calls modified, to not use capture_outout because pre Py 3.7 it was not allowed. In Set_shell_value use ffmpeg -version not ffplay because Linux problem compiling ffplay. Also fixed logic there. Now Set_shell_value only called when first --makeclip/--ffplay encountered, but before they take action. setexecfolder now checks for existence of excutables with and wo ".exe" because in Linux there is no .exe |
5.5 | 11th June 2020 | Version_Number 5.4. onward: Additional options to pass along to ffmpeg: 3 types: global, input and output. Set with --ffmpegoptions_g, --ff..._i and --ffm..._o respectively. e.g. in order to have better copying set: --ffmpegoptions_o -c:v libx264 -crf 18 -c:a copy. Note cannot use "copy" codec if using fade filters etc. These will be inserted into the ffmpeg (not for ffplay/ffprobe) command line for makeclip and for concatenate. --ffplayoptions_g is for ffplay. --selectclip,--sc, if no args, prints current value. --ffplay option to accept an existing Key as sole argument. --backandforth to do repetitive reverse then forward of a clip section --burst to do a burst effect of frames. --captions --captionproperties to allow -vf drawtext to be used to draw a caption on a movie clip when --makeclip used. --slidetool to make video from stills. |
5.6 | 4th January 2021 |
The SHA256SUM hashing algorithm is is a guard against malicious tampering of a file by an outsider. To verify that a file you downloaded has the same SHA256SUM as the table below. :
Release 3.5.2 | |
---|---|
SHA256SUM | Filename |
87ee632e4933803719399846eb4d33204ba9ab71dc1e9573ec1f068ec5f4968d | setup_Clipstitch_3.5.2.exe |
Release 5.3.7 | |
SHA256SUM | Filename |
4e0909b5dd7ffce87ad62dd2897639052cda7784bad2380ca102954dde97387e | Clipstitch_5.3.7.tar |
33a6815078e2c58c97a8be8683444353c4b216df33281d736dd58706dda28cab | ClipstitchSource_5.3.7.zip |
b7b5543eae86a7c2d0c6df8d281cd608f855a7c40ae18e149a9df4ec369c5e9f | clipstitch5.3.7.exe |
fe430722f325ca6d62a1ca2606d8bc4b32872981e4e584e5e79e5fb8483f8498 | clipstitch5.3.7_Linux.exe |
Release 5.5.8 | |
SHA256SUM | Filename |
3ed433d5816f2ae21c430d5ff68ed152338251863769ada4fd61168b5d5d2bd7 | Clipstitch_5.5.8.tar |
a3934e5b52900b36e4f93a0f17754cab2eeca1b5c7d14a12c871c19b0985b8ca | ClipstitchSource_5.5.8.zip |
d81621146a73a7acfa6e6fc5638810b84bfb66f10ea9d14166902a50c4c58ae7 | clipstitch5.5.8.exe |
25b5085ee440ee99132de7b70939cefb6648bffd228d5dcc256300db77a1429c | clipstitch5.5.8_Linux.exe |
Release 5.6.2 | |
SHA256SUM | Filename |
313061d3f9dcb43f5d89c34449a11eda909d763d955d20f528358193fba75f79 | Clipstitch_5.6.2.tar |
b52a3b69125c0b5fa72061c3cc1acf947ddb15620527bbe87028d57f406a3a92 | ClipstitchSource_5.6.2.zip |
d69a714bc143ac3b544e79ae028cdfb88b6e6557d5864318968c230441d6d5b7 | clipstitch5.6.2.exe |
d7ddf9ec03ac12236b90a763cbc58559c2602a257429d582dcf5d297fc219f26 | clipstitch5.6.2_Linux.exe |
Thank you very much to the following people for: