Module: ActiveEncode::EngineAdapters::MediaConvertOutput
- Defined in:
- lib/active_encode/engine_adapters/media_convert_output.rb
Constant Summary collapse
- AUDIO_SETTINGS =
{ "AAC" => :aac_settings, "AC3" => :ac3_settings, "AIFF" => :aiff_settings, "EAC3_ATMOS" => :eac_3_atmos_settings, "EAC3" => :eac_3_settings, "MP2" => :mp_2_settings, "MP3" => :mp_3_settings, "OPUS" => :opus_settings, "VORBIS" => :vorbis_settings, "WAV" => :wav_settings }.freeze
- VIDEO_SETTINGS =
{ "AV1" => :av_1_settings, "AVC_INTRA" => :avc_intra_settings, "FRAME_CAPTURE" => :frame_capture_settings, "H_264" => :h264_settings, "H_265" => :h265_settings, "MPEG2" => :mpeg_2_settings, "PRORES" => :prores_settings, "VC3" => :vc_3_settings, "VP8" => :vp_8_settings, "VP9" => :vp_9_settings, "XAVC" => :xavc_settings }.freeze
Class Method Summary collapse
-
.construct_output_url(destination:, file_input_url:, name_modifier:, file_suffix:) ⇒ Object
constructs an ‘s3:` output URL from the MediaConvert job params, the same way MediaConvert will.
- .extract_audio_bitrate(settings) ⇒ Object
- .extract_audio_codec(settings) ⇒ Object
- .extract_audio_codec_settings(settings) ⇒ Object
- .extract_video_bitrate(settings) ⇒ Object
- .extract_video_codec(settings) ⇒ Object
- .extract_video_codec_settings(settings) ⇒ Object
- .extract_video_frame_rate(settings) ⇒ Object
- .tech_metadata_from_logged(settings, logged_output) ⇒ Object
- .tech_metadata_from_settings(output_url:, output_settings:, output_detail_settings:) ⇒ Object
Class Method Details
.construct_output_url(destination:, file_input_url:, name_modifier:, file_suffix:) ⇒ Object
constructs an ‘s3:` output URL from the MediaConvert job params, the same way MediaConvert will.
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/active_encode/engine_adapters/media_convert_output.rb', line 95 def construct_output_url(destination:, file_input_url:, name_modifier:, file_suffix:) output = destination # MediaConvert operates such that if you give a destination ending in '/', # it'll use the original file name as part of output url. if output.end_with?('/') # ".*" on the end will strip extension off output += File.basename(file_input_url, '.*') end output += name_modifier if name_modifier output += "." + file_suffix output end |
.extract_audio_bitrate(settings) ⇒ Object
136 137 138 139 140 |
# File 'lib/active_encode/engine_adapters/media_convert_output.rb', line 136 def extract_audio_bitrate(settings) codec_settings = extract_audio_codec_settings(settings) return nil if codec_settings.nil? try(codec_settings, :bitrate) end |
.extract_audio_codec(settings) ⇒ Object
112 113 114 115 116 |
# File 'lib/active_encode/engine_adapters/media_convert_output.rb', line 112 def extract_audio_codec(settings) settings.audio_descriptions.first.codec_settings.codec rescue nil end |
.extract_audio_codec_settings(settings) ⇒ Object
118 119 120 121 |
# File 'lib/active_encode/engine_adapters/media_convert_output.rb', line 118 def extract_audio_codec_settings(settings) codec_key = AUDIO_SETTINGS[extract_audio_codec(settings)] settings.audio_descriptions.first.codec_settings[codec_key] end |
.extract_video_bitrate(settings) ⇒ Object
142 143 144 145 146 |
# File 'lib/active_encode/engine_adapters/media_convert_output.rb', line 142 def extract_video_bitrate(settings) codec_settings = extract_video_codec_settings(settings) return nil if codec_settings.nil? try(codec_settings, :bitrate) || try(codec_settings, :max_bitrate) end |
.extract_video_codec(settings) ⇒ Object
123 124 125 126 127 |
# File 'lib/active_encode/engine_adapters/media_convert_output.rb', line 123 def extract_video_codec(settings) settings.video_description.codec_settings.codec rescue nil end |
.extract_video_codec_settings(settings) ⇒ Object
129 130 131 132 133 134 |
# File 'lib/active_encode/engine_adapters/media_convert_output.rb', line 129 def extract_video_codec_settings(settings) codec_key = VIDEO_SETTINGS[extract_video_codec(settings)] settings.video_description.codec_settings[codec_key] rescue nil end |
.extract_video_frame_rate(settings) ⇒ Object
148 149 150 151 152 153 154 |
# File 'lib/active_encode/engine_adapters/media_convert_output.rb', line 148 def extract_video_frame_rate(settings) codec_settings = extract_video_codec_settings(settings) return nil if codec_settings.nil? (codec_settings.framerate_numerator.to_f / codec_settings.framerate_denominator.to_f).round(2) rescue nil end |
.tech_metadata_from_logged(settings, logged_output) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/active_encode/engine_adapters/media_convert_output.rb', line 52 def (settings, logged_output) url = logged_output.dig('outputFilePaths', 0) { width: logged_output.dig('videoDetails', 'widthInPx'), height: logged_output.dig('videoDetails', 'heightInPx'), frame_rate: extract_video_frame_rate(settings), duration: logged_output['durationInMs'], audio_codec: extract_audio_codec(settings), video_codec: extract_video_codec(settings), audio_bitrate: extract_audio_bitrate(settings), video_bitrate: extract_video_bitrate(settings), url: url, label: File.basename(url), suffix: settings.name_modifier } end |
.tech_metadata_from_settings(output_url:, output_settings:, output_detail_settings:) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/active_encode/engine_adapters/media_convert_output.rb', line 36 def (output_url:, output_settings:, output_detail_settings:) { width: output_detail_settings.video_details.width_in_px, height: output_detail_settings.video_details.height_in_px, frame_rate: extract_video_frame_rate(output_settings), duration: output_detail_settings.duration_in_ms, audio_codec: extract_audio_codec(output_settings), video_codec: extract_video_codec(output_settings), audio_bitrate: extract_audio_bitrate(output_settings), video_bitrate: extract_video_bitrate(output_settings), url: output_url, label: (output_url ? File.basename(output_url) : output_settings.name_modifier), suffix: output_settings.name_modifier } end |