1
0
mirror of https://github.com/spl0k/supysonic.git synced 2024-09-19 19:01:03 +00:00

Add default_transcode_target option

This commit is contained in:
mvn23 2019-10-18 13:49:46 +02:00
parent 2e320cc312
commit f0525dc23a
2 changed files with 9 additions and 1 deletions

View File

@ -28,6 +28,7 @@ All these are defined by the following variables:
* `trancoder` * `trancoder`
* `decoder` * `decoder`
* `encoder` * `encoder`
* `default_transcode_target`
where `EXT` is the lowercase file extension of the matching audio format. where `EXT` is the lowercase file extension of the matching audio format.
`transcoder`s variables have two extensions: the first one is the source `transcoder`s variables have two extensions: the first one is the source
@ -61,6 +62,9 @@ One final note: the original file should be provided as an argument of
transcoders and decoders. All transcoders, decoders and encoders should write transcoders and decoders. All transcoders, decoders and encoders should write
to standard output, and encoders should read from standard input. to standard output, and encoders should read from standard input.
The value of `default_transcode_target` will be used as output format when a
client requests a bitrate lower than the original file and no specific format.
## Suggested configuration ## Suggested configuration
Here are some example configuration that you could use. This is provided as-is, Here are some example configuration that you could use. This is provided as-is,
@ -75,5 +79,6 @@ decoder_ogg = oggdec -o %srcpath
decoder_flac = flac -d -c -s %srcpath decoder_flac = flac -d -c -s %srcpath
encoder_mp3 = lame --quiet -b %outrate - - encoder_mp3 = lame --quiet -b %outrate - -
encoder_ogg = oggenc2 -q -M %outrate - encoder_ogg = oggenc2 -q -M %outrate -
default_transcode_target = mp3
``` ```

View File

@ -83,6 +83,8 @@ def stream_media():
dst_bitrate = res.bitrate dst_bitrate = res.bitrate
dst_mimetype = res.mimetype dst_mimetype = res.mimetype
config = current_app.config["TRANSCODING"]
prefs = request.client prefs = request.client
if prefs.format: if prefs.format:
dst_suffix = prefs.format dst_suffix = prefs.format
@ -94,6 +96,8 @@ def stream_media():
if dst_bitrate > maxBitRate and maxBitRate != 0: if dst_bitrate > maxBitRate and maxBitRate != 0:
dst_bitrate = maxBitRate dst_bitrate = maxBitRate
if not format:
format = config.get("default_transcode_target")
if format and format != "raw" and format != src_suffix: if format and format != "raw" and format != src_suffix:
dst_suffix = format dst_suffix = format
@ -112,7 +116,6 @@ def stream_media():
cache.get(cache_key), mimetype=dst_mimetype, conditional=True cache.get(cache_key), mimetype=dst_mimetype, conditional=True
) )
except CacheMiss: except CacheMiss:
config = current_app.config["TRANSCODING"]
transcoder = config.get("transcoder_{}_{}".format(src_suffix, dst_suffix)) transcoder = config.get("transcoder_{}_{}".format(src_suffix, dst_suffix))
decoder = config.get("decoder_" + src_suffix) or config.get("decoder") decoder = config.get("decoder_" + src_suffix) or config.get("decoder")
encoder = config.get("encoder_" + dst_suffix) or config.get("encoder") encoder = config.get("encoder_" + dst_suffix) or config.get("encoder")