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