У меня есть приложение rails, которое загружает видео в ковш AWS S3, используя их конфигурацию CORS, когда это будет завершено, и создается видеообъект с рельсами, созданное для кодирования задания Elastic Transcoder видео в формате .mp4 и генерировать уменьшенное изображение, AWS SNS позволяет отправлять push-уведомления, когда задание завершено.Извлечь файл и файл эскиза из задания AWS Elastic Transcoder
Процесс работает хорошо, и я получаю уведомление SNS, когда загрузка завершена, однако я могу получить URL-адрес видео только отлично, но уведомление содержит только шаблон эскизов, а не фактическое имя файла.
Ниже представлено типичное уведомление, которое я получаю от AWS SNS. NB. Это из выходов хэш
{"id"=>"1", "presetId"=>"1351620000001-000040", "key"=>"uploads/video/150/557874e9-4c67-40f0-8f98-8c59506647e5/IMG_0587.mp4", "thumbnailPattern"=>"uploads/video/150/557874e9-4c67-40f0-8f98-8c59506647e5/{count}IMG_0587", "rotate"=>"auto", "status"=>"Complete", "statusDetail"=>"The transcoding job is completed.", "duration"=>10, "width"=>202, "height"=>360}
Как вы можете видеть под thumbnailPattern это только FilePattern использовать, а не сам файл создан.
Кто-нибудь знает, как я могу получить URLS для файлов, созданных с помощью эластичного транскодера и SNS?
transcoder.rb # => Я создаю новый объект перекодирования, когда видео было сохраненной
class Transcoder < Video
def initialize(video)
@video = video
@directory = "uploads/video/#{@video.id}/#{SecureRandom.uuid}/"
@filename = File.basename(@video.file, File.extname(@video.file))
end
def create
transcoder = AWS::ElasticTranscoder::Client.new(region: "us-east-1")
options = {
pipeline_id: CONFIG[:aws_pipeline_id],
input: {
key: @video.file.split("/")[3..-1].join("/"), # slice off the amazon.com bit
frame_rate: "auto",
resolution: 'auto',
aspect_ratio: 'auto',
interlaced: 'auto',
container: 'auto'
},
outputs: [
{
key: "#{@filename}.mp4",
preset_id: '1351620000001-000040',
rotate: "auto",
thumbnail_pattern: "{count}#{@filename}"
}
],
output_key_prefix: "#{@directory}"
}
job = transcoder.create_job(options)
@video.job_id = job.data[:job][:id]
@video.save!
end
end
VideosController #create
class VideosController < ApplicationController
def create
@video = current_user.videos.build(params[:video])
respond_to do |format|
if @video.save
transcode = Transcoder.new(@video)
transcode.create
format.html { redirect_to videos_path, notice: 'Video was successfully uploaded.' }
format.json { render json: @video, status: :created, location: @video }
format.js
else
format.html { render action: "new" }
format.json { render json: @video.errors, status: :unprocessable_entity }
end
end
end
end
кажется сумасшедшим, что URL-адреса не отправляются/не обновляются в задании или в уведомлении SNS – dodgerogers747
Я согласен; мы надеемся, что команда AWS ETS согласится с тем, что у нее есть запрос на повышение/особенность, основанный на сообщении форума AWS. –