tomato is a python script and datamoshing kit for AVI files
- utilities inspired by Way Spurr-Chen's moshy.
- functionality based off of Tomasz Sulej's research on AVI file structure.
It was designed to operate video frame ordering, substraction and duplication.
ikill
- destroys all of the i-framesiswap
- retreats all of the i-frames one sequence earlier [under construction: whole mode not programmed]bloom
- duplicatesc
times p-frame numbern
pulse
- duplicates groups ofc
p-frames everyn
framesshuffle
- every p-frame gets ap
% chance to be shuffled [under construction: -p not available]overlapped
- copy group ofc
frames taken from everyn
th positionjiggle
- take frame from around current position.n
parameter is spread size
regardless of the option used the 1st iframe of the video will remain unaffected
python tomato.py -i input.avi -m ikill output.avi
Takes out all iframes except for the first one
python tomato.py -i input.avi -m bloom -c 50 -n 100 output.avi
Duplicate 50 times the 100th frame
python tomato.py -i input.avi -m pulse -c 5 -n 10 output.avi
Duplicates 5 times a frame every 10 frame
python tomato.py -i input.avi -m shuffle output.avi
Shuffles all of the frames in the video
python tomato.py -i input.avi -m overlapped -c 4 -n 2 output.avi
Copy 4 frames taken starting from every 2nd frame. [1 2 3 4 3 4 5 6 5 6 7 8 7 8...]
Most datamoshing utilities out there are pretty cool but restrain you into using specific codecs or just can't handle big files and/or large resolutions.
tomato is different in the sense that
- it can be used with any AVI file regardless of the codec/resolution
- it doesn't corrupt the video content, just the stream
- it's a lot faster than anything else
However there is still room for improvement
- it can't act on AVI files that do not have an index (which means I should add options to force an index creation, or divide a video if it is over >4GB)
Basically when you input an AVI file, it ignores the content and skips to the frame index to operate on it. Video players reading the resulting file through the index will interpret and glitch the video on the fly.
For practicles purposes sounds frames are all deleted
No dependencies are needed to run tomato but I recommend preparing your AVI files with ffmpeg and the codec library of your choice. To read your glitched files I recommend VLC or Xine if you're under Linux. Both are great for visualazing content (especially xine for the shuffle mode) but keep in mind you should always be experimenting and using different visualizers or tools to bake your files. If you have any questions or ideas feel free to send me an email at [email protected]