2022-04-03 23:58:18 +00:00
|
|
|
## Server configuration
|
|
|
|
[server]
|
2021-10-28 04:06:03 +00:00
|
|
|
## Optional: pict-rs binding address
|
2022-04-07 02:40:49 +00:00
|
|
|
# environment variable: PICTRS__SERVER__ADDRESS
|
2021-10-28 04:06:03 +00:00
|
|
|
# default: 0.0.0.0:8080
|
2022-04-03 23:58:18 +00:00
|
|
|
address = '0.0.0.0:8080'
|
2021-10-28 04:06:03 +00:00
|
|
|
|
2022-04-03 23:58:18 +00:00
|
|
|
## Optional: pict-rs worker id
|
2022-04-07 02:40:49 +00:00
|
|
|
# environment variable PICTRS__SERVER__WORKER_ID
|
2022-04-03 23:58:18 +00:00
|
|
|
# default: pict-rs-1
|
2021-10-28 04:06:03 +00:00
|
|
|
#
|
2022-04-03 23:58:18 +00:00
|
|
|
# This is used for the internal job queue. It will have more meaning once a shared metadata
|
|
|
|
# repository (like postgres) can be defined.
|
|
|
|
worker_id = 'pict-rs-1'
|
2021-10-28 04:06:03 +00:00
|
|
|
|
2022-04-03 23:58:18 +00:00
|
|
|
## Optional: shared secret for internal endpoints
|
2022-04-07 02:40:49 +00:00
|
|
|
# environment variable: PICTRS__SERVER__API_KEY
|
2021-10-28 04:06:03 +00:00
|
|
|
# default: empty
|
|
|
|
#
|
2022-04-03 23:58:18 +00:00
|
|
|
# Not specifying api_key disables internal endpoints
|
|
|
|
api_key = 'API_KEY'
|
2021-10-28 04:06:03 +00:00
|
|
|
|
2023-07-17 18:44:31 +00:00
|
|
|
## Client configuration
|
|
|
|
[client]
|
2023-06-23 16:20:20 +00:00
|
|
|
## Optional: connection pool size for internal http client
|
2023-07-17 18:44:31 +00:00
|
|
|
# environment variable: PICTRS__CLIENT__POOL_SIZE
|
2023-06-23 16:20:20 +00:00
|
|
|
# default: 100
|
|
|
|
#
|
|
|
|
# This number is multiplied the number of cores available to pict-rs. Running on a 2 core machine
|
|
|
|
# with the default value will result in 200 pooled connections. Running on a 32 core machine with
|
|
|
|
# the default value will result in 3200 pooled connections.
|
|
|
|
#
|
|
|
|
# This number can be lowered to keep pict-rs within ulimit bounds if you encounter errors related to
|
|
|
|
# "Too many open files". Alternatively, increasing the ulimit of your system can solve this problem
|
|
|
|
# as well.
|
2023-07-17 18:44:31 +00:00
|
|
|
pool_size = 100
|
|
|
|
|
|
|
|
## Optional: time (in seconds) the client will wait for a response before giving up
|
|
|
|
# environment variable: PICTRS__CLIENT__TIMEOUT
|
|
|
|
# default: 30
|
|
|
|
#
|
|
|
|
# This is used for the `/image/download` endpoint when fetching media from another server. It is
|
|
|
|
# distinct from the object storage client timeout, which can be configured separately
|
|
|
|
timeout = 30
|
2023-06-23 16:20:20 +00:00
|
|
|
|
2021-10-28 04:06:03 +00:00
|
|
|
|
2022-04-03 23:58:18 +00:00
|
|
|
## Logging configuration
|
|
|
|
[tracing.logging]
|
|
|
|
## Optional: log format
|
2022-04-07 02:40:49 +00:00
|
|
|
# environment variable: PICTRS__TRACING__LOGGING__FORMAT
|
2022-04-03 23:58:18 +00:00
|
|
|
# default: normal
|
|
|
|
#
|
|
|
|
# available options: compact, json, normal, pretty
|
|
|
|
format = 'normal'
|
2021-10-28 05:17:37 +00:00
|
|
|
|
2022-04-03 23:58:18 +00:00
|
|
|
## Optional: log targets
|
2022-04-07 02:40:49 +00:00
|
|
|
# environment variable: PICTRS__TRACING__LOGGING__TARGETS
|
2022-04-03 23:58:18 +00:00
|
|
|
# default: warn,tracing_actix_web=info,actix_server=info,actix_web=info
|
2022-03-22 20:06:13 +00:00
|
|
|
#
|
2022-04-03 23:58:18 +00:00
|
|
|
# Dictates which traces should print to stdout
|
|
|
|
# Follows the same format as RUST_LOG
|
|
|
|
targets = 'warn,tracing_actix_web=info,actix_server=info,actix_web=info'
|
|
|
|
|
|
|
|
|
|
|
|
## Console configuration
|
|
|
|
[tracing.console]
|
|
|
|
## Optional: console address
|
2022-04-07 02:40:49 +00:00
|
|
|
# environment variable: PICTRS__TRACING__CONSOLE__ADDRESS
|
2022-04-03 23:58:18 +00:00
|
|
|
# default: empty
|
2022-03-22 20:06:13 +00:00
|
|
|
#
|
2022-04-11 20:17:54 +00:00
|
|
|
# Dictates whether console should be enabled, and what address it should be exposed on.
|
|
|
|
#
|
2022-04-03 23:58:18 +00:00
|
|
|
# When set, tokio-console can connect to the pict-rs service
|
2022-03-22 20:06:13 +00:00
|
|
|
#
|
|
|
|
# Configure your container to expose the console port
|
|
|
|
# ```
|
|
|
|
# # docker-compose.yml
|
|
|
|
# version: '3.3'
|
|
|
|
#
|
|
|
|
# services:
|
|
|
|
# pictrs:
|
2023-07-09 20:16:04 +00:00
|
|
|
# image: asonix/pictrs:0.4.1
|
2022-03-22 20:06:13 +00:00
|
|
|
# ports:
|
|
|
|
# - "127.0.0.1:8080:8080"
|
|
|
|
# - "127.0.0.1:6669:6669" # this is the line that exposes console
|
|
|
|
# restart: always
|
|
|
|
# volumes:
|
|
|
|
# - ./volumes/pictrs:/mnt
|
|
|
|
# ```
|
|
|
|
#
|
|
|
|
# Connect from console
|
|
|
|
# ```
|
2022-04-11 20:39:11 +00:00
|
|
|
# $ tokio-console http://localhost:6669
|
2022-03-22 20:06:13 +00:00
|
|
|
# ```
|
2022-04-03 23:58:18 +00:00
|
|
|
address = '0.0.0.0:6669'
|
2022-03-22 20:06:13 +00:00
|
|
|
|
2022-04-03 23:58:18 +00:00
|
|
|
## Optional: console buffer capacity
|
2022-04-07 02:40:49 +00:00
|
|
|
# environment variable: PICTRS__TRACING__CONSOLE__BUFFER_CAPACITY
|
2022-04-03 23:58:18 +00:00
|
|
|
# default: 102400
|
2021-10-28 05:17:37 +00:00
|
|
|
#
|
2022-04-03 23:58:18 +00:00
|
|
|
# This is the number of _events_ to buffer, not the number of bytes. In reality, the amount of
|
|
|
|
# RAM used will be significatnly larger (in bytes) than the buffer capacity (in events)
|
|
|
|
buffer_capacity = 102400
|
|
|
|
|
2021-10-28 04:06:03 +00:00
|
|
|
|
2022-04-03 23:58:18 +00:00
|
|
|
## OpenTelemetry configuration
|
|
|
|
[tracing.opentelemetry]
|
2021-10-28 04:06:03 +00:00
|
|
|
## Optional: url for exporting otlp traces
|
2022-04-07 02:40:49 +00:00
|
|
|
# environment variable: PICTRS__TRACING__OPENTELEMETRY__URL
|
2021-10-28 04:06:03 +00:00
|
|
|
# default: empty
|
|
|
|
#
|
2021-10-28 05:17:37 +00:00
|
|
|
# Not specifying opentelemetry_url means no traces will be exported
|
2022-04-03 23:58:18 +00:00
|
|
|
# When set, pict-rs will export OpenTelemetry traces to the provided URL. If the URL is
|
|
|
|
# inaccessible, this can cause performance degredation in pict-rs, so it is best left unset unless
|
|
|
|
# you have an OpenTelemetry collector
|
|
|
|
url = 'http://localhost:4317/'
|
|
|
|
|
|
|
|
## Optional: name to relate OpenTelemetry traces
|
2022-04-07 02:40:49 +00:00
|
|
|
# environment variable: PICTRS__TRACING__OPENTELEMETRY__SERVICE_NAME
|
2022-04-03 23:58:18 +00:00
|
|
|
# default: pict-rs
|
|
|
|
service_name = 'pict-rs'
|
|
|
|
|
|
|
|
## Optional: trace level to export
|
2022-04-07 02:40:49 +00:00
|
|
|
# environment variable: PICTRS__TRACING__OPENTELEMETRY__TARGETS
|
2022-04-03 23:58:18 +00:00
|
|
|
# default: info
|
|
|
|
#
|
|
|
|
# Follows the same format as RUST_LOG
|
|
|
|
targets = 'info'
|
|
|
|
|
|
|
|
|
|
|
|
## Configuration for migrating from pict-rs 0.2
|
|
|
|
[old_db]
|
|
|
|
## Optional: path to old pict-rs directory
|
2022-04-07 02:40:49 +00:00
|
|
|
# environment variable: PICTRS__OLD_DB__PATH
|
2022-04-03 23:58:18 +00:00
|
|
|
# default: /mnt
|
|
|
|
path = '/mnt'
|
|
|
|
|
2021-10-28 04:06:03 +00:00
|
|
|
|
2022-04-03 23:58:18 +00:00
|
|
|
## Media Processing Configuration
|
|
|
|
[media]
|
2023-07-13 22:42:21 +00:00
|
|
|
## Optional: max file size (in Megabytes)
|
|
|
|
# environment variable: PICTRS__MEDIA__MAX_FILE_SIZE
|
|
|
|
# default: 40
|
|
|
|
max_file_size = 40
|
|
|
|
|
2022-09-25 20:17:33 +00:00
|
|
|
## Optional: preprocessing steps for uploaded images
|
|
|
|
# environment variable: PICTRS__MEDIA__PREPROCESS_STEPS
|
|
|
|
# default: empty
|
|
|
|
#
|
|
|
|
# This configuration is the same format as the process endpoint's query arguments
|
|
|
|
preprocess_steps = 'crop=16x9&resize=1200&blur=0.2'
|
|
|
|
|
2023-07-13 22:42:21 +00:00
|
|
|
## Optional: set allowed filters for image processing
|
|
|
|
# environment variable: PICTRS__MEDIA__FILTERS
|
|
|
|
# default: ['blur', 'crop', 'identity', 'resize', 'thumbnail']
|
|
|
|
filters = ['blur', 'crop', 'identity', 'resize', 'thumbnail']
|
|
|
|
|
|
|
|
|
|
|
|
[media.image]
|
2022-04-03 23:58:18 +00:00
|
|
|
## Optional: max media width (in pixels)
|
2023-07-13 22:42:21 +00:00
|
|
|
# environment variable: PICTRS__MEDIA__IMAGE__MAX_WIDTH
|
2022-04-03 23:58:18 +00:00
|
|
|
# default: 10,000
|
|
|
|
max_width = 10000
|
|
|
|
|
|
|
|
## Optional: max media height (in pixels)
|
2023-07-13 22:42:21 +00:00
|
|
|
# environment variable: PICTRS__MEDIA__IMAGE__MAX_HEIGHT
|
2022-04-03 23:58:18 +00:00
|
|
|
# default: 10,000
|
|
|
|
max_height = 10000
|
2021-10-28 05:17:37 +00:00
|
|
|
|
2022-04-03 23:58:18 +00:00
|
|
|
## Optional: max media area (in pixels)
|
2023-07-13 22:42:21 +00:00
|
|
|
# environment variable: PICTRS__MEDIA__IMAGE__MAX_AREA
|
2022-04-03 23:58:18 +00:00
|
|
|
# default: 40,000,000
|
|
|
|
max_area = 40000000
|
2022-03-27 01:45:12 +00:00
|
|
|
|
2022-04-03 23:58:18 +00:00
|
|
|
## Optional: max file size (in Megabytes)
|
2023-07-13 22:42:21 +00:00
|
|
|
# environment variable: PICTRS__MEDIA__IMAGE__MAX_FILE_SIZE
|
2022-04-03 23:58:18 +00:00
|
|
|
# default: 40
|
|
|
|
max_file_size = 40
|
2022-03-27 01:45:12 +00:00
|
|
|
|
2023-07-13 22:42:21 +00:00
|
|
|
## Optional: set file type for all images
|
|
|
|
# environment variable: PICTRS__MEDIA__IMAGE__FORMAT
|
|
|
|
# default: empty
|
|
|
|
#
|
|
|
|
# available options: avif, png, jpeg, jxl, webp
|
|
|
|
# When set, all uploaded still images will be converted to this file type. For balancing quality vs
|
|
|
|
# file size vs browser support, 'avif', 'jxl', and 'webp' should be considered. By default, images
|
|
|
|
# are stored in their original file type.
|
|
|
|
format = "webp"
|
2022-09-25 23:16:37 +00:00
|
|
|
|
2023-07-13 22:42:21 +00:00
|
|
|
|
2023-07-17 22:45:26 +00:00
|
|
|
[media.image.quality]
|
|
|
|
## Optional: set quality for AVIF images
|
|
|
|
# environment variable : PICTRS__MEDIA__IMAGE__QUALITY__AVIF
|
|
|
|
# default: empty
|
|
|
|
#
|
|
|
|
# availabe range: 0-100
|
|
|
|
# 100 means best quality and 0 means worst quality. Playing with numbers between 40 and 100 makes
|
|
|
|
# the most sense.
|
|
|
|
avif = 100
|
|
|
|
|
|
|
|
## Optional: set compression for PNG images
|
|
|
|
# environment variable : PICTRS__MEDIA__IMAGE__QUALITY__PNG
|
|
|
|
# default: empty
|
|
|
|
#
|
|
|
|
# availabe range: 0-100
|
|
|
|
# 100 means best compression and 0 means worst compression. Since PNG is a lossless format, changing
|
|
|
|
# this value will not change how the images look.
|
|
|
|
png = 100
|
|
|
|
|
|
|
|
## Optional: set quality for JPEG images
|
|
|
|
# environment variable : PICTRS__MEDIA__IMAGE__QUALITY__JPEG
|
|
|
|
# default: empty
|
|
|
|
#
|
|
|
|
# availabe range: 0-100
|
|
|
|
# 100 means best quality and 0 means worst quality. Playing with numbers between 60 and 100 makes
|
|
|
|
# the most sense.
|
|
|
|
jpeg = 100
|
|
|
|
|
|
|
|
## Optional: set quality for JXL images
|
|
|
|
# environment variable : PICTRS__MEDIA__IMAGE__QUALITY__JXL
|
|
|
|
# default: empty
|
|
|
|
#
|
|
|
|
# availabe range: 0-100
|
|
|
|
# 100 means best quality and 0 means worst quality. Playing with numbers between 40 and 100 makes
|
|
|
|
# the most sense.
|
|
|
|
jxl = 100
|
|
|
|
|
|
|
|
## Optional: set quality for WEBP images
|
|
|
|
# environment variable : PICTRS__MEDIA__IMAGE__QUALITY__WEBP
|
|
|
|
# default: empty
|
|
|
|
#
|
|
|
|
# availabe range: 0-100
|
|
|
|
# 100 means best quality and 0 means worst quality. Playing with numbers between 50 and 100 makes
|
|
|
|
# the most sense.
|
|
|
|
webp = 100
|
|
|
|
|
|
|
|
|
2023-07-13 22:42:21 +00:00
|
|
|
[media.animation]
|
|
|
|
## Optional: max animation width (in pixels)
|
|
|
|
# environment variable: PICTRS__MEDIA__ANIMATION__MAX_WIDTH
|
|
|
|
# default: 256
|
2021-10-28 05:17:37 +00:00
|
|
|
#
|
2023-07-13 22:42:21 +00:00
|
|
|
# If an animation exceeds this value, it may be converted to a silent video
|
|
|
|
max_width = 256
|
2022-03-27 01:45:12 +00:00
|
|
|
|
2023-07-13 22:42:21 +00:00
|
|
|
## Optional: max animation height (in pixels)
|
|
|
|
# environment variable: PICTRS__MEDIA__ANIMATION__MAX_HEIGHT
|
|
|
|
# default: 256
|
|
|
|
#
|
|
|
|
# If an animation exceeds this value, it may be converted to a silent video
|
|
|
|
max_height = 256
|
2022-09-25 23:16:37 +00:00
|
|
|
|
2023-07-13 22:42:21 +00:00
|
|
|
## Optional: max animation area (in pixels)
|
|
|
|
# environment variable: PICTRS__MEDIA__ANIMATION__MAX_AREA
|
|
|
|
# default: 65,526
|
2022-10-01 00:38:11 +00:00
|
|
|
#
|
2023-07-13 22:42:21 +00:00
|
|
|
# If an animation exceeds this value, it may be converted to a silent video
|
|
|
|
max_area = 65536
|
2022-10-01 00:38:11 +00:00
|
|
|
|
2023-07-13 22:42:21 +00:00
|
|
|
## Optional: max animation size (in Megabytes)
|
|
|
|
# environment variable: PICTRS__MEDIA__ANIMATION__MAX_FILE_SIZE
|
|
|
|
# default: 40
|
2022-10-01 00:38:11 +00:00
|
|
|
#
|
2023-07-13 22:42:21 +00:00
|
|
|
# If an animation exceeds this value, it may be converted to a silent video
|
|
|
|
max_file_size = 40
|
2022-10-01 00:38:11 +00:00
|
|
|
|
2023-07-13 22:42:21 +00:00
|
|
|
## Optional: max frame count
|
|
|
|
# environment variable: PICTRS__MEDIA__ANIMATION__MAX_FRAME_COUNT
|
|
|
|
# default: 100
|
|
|
|
#
|
|
|
|
# If an animation exceeds this value, it may be converted to a silent video
|
|
|
|
max_frame_count = 100
|
2022-03-27 01:45:12 +00:00
|
|
|
|
2023-07-13 22:42:21 +00:00
|
|
|
## Optional: set file type for all animations
|
|
|
|
# environment variable: PICTRS__MEDIA__ANIMATION__FORMAT
|
2023-06-19 18:33:27 +00:00
|
|
|
# default: empty
|
|
|
|
#
|
2023-07-13 22:42:21 +00:00
|
|
|
# available options: apng, avif, gif, webp
|
2023-06-21 22:05:35 +00:00
|
|
|
# When set, all uploaded still images will be converted to this file type. For balancing quality vs
|
|
|
|
# file size vs browser support, 'avif', 'jxl', and 'webp' should be considered. By default, images
|
|
|
|
# are stored in their original file type.
|
2023-06-19 18:33:27 +00:00
|
|
|
format = "webp"
|
|
|
|
|
2023-07-13 22:42:21 +00:00
|
|
|
|
2023-07-17 22:45:26 +00:00
|
|
|
[media.animation.quality]
|
|
|
|
## Optional: set compression for APNG animations
|
|
|
|
# environment variable : PICTRS__MEDIA__ANIMATION__QUALITY__APNG
|
|
|
|
# default: empty
|
|
|
|
#
|
|
|
|
# availabe range: 0-100
|
|
|
|
# 100 means best compression and 0 means worst compression. Since APNG is a lossless format,
|
|
|
|
# changing this value will not change how the animations look.
|
|
|
|
apng = 100
|
|
|
|
|
|
|
|
## Optional: set quality for AVIF animations
|
|
|
|
# environment variable : PICTRS__MEDIA__ANIMATION__QUALITY__AVIF
|
|
|
|
# default: empty
|
|
|
|
#
|
|
|
|
# availabe range: 0-100
|
|
|
|
# 100 means best quality and 0 means worst quality. Playing with numbers between 40 and 100 makes
|
|
|
|
# the most sense.
|
|
|
|
avif = 100
|
|
|
|
|
|
|
|
## Optional: set quality for WEBP animations
|
|
|
|
# environment variable : PICTRS__MEDIA__ANIMATION__QUALITY__WEBP
|
|
|
|
# default: empty
|
|
|
|
#
|
|
|
|
# availabe range: 0-100
|
|
|
|
# 100 means best quality and 0 means worst quality. Playing with numbers between 50 and 100 makes
|
|
|
|
# the most sense.
|
|
|
|
webp = 100
|
|
|
|
|
|
|
|
|
2023-07-13 22:42:21 +00:00
|
|
|
[media.video]
|
|
|
|
## Optional: enable MP4 and WEBM uploads (without sound)
|
|
|
|
# environment variable: PICTRS__MEDIA__VIDEO__ENABLE
|
|
|
|
# default: true
|
|
|
|
#
|
|
|
|
# Set this to false to serve static images only
|
|
|
|
enable = true
|
|
|
|
|
|
|
|
## Optional: enable Sound for MP4 and WEBM uploads
|
|
|
|
# environment variable: PICTRS__MEDIA__VIDEO__ALLOW_AUDIO
|
2022-04-03 23:58:18 +00:00
|
|
|
# default: false
|
|
|
|
#
|
2023-07-13 22:42:21 +00:00
|
|
|
# this setting does nothing if video is not enabled
|
|
|
|
allow_audio = false
|
|
|
|
|
|
|
|
## Optional: max video width (in pixels)
|
|
|
|
# environment variable: PICTRS__MEDIA__VIDEO__MAX_WIDTH
|
|
|
|
# default: 3,840
|
|
|
|
#
|
|
|
|
# this setting does nothing if video is not enabled
|
|
|
|
max_width = 3840
|
|
|
|
|
|
|
|
## Optional: max video height (in pixels)
|
|
|
|
# environment variable: PICTRS__MEDIA__VIDEO__MAX_HEIGHT
|
|
|
|
# default: 3,840
|
|
|
|
#
|
|
|
|
# this setting does nothing if video is not enabled
|
|
|
|
max_height = 3840
|
2022-04-03 23:58:18 +00:00
|
|
|
|
2023-07-13 22:42:21 +00:00
|
|
|
## Optional: max video area (in pixels)
|
|
|
|
# environment variable: PICTRS__MEDIA__VIDEO__MAX_AREA
|
|
|
|
# default: 8,294,400
|
2023-02-04 23:32:36 +00:00
|
|
|
#
|
2023-07-13 22:42:21 +00:00
|
|
|
# this setting does nothing if video is not enabled
|
|
|
|
max_area = 8294400
|
|
|
|
|
|
|
|
## Optional: max video size (in Megabytes)
|
|
|
|
# environment variable: PICTRS__MEDIA__VIDEO__MAX_FILE_SIZE
|
|
|
|
# default: 40
|
2023-02-04 23:32:36 +00:00
|
|
|
#
|
2023-07-13 22:42:21 +00:00
|
|
|
# this setting does nothing if video is not enabled
|
|
|
|
max_file_size = 40
|
2023-02-04 23:32:36 +00:00
|
|
|
|
2023-07-13 22:42:21 +00:00
|
|
|
## Optional: max frame count
|
|
|
|
# environment variable: PICTRS__MEDIA__VIDEO__MAX_FRAME_COUNT
|
|
|
|
# default: 900
|
2023-02-04 23:32:36 +00:00
|
|
|
#
|
2023-07-13 22:42:21 +00:00
|
|
|
# this setting does nothing if video is not enabled
|
|
|
|
max_frame_count = 900
|
2023-02-04 23:32:36 +00:00
|
|
|
|
2023-07-13 22:42:21 +00:00
|
|
|
## Optional: set the default video codec
|
|
|
|
# environment variable: PICTRS__MEDIA__VIDEO__VIDEO_CODEC
|
|
|
|
# default: vp9
|
2023-02-04 23:32:36 +00:00
|
|
|
#
|
2023-07-13 22:42:21 +00:00
|
|
|
# available options: av1, h264, h265, vp8, vp9
|
|
|
|
# this setting does nothing if video is not enabled
|
|
|
|
video_codec = "vp9"
|
2023-02-04 23:32:36 +00:00
|
|
|
|
2023-07-13 22:42:21 +00:00
|
|
|
## Optional: set the default audio codec
|
|
|
|
# environment variable: PICTRS__MEDIA__VIDEO__AUDIO_CODEC
|
|
|
|
# default: empty
|
2023-02-04 23:52:23 +00:00
|
|
|
#
|
2023-07-13 22:42:21 +00:00
|
|
|
# available options: aac, opus, vorbis
|
|
|
|
# The audio codec is automatically selected based on video codec, but can be overriden to `vorbis`
|
|
|
|
# for webm uploads
|
|
|
|
# automatic mappings:
|
|
|
|
# - av1, vp8, and vp9 map to opus
|
|
|
|
# - h264 and h265 map to aac
|
|
|
|
# - vorbis is not default for any codec
|
|
|
|
# this setting does nothing if full video is not enabled
|
|
|
|
audio_codec = "opus"
|
2023-02-04 23:52:23 +00:00
|
|
|
|
2022-04-03 23:58:18 +00:00
|
|
|
|
2023-07-17 22:45:26 +00:00
|
|
|
[media.video.quality]
|
|
|
|
## Optional: set maximum quality for all videos
|
|
|
|
# environment variable: PICTRS__MEDIA__VIDEO__QUALITY__CRF_MAX
|
|
|
|
# default: 32
|
|
|
|
#
|
|
|
|
# This value means different things for different video codecs:
|
|
|
|
# - it ranges from 0 to 63 for AV1
|
|
|
|
# - it ranges from 4 to 63 for VP8
|
|
|
|
# - it ranges from 0 to 63 for VP9
|
|
|
|
# - it ranges from 0 to 51 for H265
|
|
|
|
# - it ranges from 0 to 51 for 8bit H264
|
|
|
|
# - it ranges from 0 to 63 for 10bit H264
|
|
|
|
#
|
|
|
|
# A lower value (closer to 0) is higher quality, while a higher value (closer to 63) is lower
|
|
|
|
# quality. Generally acceptable ranges are 15-38, where lower values are preferred for larger
|
|
|
|
# videos
|
|
|
|
#
|
|
|
|
# This value may be overridden for some videos depending on whether other crf configurations are set
|
|
|
|
# For example, if crf_max is set to 32 and crf_720 is set to 34, then all videos smaller than or
|
|
|
|
# equal to 720p video will be encoded with a `crf` of 34, while all videos larger than 720p will be
|
|
|
|
# encoded with a `crf` of 32
|
|
|
|
#
|
|
|
|
# The example values here are taken from a google document about reasonable CRF values for VP9
|
|
|
|
# video. More information about `crf` can be found on ffmpeg's wiki
|
|
|
|
#
|
|
|
|
# - AV1: https://trac.ffmpeg.org/wiki/Encode/AV1#ConstantQuality
|
|
|
|
# - H264: https://trac.ffmpeg.org/wiki/Encode/H.264#crf
|
|
|
|
# - H265: https://trac.ffmpeg.org/wiki/Encode/H.265#ConstantRateFactorCRF
|
|
|
|
# - VP8: https://trac.ffmpeg.org/wiki/Encode/H.265#ConstantRateFactorCRF
|
|
|
|
# - VP9: https://trac.ffmpeg.org/wiki/Encode/VP9#constantq
|
|
|
|
crf_max = 12
|
|
|
|
|
|
|
|
## Optional: set quality for videos up to 240p
|
|
|
|
# environment variable: PICTRS__MEDIA__VIDEO__QUALITY__CRF_240
|
|
|
|
# default: empty
|
|
|
|
#
|
|
|
|
# This value overrides `crf_max` for videos with a smaller dimension of at most 240px (240p)
|
|
|
|
crf_240 = 37
|
|
|
|
|
|
|
|
## Optional: set quality for videos up to 360p
|
|
|
|
# environment variable: PICTRS__MEDIA__VIDEO__QUALITY__CRF_360
|
|
|
|
# default: empty
|
|
|
|
#
|
|
|
|
# This value overrides `crf_max` for videos with a smaller dimension of at most 360px (260p)
|
|
|
|
crf_360 = 36
|
|
|
|
|
|
|
|
## Optional: set quality for videos up to 480p
|
|
|
|
# environment variable: PICTRS__MEDIA__VIDEO__QUALITY__CRF_480
|
|
|
|
# default: empty
|
|
|
|
#
|
|
|
|
# This value overrides `crf_max` for videos with a smaller dimension of at most 480px (480p)
|
|
|
|
crf_480 = 33
|
|
|
|
|
|
|
|
## Optional: set quality for videos up to 720p
|
|
|
|
# environment variable: PICTRS__MEDIA__VIDEO__QUALITY__CRF_720
|
|
|
|
# default: empty
|
|
|
|
#
|
|
|
|
# This value overrides `crf_max` for videos with a smaller dimension of at most 720px (720p)
|
|
|
|
crf_720 = 32
|
|
|
|
|
|
|
|
## Optional: set quality for videos up to 1080p
|
|
|
|
# environment variable: PICTRS__MEDIA__VIDEO__QUALITY__CRF_1080
|
|
|
|
# default: empty
|
|
|
|
#
|
|
|
|
# This value overrides `crf_max` for videos with a smaller dimension of at most 1080px (1080p)
|
|
|
|
crf_1080 = 31
|
|
|
|
|
|
|
|
## Optional: set quality for videos up to 1440p
|
|
|
|
# environment variable: PICTRS__MEDIA__VIDEO__QUALITY__CRF_1440
|
|
|
|
# default: empty
|
|
|
|
#
|
|
|
|
# This value overrides `crf_max` for videos with a smaller dimension of at most 1440px (1440p)
|
|
|
|
crf_1440 = 24
|
|
|
|
|
|
|
|
## Optional: set quality for videos up to 4K
|
|
|
|
# environment variable: PICTRS__MEDIA__VIDEO__QUALITY__CRF_2160
|
|
|
|
# default: empty
|
|
|
|
#
|
|
|
|
# This value overrides `crf_max` for videos with a smaller dimension of at most 2160px (4K)
|
|
|
|
crf_2160 = 15
|
|
|
|
|
|
|
|
|
2022-04-03 23:58:18 +00:00
|
|
|
## Database configuration
|
|
|
|
[repo]
|
|
|
|
## Optional: database backend to use
|
2022-04-07 02:40:49 +00:00
|
|
|
# environment variable: PICTRS__REPO__TYPE
|
2022-04-03 23:58:18 +00:00
|
|
|
# default: sled
|
|
|
|
#
|
|
|
|
# available options: sled
|
|
|
|
type = 'sled'
|
|
|
|
|
|
|
|
## Optional: path to sled repository
|
2022-04-07 02:40:49 +00:00
|
|
|
# environment variable: PICTRS__REPO__PATH
|
2022-04-03 23:58:18 +00:00
|
|
|
# default: /mnt/sled-repo
|
|
|
|
path = '/mnt/sled-repo'
|
2022-03-27 01:45:12 +00:00
|
|
|
|
2022-04-03 23:58:18 +00:00
|
|
|
## Optional: in-memory cache capacity for sled data (in bytes)
|
2022-04-07 02:40:49 +00:00
|
|
|
# environment variable: PICTRS__REPO__CACHE_CAPACITY
|
2022-04-03 23:58:18 +00:00
|
|
|
# default: 67,108,864 (1024 * 1024 * 64, or 64MB)
|
|
|
|
cache_capacity = 67108864
|
2022-03-27 01:45:12 +00:00
|
|
|
|
2023-07-08 22:35:57 +00:00
|
|
|
## Optional: path for storing database exports
|
|
|
|
# environment variable: PICTRS__REPO__EXPORT_PATH
|
|
|
|
# default: /mnt/exports
|
|
|
|
#
|
|
|
|
# Used in combination with the /internal/export endpoint to dump the current sled database into a
|
|
|
|
# new file. This can be helpful for backing up a running pict-rs server.
|
|
|
|
export_path = "/mnt/exports"
|
|
|
|
|
2022-03-27 01:45:12 +00:00
|
|
|
|
2022-04-03 23:58:18 +00:00
|
|
|
## Media storage configuration
|
|
|
|
[store]
|
|
|
|
## Optional: type of media storage to use
|
2022-04-07 02:40:49 +00:00
|
|
|
# environment variable: PICTRS__STORE__TYPE
|
2022-04-03 23:58:18 +00:00
|
|
|
# default: filesystem
|
2021-10-28 05:17:37 +00:00
|
|
|
#
|
2022-04-03 23:58:18 +00:00
|
|
|
# available options: filesystem, object_storage
|
|
|
|
type = 'object_storage'
|
2022-03-27 01:45:12 +00:00
|
|
|
|
2022-09-25 20:17:33 +00:00
|
|
|
## Required: endpoint at which the object storage exists
|
|
|
|
# environment variable: PICTRS__STORE__ENDPOINT
|
|
|
|
# default: empty
|
|
|
|
#
|
|
|
|
# examples:
|
|
|
|
# - `http://localhost:9000` # minio
|
|
|
|
# - `https://s3.dualstack.eu-west-1.amazonaws.com` # s3
|
|
|
|
endpoint = 'http://minio:9000'
|
|
|
|
|
|
|
|
## Optional: How to format object storage requests
|
|
|
|
# environment variable: PICTRS__STORE__USE_PATH_STYLE
|
|
|
|
# default: false
|
|
|
|
#
|
|
|
|
# When this is true, objects will be fetched from http{s}://{endpoint}:{port}/{bucket_name}/{object}
|
|
|
|
# When false, objects will be fetched from http{s}://{bucket_name}.{endpoint}:{port}/{object}
|
|
|
|
#
|
|
|
|
# Set to true when using minio
|
|
|
|
use_path_style = false
|
|
|
|
|
2022-04-03 23:58:18 +00:00
|
|
|
## Required: object storage bucket name
|
2022-04-07 02:40:49 +00:00
|
|
|
# environment variable: PICTRS__STORE__BUCKET_NAME
|
2022-03-27 01:45:12 +00:00
|
|
|
# default: empty
|
2022-09-25 20:17:33 +00:00
|
|
|
bucket_name = 'pict-rs'
|
2022-03-27 01:45:12 +00:00
|
|
|
|
2022-04-03 23:58:18 +00:00
|
|
|
## Required: object storage region
|
2022-04-07 02:40:49 +00:00
|
|
|
# environment variable: PICTRS__STORE__REGION
|
2022-03-27 01:45:12 +00:00
|
|
|
# default: empty
|
2022-09-25 20:17:33 +00:00
|
|
|
#
|
|
|
|
# When using minio, this can be set to `minio`
|
|
|
|
region = 'minio'
|
2022-03-27 01:45:12 +00:00
|
|
|
|
2022-04-03 23:58:18 +00:00
|
|
|
## Required: object storage access key
|
2022-04-07 02:40:49 +00:00
|
|
|
# environment variable: PICTRS__STORE__ACCESS_KEY
|
2022-03-27 01:45:12 +00:00
|
|
|
# default: empty
|
2022-04-03 23:58:18 +00:00
|
|
|
access_key = 'ACCESS_KEY'
|
2022-03-27 01:45:12 +00:00
|
|
|
|
2022-04-03 23:58:18 +00:00
|
|
|
## Required: object storage secret key
|
2022-04-07 02:40:49 +00:00
|
|
|
# environment variable: PICTRS__STORE__SECRET_KEY
|
2022-03-27 01:45:12 +00:00
|
|
|
# default: empty
|
2022-04-03 23:58:18 +00:00
|
|
|
secret_key = 'SECRET_KEY'
|
|
|
|
|
|
|
|
## Optional: object storage session token
|
2022-04-07 02:40:49 +00:00
|
|
|
# environment variable: PICTRS__STORE__SESSION_TOKEN
|
2022-04-03 23:58:18 +00:00
|
|
|
# default: empty
|
|
|
|
session_token = 'SESSION_TOKEN'
|
|
|
|
|
2023-07-11 18:12:31 +00:00
|
|
|
## Optional: set how long object storage signatures are valid for (in seconds)
|
|
|
|
# environment variable: PICTRS__STORE__SIGNATURE_EXPIRATION
|
|
|
|
# default: 15
|
|
|
|
#
|
|
|
|
# This can be useful if your object storage might take a while to process requests. It should not be
|
|
|
|
# increased more than needed to prevent replay attacks.
|
|
|
|
signature_expiration = 15
|
|
|
|
|
|
|
|
## Optional: set how long pict-rs will wait (in seconds) for a response from object storage
|
|
|
|
# environment variable: PICTRS__STORE__CLIENT_TIMEOUT
|
|
|
|
# default: 30
|
|
|
|
#
|
|
|
|
# This value is the total wait time, and not additional wait time on top of the
|
|
|
|
# signature_expiration.
|
|
|
|
client_timeout = 30
|
|
|
|
|
2022-04-03 23:58:18 +00:00
|
|
|
## Filesystem media storage example
|
|
|
|
# ## Media storage configuration
|
|
|
|
# [store]
|
|
|
|
# ## Optional: type of media storage to use
|
2022-04-07 02:40:49 +00:00
|
|
|
# # environment variable: PICTRS__STORE__TYPE
|
2022-04-03 23:58:18 +00:00
|
|
|
# # default: filesystem
|
|
|
|
# #
|
|
|
|
# # available options: filesystem, object_storage
|
|
|
|
# type = 'filesystem'
|
|
|
|
#
|
|
|
|
# ## Optional: path to uploaded media
|
2022-04-07 02:40:49 +00:00
|
|
|
# # environment variable: PICTRS__STORE__PATH
|
2022-04-03 23:58:18 +00:00
|
|
|
# # default: /mnt/files
|
|
|
|
# path = '/mnt/files'
|