add readme
This commit is contained in:
parent
8e6d0e6672
commit
68e688a3bb
|
@ -0,0 +1,47 @@
|
||||||
|
# slitscan
|
||||||
|
slitscan is a script inspired by [this Mastodon
|
||||||
|
post](https://fed.qaz.red/@elithebearded/113070315634312301). It takes a video
|
||||||
|
file as input and allows you to "transpose" the frames of the video to view
|
||||||
|
along the height or width axes instead of the "time" axis you normally watch a
|
||||||
|
video along.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
Say you have a video file `foo.mkv`. To transpose along the height axis and save
|
||||||
|
to `bar.mkv`, run
|
||||||
|
```
|
||||||
|
python slitscan.py foo.mkv bar.mkv --height
|
||||||
|
```
|
||||||
|
|
||||||
|
Similarly, to transpose along the width axis, run
|
||||||
|
```
|
||||||
|
python slitscan.py foo.mkv bar.mkv --width
|
||||||
|
```
|
||||||
|
|
||||||
|
## Details
|
||||||
|
### Uh... what does this do?
|
||||||
|
Check the linked post for another explanation and examples.
|
||||||
|
|
||||||
|
To elaborate, you can think of a video as a 3D array of pixels. Say the axes of
|
||||||
|
the array are the frame, height, and width, in that order. Then the entry (24,
|
||||||
|
500, 900) gives you the pixel in the 499th row and 899th column of the 23rd
|
||||||
|
frame of the video (we're 0-indexed). You can imagine "watching" a video as
|
||||||
|
just iterating through the frame axis of that array and displaying each 2D
|
||||||
|
slice.
|
||||||
|
|
||||||
|
This program transposes that 3D array so you're instead iterating over the
|
||||||
|
height or width axis and displaying *those* 2D slices. For instance, if you
|
||||||
|
transpose along the height axis, then the first frame of the output video
|
||||||
|
consists of the top row of pixels of every single frame of the original video.
|
||||||
|
The second frame is then the second row of every single original frame, and so
|
||||||
|
on. Instead of viewing each original frame one by one, it's like you're viewing
|
||||||
|
them all at once, but only one horizontal line of pixels at a time.
|
||||||
|
|
||||||
|
### But why?
|
||||||
|
The author of that Mastodon post mentioned that he wrote a bash script to do
|
||||||
|
this that took a *a couple of days* to run for a short clip. I wanted to see if
|
||||||
|
I could make it faster (and I did - this runs on the order of a few *minutes*
|
||||||
|
for similarly short clips). It might be possible to make this script even
|
||||||
|
faster, but I couldn't figure out how without the script using too much memory.
|
||||||
|
|
||||||
|
### Is this even useful?
|
||||||
|
I would love to find out that it is!
|
Loading…
Reference in New Issue