index.md - sites - public wiki contents of suckless.org
 (HTM) git clone git://git.suckless.org/sites
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       index.md (7196B)
       ---
            1 ![blind](blind.svg)
            2 
            3 blind is a collection of command line video editing utilities.
            4 
            5 Video format
            6 ------------
            7 blind uses a raw video format with a simple container. A file begins with an
            8 plain-text line, containing the number of frames, the width, the height, and
            9 the pixel format, all separated by a single regular blank space, without and
           10 leading or tailing white space. After this line, which ends with an LF, there
           11 is a NUL-byte followed by the 4 characters “uivf” (unportable, interim
           12 video format). This head is followed by the video frame-by-frame with row-major
           13 frames. Pixels are independently encoded, and are encoded unscaled CIE XYZ with
           14 non-premultiplied alpha and without any transfer-function, with values stored
           15 in native `double`s or optionally in native `float`s. These two configurations
           16 are the only options, but the container format is designed so this can be
           17 changed arbitrarily in the future.
           18 
           19 FAQ
           20 ---
           21 
           22 ### Creating videos without graphics, are you insane?
           23 
           24 Yes, but see the rationale below!
           25 
           26 ### Doesn't raw video takes up a lot of space?
           27 
           28 Yes it does, a 4-channel pixel encoded with `double` takes 32 bytes. A
           29 1280-by-720 frame with this pixel format takes 29.4912 MB (SI), which means you
           30 can only fit almost 3391 frames in 100 GB, which is about 113 seconds or 1:53
           31 minutes with a framerate of 30 fps. Therefore, you probably do not want to
           32 store anything in this format unless you know you have room for it, or if it is
           33 very small segment of your video, which unfortunately becomes a bit of a problem
           34 when reversing a video. However, when possible, feed the resulting video
           35 directly to `blind-to-video` to convert it into a compressed, lossless video
           36 format, if the video is not too large, you can choose to compress it with bzip2
           37 instead.
           38 
           39 ### For what kind of video editing is blind designed?
           40 
           41 It is designed for composing new videos. It is not designed for making small
           42 changes as this can probably be done faster with a graphical video editor or
           43 with ffmpeg which would also be much faster.
           44 
           45 ### Does it support farbfeld?
           46 
           47 Of course. If you want to use farbfeld, you can use the `-f` flag for
           48 `blind-to-image` and `blind-from-image`, this will cause the programs to
           49 convert directly to or from farbfeld without using `convert(1)`.
           50 
           51 ### Why doesn't blind uses encode pixels like farbfeld?
           52 
           53 blind and farbfeld solve completely different problems. farbfeld solves to
           54 problem of storing pictures in a simply way that can easily be viewed and
           55 edited. blind does not try to solve the problem of storing videos, video
           56 takes a lot of space and need compression designed especially for video or
           57 three-dimensional raster images. Compressed video cannot be efficiently edited
           58 because compression takes too long. Instead blind solves the problem of
           59 efficiently processing video: thousands of pictures. Because blind doesn't try
           60 to create a format for storing images, therefore it's format doesn't need to be
           61 portable. Furthermore, due to legacy in television (namely, that of
           62 black-and-white television), video formats do not store values in sRGB, but
           63 rather in Y'UV, so there is next to no benefit to storing colours in sRGB.
           64 
           65 ### Why doesn't blind use sRGB?
           66 
           67 If I tell you I use CIE XYZ, you will only have two questions: “how are
           68 values stored?” and “is Y scaled to [0, 100] or [0, 1]?” When I tell you
           69 I use sRGB you have more questions: “do you support out-of-gamut colours?”,
           70 “how are values stored?”, “which scale do you use?”, and “is the
           71 transfer-function applied?”
           72 
           73 CIE XYZ also has the advantage of having the brightness encoded in one of its
           74 parameters, Y, and obtaining the chroma requires only simply conversion to a
           75 non-standardise colour model that with the same Y-value.
           76 
           77 ### Why does blind use CIE XYZ instead of CIE L\*a\*b\*?
           78 
           79 Because CIE L\*a\*b\* is not linear, meaning that it requires unnecessary
           80 calculations when working with the colours.
           81 
           82 ### Why does blind use CIE XYZ instead of Y'UV or YUV?
           83 
           84 Y'UV has good performance for converting to sRGB and is has good subsampling
           85 quality, but it is not a good for editing. Y'UV is non-linear, so it has the
           86 same disadvantages as CIE L\*a\*b\*. Y'UV does not have its transfer-function
           87 applied directly to it's parameters, instead it is a linear transformation if
           88 the sRGB with its transfer-function applied. This means that no performance is
           89 gained during conversion to or from cooked video formats by using YUV. CIE XYZ
           90 also has the advantage that it is well-known and has a one-step conversion to
           91 almost all colour models. It also have the advantages that it's parameters are
           92 named X, Y, Z, which makes it very easy to choose parameter when storing points
           93 instead of colours in a video.
           94 
           95 ### Doesn't blind have any audio support?
           96 
           97 No, it is not clear that there is actually a need for this. There are good
           98 tools for editing audio, and ffmpeg can be used to extract the audio
           99 streams from a video or add it to a video.
          100 
          101 ### Is it really feasible to edit video without a GUI?
          102 
          103 Depends on what you are doing. Many things can be done without a GUI, and
          104 some thing are easier to do without one. If you find that you need GUI it
          105 possible to combine blind with a graphical editor. Furthermore, blind could be
          106 used in by a graphical editor if one were to write a graphical editor to use
          107 blind.
          108 
          109 Rationale
          110 ---------
          111 * It's source control friendly and it's easy for a user to resolve merge
          112   conflicts and identify changes.
          113 * Rendering can take a very long time. With this approach, the user can use
          114   Make to only rerender parts that have been changed.
          115 * It's possible to distribute the rendering to multiple computers, without any
          116   built in functionality for this, for example using a distributed Make.
          117 * Parallelism is added for free.
          118 * No room for buggy GUIs, which currently is a problem with the large video
          119   editors for Linux.
          120 * Less chance that the user makes a change by mistake without noticing it, such
          121   as moving a clip in the editor by mistake instead of for example resizing.
          122 * Even old, crappy computers can be used for large projects.
          123 * Very easy to utilise command line image editors for modify frames, or to add
          124   your own tools for custom effects.
          125 
          126 Development
          127 -----------
          128 You can browse its [source code repository](//git.suckless.org/blind) or get a
          129 copy using git with the following command:
          130 
          131         git clone https://git.suckless.org/blind
          132 
          133 Download
          134 --------
          135 * [blind-1.0](//dl.suckless.org/tools/blind-1.0.tar.gz) (2017-01-22)
          136 * [blind-1.1](//dl.suckless.org/tools/blind-1.1.tar.gz) (2017-05-06)
          137 
          138 Also make sure to check your package manager.  The following distributions
          139 provide packages:
          140 
          141 * [Alpine Linux](https://pkgs.alpinelinux.org/package/edge/testing/x86_64/blind)
          142 * [Arch Linux (AUR)](https://aur.archlinux.org/packages/blind/)
          143 * [Arch Linux (AUR), git version](https://aur.archlinux.org/packages/blind-git/)
          144 
          145 Dependencies
          146 ------------
          147 * [ffmpeg](https://www.ffmpeg.org/) - for converting from or to other video
          148   formats.
          149 * [imagemagick](https://www.imagemagick.org/) - for converting regular images
          150   to frames.
          151 
          152 Links
          153 -----
          154 * [Video tutorials](https://www.youtube.com/channel/UCg_nJOURt3guLtp4dQLIvQw)
          155 
          156 
          157 Author
          158 ------
          159 * Mattias Andrée (maandree@kth.se)