Я полностью застрял. Мне нужно пройти через процесс использования AWS-SDK для Ruby для транскодирования видео. Я не знаю, с чего начать. Я загружаю файлы с помощью CarrierWave-Direct в ведро s3. Записи загружаются и напоминаются штрафом. Загрузка выполняется в фоновом режиме с помощью Sidekiq. Куда я иду отсюда? Как начать работу по перекодировке? Как сохранить запись файлов для последующей потоковой передачи в моей базе данных? Могу ли я перекодировать вместе с моей загрузкой процесса Sidekiq? Я разорвал свои волосы, пытаясь найти решение для этого.Как использовать эластичный транскодер с AWS-SDK для Ruby
ответ
Действия транскодирования определены внутри класса AWS :: ElasticTranscoder.
Процесс транскодирования может быть инициирован после завершения загрузки в s3. Для простого транскодер на работу, вы должны иметь
- трубопровод, на котором перекодирование будет осуществляться.
- Presets который определяет вывода видео свойств (Вы можете создать пресет или использовать системные пресеты, предоставляемые AWS)
Сейчас инициируют AWS :: ElasticTranscoder :: класс Client
transcoder = AWS::ElasticTranscoder::Client.new(:access_key_id => AwsKeyId,:secret_access_key => AwsAccessKey,:region=>TranscoderRegion)
Создание трубопровода:
transcoder.create_pipeline(options = {
:name => “test_pipeline”,
:input_bucket => “bucket_name” ,
:output_bucket => “bucket_name”,
:role => Elastic-Transcoder-Default-Role,
:content_config => {
:bucket => “bucket_name”,
:storage_class => Standard
}
:thumbnail_config => {
:bucket => “bucket_name”,
:storage_class => Standard
}
})
Это вернет pipId, который может использоваться для создания рабочих мест.
Теперь вы можете создать работу следующим образом:
transcoder_obj.create_job({
:pipeline_id=>PipelineId,
:input=> {
:key=>"video_path",
:frame_rate=> "auto",
:resolution => "auto",
:aspect_ratio => "auto",
:container => 'auto'
},
:outputs=>[{
:key=>"output_file_location",
:preset_id=>1351620000001-000010,
:thumbnail_pattern=>"thumbnails/thumb_{count}"
}]
})
Это запустит процесс перекодирования. Вы можете проверить статус задания, используя метод read_job. Как только статус станет «Завершено 'от' Прогресс ', выходные файлы будут находиться в указанном выходном ковше.
Перейди через эти ссылки:
http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/ElasticTranscoder/Client.html http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/system-presets.html
AWS :: SNS обеспечивает лучший способ получать уведомления о состоянии транскодирования работы. Вы можете подписаться на тему sns для получения статуса заданий. Ответ на завершенное задание будет содержать необходимую информацию о выходных файлах, чтобы вы могли сохранить его в базе данных для будущей потоковой передачи.
Для получения дополнительной информации см this ссылки
Кода предоставляются образцы не может быть следующим точным синтаксисом. Пожалуйста, обратитесь к документации :) –
Что касается CarrierWave, как мне это сделать? Я бы поместил этот код в мою папку «Загрузить модель» после кода «загрузить в s3», нет? Как установить ссылку на новый URL-адрес, который потребуется для извлечения видео из s3? –
Я сейчас не на своей машине, но позже я уточню свой вопрос с некоторым кодом. –