ISG Advanced Options (And Edge Transcoder)
The iconik Storage Gateway has a number of advanced options that you can tune by editing the configuration file config.ini
.
Most of these options also apply to the iconik Edge Transcoder, except the ones related to scanning
- Back up
config.ini
before you make these changes. - Configuration options are key value pairs such as
proxy-resolution=1920x1080
- Configuration options should be on individual lines.
- Restart the ISG after making the changes
config.ini location
OS | Location |
---|---|
Linux | /etc/iconik/iconik_storage_gateway/config.ini |
Windows | C:\Program Files\Cantemo\Iconik Storage Gateway\config.ini |
MacOS | /Library/Application Support/Cantemo/IconikStorageGateway/config.ini |
Please make sure if you are editing on Windows the line endings are of a Unix type
Setting Proxy Format Specification
It's possible to change the proxy format that the ISG will generate for video media. Please note that setting the bitrate too high or low can have a negative impact on the perceived performance of the Web Interface.
Proxy resolution
By setting the key proxy-resolution
you can define the max-dimensions of the video proxy created.
- Minimum value: 640x360
- Default value: 1280x720
- Maximum value: 1920x1080
For example:
proxy-resolution=1920x1080
Proxy bitrate
By setting the key proxy-bitrate
you can define the max bitrate of the proxy created. Please be aware that setting this higher can cause large file sizes for your proxy.
- Minimum value: 200000
- Default value: 3000000
- Maximum value: 99000000
For example:
proxy-bitrate=4000000
Image proxy resolution
By setting the key image-proxy-resolution
you can define the max-dimensions of the image proxy created.
- Minimum value: 180x180
- Default value: 2048x2048
- Maximum value: 16000x16000
For example:
image-proxy-resolution=2048x2048
For ISG proxy resolution can be also set on the image transcoding profile.
Disable HDR to SDR conversion for keyframes
ISG and Iconik Edge Transcoder will try to use HDR to SDR conversion options for keyframes with ffmpeg.
You can disable this behaviour by setting the key enable-hdr-to-sdr-keyframe-conversion
to false
enable-hdr-to-sdr-keyframe-conversion = false
Controlling file transfers and transcodes
Number of parallel uploads and downloads
By setting the key file-upload-parallel-uploads-num
you can control how many simultaneous uploads the ISG will do. The default is 4
By setting the key file-upload-parallel-uploads-threads-num
you can control how many parallel chunks for each upload is used. The default is 5
By setting the key upload-chunk-size
you can control the size of parallel chunks for each upload in bytes. The default is 104857600
(100 Mb)
file-upload-parallel-uploads-num = 4
file-upload-parallel-uploads-threads-num = 5
upload-chunk-size = 104857600
By setting the key file-download-parallel-downloads-num
you can control how many simultaneous downloads the ISG will do. The default is 4
By setting the key file-download-parallel-downloads-threads-num
you can control how many parallel chunks for each download is used. The default is 5
By setting the key download-chunk-size
you can control the size of parallel chunks for each download in bytes. The default is 104857600
(100 Mb)
file-download-parallel-downloads-num = 4
file-download-parallel-downloads-threads-num = 5
download-chunk-size = 104857600
Number of parallel transcodes
By setting the key max-transcoding-jobs
you can control the number of simultaneous local transcode jobs for each attached transcoder.
max-transcoding-jobs = 5
This should be roughly the number of processing cores of your machine divided by 4. So if you 8 cores in your processor, the number should be 2.
A set of config properties was added to control the number of simultaneous local transcode jobs per transcoder type. Default value is set from max-transcoding-jobs
.
imagemagick-max-transcoding-jobs = 5
ffmpeg-max-transcoding-jobs = 5
vantage-max-transcoding-jobs = 5
redline-max-transcoding-jobs = 5
watch-folder-max-transcoding-jobs = 5
editready-max-transcoding-jobs = 5
Metadata extraction is responsible for determining file's media type and what transcoder must process it.
mediainfo-max-extraction-jobs = 5
If there's a large amount of fast transcode jobs, like small images or short video clips, it might be beneficial to increase the number of jobs for mediainfo extraction.
Increasing number of parallel jobs will also increase CPU and I/O load.
Enabling debug
Debug is enabled by setting the option debug
to true
debug = true
Mediainfo timeouts
If you get timeouts reading media info you can increase that, the default is 60s
extract-mediainfo-timeout = 180
- Minimum value: 1
- Default value: 60
- Maximum value: 3600
Extracting metadata
In addition to mediainfo, the ISG and Edge Transcoder applications will attempt to read additional metadata (XMP, EXIF, IPTC). They use the same timeout as for mediainfo. You can disable metadata extraction with
additional-metadata-extraction = false
You can control how much data is read from a file when the Edge Transcoder extracts metadata by setting the key extract-metadata-chunk-size
to a number of bytes.
For example
extract-metadata-chunk-size = 10485760
- Minimum value: 1048576
- Default value: 8388608
- Maximum value: 104857600
The default value is 8388608
(8 Mb).
Control the number of checksum workers
Checksumming is both CPU and I/O intense. You can control the number of parallel workers doing checksumming. The default is 5 or the number of CPUs on your server, whichever is lower
checksum-max-workers = 10
You can also enable and disable it (but it is required for "Consider identical files the same")
enable-checksum-calculation = true
Enable checksum calculation based on modification time
The ISG will consider a file changed if its size changed, updating its checksum if checksum calculation is enabled. If your content changes without changing file size you can trigger checksum calculation by enabling modification time comparison.
checksum-on-modification-time-change = true
Disable the UUID-suffix on uploaded files
By default the ISG will add a UUID to the end of the file name when uploading to a cloud storage to make sure it does not conflict with any existing files. This can be disabled if you know that only this ISG will write to that cloud storage.
auto-generate-filename-for-remote-upload = false
Overriding format detection
Some times you might have files that gets identified as the wrong type. You can override this by file extension by providing a list:
image-extensions-override=.cr3,.raf,.psd,.tiff
video-extensions-override=.mp4,.mxf
audio-extensions-override=.wav,.m4a
This means that regardless of what mediainfo returns they will be sent to the transcoder that handles the type of format you have specified.
Some formats require to flatten layers, this list can be modified.
imagemagick-layer-extensions=.ai,.tif,.tiff,.png,.psd,.pdf,.psb,.gif,.eps
For Edge transcoder some formats also require downloads, since they can't be read over https.
image-extensions-requiring-download=.rw2,.arw,.dng,.pdf,.raf,.cr3,.cr2,.heic
Overriding proxy and keyframe storage
You can override the proxy and keyframe storage used for an ISG by putting the follwing in the config.ini file:
proxy-storage-id=<storage_id>
keyframe-storage-id=<storage_id>
ImageMagick Custom Path
If you have installed ImageMagick outside of the system path it can be useful to specify a path to imageMagick configuration files:
image-magick-config = /custom/path
This path should be where policy.xml, delegates.xml etc. is located
Use embedded JPGs for RAW formats
Many RAW formats contain an embedded image that ISG will extract and use to create a proxy. Extracting the embedded image requires exiftool to be installed and is enabled by default. You can disable this behaviour by setting
use-embedded-raw-images = false
You can configure which file extensions the ISG considers RAW formats by this setting (default in the example)
raw-image-extensions = .rw2,.arw,.dng,.cr2,.cr3,.raf,.nef,.3fr,.x3f,.nrw
Apply custom RGB conversion profiles (ICC)
If you have for example TIFF files in CMYK that requires a specific ICC to convert to RGB, you can specify that. You
can specify any number of icc files in order separated by semicolon.
Note that the value is a comma separated list of extension=path1;path2
apply-image-convert-profile=.tif=/profiles/original1.icc;/profiles/export1.icc,.tiff=/profiles/original1.icc;/profiles/export1.icc
WAL mode
WAL can improve performance on large ISG installation. It is controlled by this setting.
sqlite-journal-mode = wal
To turn it off set
sqlite-journal-mode = delete
Video encoder
You can change the default h.264 encoder. For example on Apple silicon you can try this for better performance. Note that this also requires you to set the resolution and bitrate on the attached transcoder to get decent quality
video-encoder=h264_videotoolbox
To control video quality you can select the control rate mode, which is encoder-dependant. See the ffmpeg documentation. You can choose between: -q:v, -crf
video-quality-flag=-q:v
video-quality-flag-value=50
Video encoder for edit proxies
You can set custom video encoder for edit proxies
edit-proxy-video-encoder=libx264
To control video quality you can select the control rate mode, which is encoder-dependant. See the ffmpeg documentation. You can choose between: -q:v, -crf
edit-proxy-video-quality-flag=-crf
edit-proxy-video-quality-flag-value=20
Audio encoder for edit proxies
Default is AAC (aac
) but for some formats it might be better to use PCM (pcm_s24le
)
edit-proxy-audio-encoder=pcm_s24le
Caching proxy for Edge Transcoder
Edge Transcoder can make use of a local caching proxy to improve performance.
use-file-cache-proxy = true
Start caching proxy instructions for Amazon Linux 2 and Ubuntu.
White balance adjustment for Raw formats
You can try to add this if you have ImageMagick7 with libraw. Note that it ONLY works on IM7 compiled with libraw. This options tries to use the camera settings for White Balance
imagemagick-white-balance-extensions=.cr3,.nef
Force symlink use for all Watch Folder transcoders on ISG
If a watch folder transcode software supports working with symlinks enabling this will provide a benefit of a symlink.
force-soft-link-on-all-watch-folder-transcoders = true
By default, a hard link is used that fallbacks to copy a whole file to the watch folder if it's on another file system.
Additional Options when using LucidLink Filespaces on the ISG host
The LucidLink remote upload indicator API can be used to detect when a file is ready for ingest. In order to use it with ISG your LucidLink instance must meet the following requirements:
- LucidLink Client version 2.1.4246 or above required.
- LucidLink 2.0 Filespace or above required
To enable remote upload indicator API support in ISG set
enable-lucidlink-upload-api=true
When using multiple Filespaces the ISG needs to know the instance ids in use. Starting with build #5127 of the LucidLink Client the ids can be automatically detected, but you can also specify them as a comma-separated list.
lucidlink-instances=0,1,2
The ISG will try to detect what mount points are in use for each LucidLink instance.
You can also hard-code the filespace mount points the ISG uses with the remote upload indicator API.
The order of the list of mount points must match the lucidlink-instances
list if using multiple filespaces.
lucidlink-mount-points=/Volumes/fs1,/Volumes/fs2,/Volumes/fs3
Custom edit proxy suffix
You can specify a suffix that will be on the filename of already generated proxy files which are stored next to the original file that will be pattern matched and stored as an Edit Proxy by iconik.
custom-proxy-suffixes=_customeditproxy
You can change the suffix that is added to the edit proxy created by local transcoders.
- Default value: _editproxy
edit-proxy-suffix=_editproxy
Update asset title when a file is renamed
You can control if an asset title should be updated if ISG discovered a renamed file.
- Default value: true
update-title-on-filename-change = true
Resume from the last scan position on application restart
You can set if scanner should resume from the last scan folders on application restart. Set to false
to disable.
- Default value: true
resume-scan-on-restart = true
Troubleshooting performance
You can control max amount of parallel ingests for new files.
ingest-concurrency-value = 2
- Minimum value: 1
- Default value: 2
- Maximum value: 8
You can control max amount of parallel directory scans.
scanner-concurrency-value = 2
- Minimum value: 1
- Default value: 2
- Maximum value: 16
Increasing these values might provide a higher ingest and scan speed, but the speed can be limited by the available host resources, including network and storage performance.
You can enable verbose performance logging.
debug-performance = true
When an ISG detects a file is missing it will update the file status and remove it from collections. You can specify a minimum time required before missing file handling is executed.
missing-files-time-threshold = 60
- Minimum value: 0
- Default value: 60
You can change the size of missing files queue to affect response time of files being marked missing.
missing-files-queue-size = 500
- Minimum value: 100
- Default value: 500
- Maximum value: 1000000
You can set timeout in seconds for a single scan folder system call.
scan-folder-timeout = 600
- Minimum value: 30
- Default value: 600
- Maximum value: 3600