This data compression service is used by Bandwidth Hero browser extension. It compresses given image to low-res WebP or JPEG image. Optionally it also converts image to greyscale to save even more data.
It downloads original image and transforms it with Sharp on the fly without saving images on disk.
This is NOT an anonymizing proxy — it downloads images on user's behalf, passing cookies and user's IP address through to the origin host.
MIN_COMPRESS_LENGTH=2048
Default=2048 (minimum byte length for an image to be compressible; default 2048 ~2kB)
DISABLE_ANIMATED=1
(Disable small apng passthrough and animated GIF to animated webp conversion (uses temp dir; Can also be "true")
VIDEO_QUALITY_MULTIPLIER
Default=10 (The Integer to multiply the 20-80 Quality value (l param) by to get the target video bitrate in kbps. For example, if multiplier is set to 10. Low(20) sets a target bitrate of 200kbps)
AUDIO_QUALITY_MULTIPLIER
Default=2 (The Integer to multiply the 20-80 Quality value (l param) by to get the target video bitrate in kbps. For example, if multiplier is set to 2. Low(20) sets a target bitrate of 40kbps)
MEDIA_TIMEOUT
Default=7200 (Set the timeout in seconds for outputted Audio and Video streams)
VIDEO_HEIGHT_THRES
Default=360 (Set the maximum video height threshold in Pixels. 480 becomes 480p, etc)
VIDEO_WEBM_CPU_USED
Default=7 (sets -cpu-used flag in the libvpx-vp9 video encoder. Current valid values at time of writing are (-8 thru 8) Read more about this here)
You can deploy this service to Heroku:
Data compression service is a Node.js app which you can run on any server that supports Node.js. Check out this guide on how to setup Node.js on Ubuntu.
DigitalOcean also provides an easy way to setup a server ready to host Node.js apps.