All Projects → viler-int10h → FFmpeg-CRT-transform

viler-int10h / FFmpeg-CRT-transform

Licence: other
CRT simulation without shaders... the slow way

Programming Languages

Batchfile
5799 projects

Projects that are alternatives of or similar to FFmpeg-CRT-transform

ShaderGlass
Overlay for running GPU shaders on top of Windows desktop
Stars: ✭ 417 (+193.66%)
Mutual labels:  retro, crt
shellcore
Shellcore Command Remastered
Stars: ✭ 41 (-71.13%)
Mutual labels:  retro
romans
A Simple PHP Roman Numerals Library
Stars: ✭ 40 (-71.83%)
Mutual labels:  filter
photo-magician
🎨 provide some common image process apis with canvas
Stars: ✭ 12 (-91.55%)
Mutual labels:  filter
a80
Intel 8080/Zilog Z80 assembler written in D.
Stars: ✭ 23 (-83.8%)
Mutual labels:  retro
lut
color lookup tables (LUTs) for color grading
Stars: ✭ 84 (-40.85%)
Mutual labels:  filter
morphmorph
😱 Isomorphic transformations. Map, transform, filter, and morph your objects
Stars: ✭ 26 (-81.69%)
Mutual labels:  filter
paq8pxd
No description or website provided.
Stars: ✭ 55 (-61.27%)
Mutual labels:  filter
laravel-grid
A grid view for laravel, inspired by the yii2 grid widget
Stars: ✭ 86 (-39.44%)
Mutual labels:  filter
elastic-composer
Client-side Elasticsearch query generator and executor. Filter fields, find search suggestions, and paginate query results for your indicies using a simple, reactive, and high-level API
Stars: ✭ 14 (-90.14%)
Mutual labels:  filter
GG-LootFilter
Loot filter for Path of Exile
Stars: ✭ 40 (-71.83%)
Mutual labels:  filter
nucular-keyboard
USB Keyboard Adapter for old ThinkPad keyboards
Stars: ✭ 27 (-80.99%)
Mutual labels:  retro
imu ekf
6-axis(3-axis acceleration sensor+3-axis gyro sensor) IMU fusion with Extended Kalman Filter.
Stars: ✭ 56 (-60.56%)
Mutual labels:  filter
php-simple-request
php-simple-request is a request parser library designed to simplify requests validation and filtering using annotations, generating at the same time an object representation from the request data.
Stars: ✭ 15 (-89.44%)
Mutual labels:  filter
go-streams
Stream Collections for Go. Inspired in Java 8 Streams and .NET Linq
Stars: ✭ 127 (-10.56%)
Mutual labels:  filter
equalizer
SoundCloud music player with equalizer
Stars: ✭ 25 (-82.39%)
Mutual labels:  filter
loadkit
Java 资源加载器,充分拓展ClassLoader#getResources(name)的能力,实现递归加载,支持普通风格 / 包名风格 / ANT风格 / 正则风格路径的资源加载同时支持自定义过滤器,通常作为框架的基础类库。
Stars: ✭ 39 (-72.54%)
Mutual labels:  filter
ImageDownloader
A program for downloading and filtering images based on their resolution.
Stars: ✭ 60 (-57.75%)
Mutual labels:  filter
FilterTreeView
WPF/MVVM Search and Filter Reference Application
Stars: ✭ 56 (-60.56%)
Mutual labels:  filter
NanoSpace
Erela.js & Discord.js@v14 (Prefix Commands!)
Stars: ✭ 59 (-58.45%)
Mutual labels:  filter

FFmpeg CRT Transform

Windows batch script for a configurable simulation of CRT monitors (and some older flat-panel displays too), given an input image/video.
Requires a git-master build of FFmpeg from 2021-01-27 or newer, due to a couple of bugfixes and new features.
See https://github.com/viler-int10h/FFmpeg-CRT-transform/ for the latest version.

Usage and Configuration

Syntax: ffcrt <config_file> <input_file> [output_file]

  • input_file must be a valid image or video. Assumed to be 24-bit RGB (8 bits/channel).

  • If output_file is omitted, the output will be named "(input_file)_(config_file).(input_ext)".

  • How to configure: all settings/parameters are commented in the sample configuration files, which you can find in the "presets" subdir.
    NOTE: the included presets aren't guaranteed to accurately simulate any particular monitor model, but they may give you a good starting point!

Tips

  • Input is expected to have the same resolution (=storage aspect ratio, SAR) of the video mode you are simulating, including overscan if any.

  • The aspect ratio of the simulated screen (=display aspect ratio, DAR) is not set directly, but depends on the SAR and on the pixel aspect ratio (PAR): DAR=SAR×PAR. The PAR is set with the PX_ASPECT parameter.

  • The aspect ratio of your final output is set separately with the OASPECT parameter. If it's different from the above, the simulated screen will be scaled and padded as necessary while maintaining its aspect ratio, so you can have e.g. a 4:3 screen centered in a 16:9 video.

  • Processing speed and quality is determined by the PRESCALE_BY setting. This also affects FFmpeg's RAM consumption, so if you get memory allocation errors try a lower factor.

  • Most of the processing chain uses a color depth of 8 bits/component by default. Setting 16BPC_PROCESSING to yes will make all the intermediate steps use 16 instead. That makes the process twice as slow and RAM-hungry, but if your settings are giving you prominent banding artifacts and such, try going 16-bit.

  • By default the output colorspace is 24-bit RGB (8 bits/component), but you can change that by setting OFORMAT to 1: for videos, this will output YUV 4:4:4 at 10 bits/component. For images, you'll get 48-bit RGB (16 bits/component), which works with .png or .tif for instance.
    (Of course, to get the most out of this, you'll want 16bpc processing as mentioned above)

  • In general, speed is the weakest link in this whole thing, so you may want to test your config file on a still .png image (or on a few seconds of video) first, tweak things to your liking, and tackle longer videos only after you've finalized your settings.

Write-ups, videos, sample images

  1. Color CRTs: https://int10h.org/blog/2021/01/simulating-crt-monitors-ffmpeg-pt-1-color/

  2. Monochrome CRTs: https://int10h.org/blog/2021/02/simulating-crt-monitors-ffmpeg-pt-2-monochrome/

  3. Flat-Panel Displays: https://int10h.org/blog/2021/03/simulating-non-crt-monitors-ffmpeg-flat-panels/

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].