Add passthrough options for audio attachments

fixes/audio-passthrough
Claire 2023-10-05 14:58:46 +02:00
parent 40ba6e119b
commit 0bc7bd75cb
2 changed files with 21 additions and 1 deletions

View File

@ -146,6 +146,20 @@ class MediaAttachment < ApplicationRecord
original: VIDEO_FORMAT.merge(passthrough_options: VIDEO_PASSTHROUGH_OPTIONS).freeze,
}.freeze
AUDIO_PASSTHROUGH_OPTIONS = {
audio_codecs: ['acc'].freeze,
options: {
format: 'mp3',
convert_options: {
output: {
'loglevel' => 'fatal',
'map_metadata' => '-1',
'c:a' => 'copy',
}.freeze,
}.freeze,
}.freeze,
}.freeze
AUDIO_STYLES = {
original: {
format: 'mp3',
@ -156,6 +170,8 @@ class MediaAttachment < ApplicationRecord
'q:a' => 2,
}.freeze,
}.freeze,
passthrough_options: AUDIO_PASSTHROUGH_OPTIONS,
}.freeze,
}.freeze

View File

@ -115,7 +115,11 @@ module Paperclip
end
def eligible_to_passthrough?(metadata)
@passthrough_options && @passthrough_options[:video_codecs].include?(metadata.video_codec) && @passthrough_options[:audio_codecs].include?(metadata.audio_codec) && @passthrough_options[:colorspaces].include?(metadata.colorspace)
return false if @passthrough_options.blank?
%i(video_codec audio_codec colorspace).all? do |attribute|
@passthrough_options["#{attribute}s".to_sym].nil? || @passthrough_options["#{attribute}s".to_sym].include?(metadata.public_send(attribute))
end
end
def update_attachment_type(metadata)