2

Глядя в AWS упругого транскодер, и есть несколько вопросов:AWS ИОС SDK - HTTP POST запрос эластичного транскодера работы

  1. Есть ли существенное значение, используя транскодер в первую очередь, для моего случая использования? Я делаю приложение ios, которое позволяет пользователям выбирать видео. Когда они это делают, я загружаю его в ведро S3. Насколько я понимаю, я должен использовать эластичный транскодер, чтобы затем перекодировать эти видео и опустить их во втором ковше в формате hls. Имеет ли это смысл, или я был бы так же хорошо, как исключить шаг транскодирования, поскольку я только создаю контент на устройствах ios, а затем транслирую его на устройства ios?

  2. Предполагая, что есть какое-то значение для выполнения работ по конвейеру, у меня есть вопрос реализации: если я использую SDK ios, есть ли способ обойти ручное создание заголовка авторизации http, указанного в эластичном транскодере запрашивать документы? Я не вижу каких-либо методов, специфичных для транскодера, когда я работаю в xcode, но мне просто интересно, есть ли способ использовать что-то вроде AWSRequest (в отличие от NSMutableURLRequest), что избавит меня от необходимости создавать ключ авторизации. Я просмотрел целую кучу документации, включая примеры проектов SDK ios, но не видел ничего подобного AWSRequest. Пожалуйста, помогите указать мне в правильном направлении!

Код: Я уже построил структуру JSon для тела запроса на основании документации здесь: http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/making-http-requests.html#http-request-header Вот насколько я получил, прежде чем я столкнулся со сложностью заголовка авторизации:

println("my json: \(jsonRequestString)") 

       var dateFormatter:NSDateFormatter = NSDateFormatter() 
       dateFormatter.dateFormat = "yyyyMMdd'T'HHmmss'Z'" 
       var dateString = dateFormatter.stringFromDate(date) 
       println("dateString: \(dateString)") 
       var elasticTranscoderURLString:String = "elastictranscoder.us-west-1.amazonaws.com" 
       var elasticTranscoderRequest:NSMutableURLRequest = NSMutableURLRequest(URL: NSURL(string: elasticTranscoderURLString)!) 
       elasticTranscoderRequest.HTTPMethod = "POST" 
       elasticTranscoderRequest.addValue("elastictranscoder.us-west-1.amazonaws.com", forHTTPHeaderField: "Host") 
       elasticTranscoderRequest.addValue("application/x-amz-json-1.0", forHTTPHeaderField: "Content-Type") 
       elasticTranscoderRequest.addValue(dateString, forHTTPHeaderField: "x-amz-date") 
       //placeholder - need to add authorization header field 
       //placeholder - need to add content-length header field 
       var requestData: NSData = jsonRequestString.dataUsingEncoding(NSUTF8StringEncoding)! 
       elasticTranscoderRequest.HTTPBody = requestData 

       var elasticTranscoderSession = NSURLSession.sharedSession() 

       var elasticTranscoderTask = elasticTranscoderSession.dataTaskWithRequest(elasticTranscoderRequest, completionHandler: {(elasticTranscoderData, response, error) in 

        println("here's the error: \(error)") 
        println("here's the response: \(response)") 
        println("I'm in the completion handler of elasticTranscoderTask") 

       })//end elasticTranscoderTask completion handler 
       elasticTranscoderTask.resume() 

Очевидно, что я получаю сообщение об ошибке при запуске этого приложения.

это ближе всего к моему вопросу, но он не имеет ответа: Rest call with amazon ios sdk to amazon elastic transcoder

ответ

3
  1. Ответ на этот вопрос полностью зависит от вашего использования. Amazon Elastic Transcoder может быть ценным вариантом для преобразования видеоформата и создания эскизов, визуальных водяных знаков и титров и т. Д. Это всего лишь несколько примеров. Вы должны проверить Amazon Elastic Transcoder Product Details.

  2. Если вы решите использовать Elastic Transcoder, вы должны настроить трубопровод от AWS Management Console, потому что это разовая настройка. Не имеет смысла создавать конвейер с мобильных устройств. С мобильных устройств вы должны просто загружать видеофайлы в свой ковш Amazon S3. Бэкэнд-сервер (например, Amazon EC2 и AWS Elastic Beanstalk - оба хороших варианта) должен контролировать ведро и создавать задания для Elastic Transcoder. AWS только что объявила AWS Lambda, и вы можете ее проверить. Как только работа будет выполнена, вы можете использовать Amazon SNS для получения уведомления.

+0

OK, что имеет смысл. Я не понимал, что могу создать трубопровод, который автоматически забирает все, что я помещаю в одно ведро, перекодирует его в соответствии с моими требованиями и бросает его в другое ведро. Как настроить это на консоли? Я создал конвейер, но только выполнил задания вручную, я не знал, что могу настроить его для автоматического запуска на любом файле, сохраненном в ведре. Также, как мое приложение узнает, когда задание выполнено? Я думаю, что мне нужно это знать, потому что только после того, как файл был перекодирован и сброшен во втором ковше, я могу передать его другим пользователям. – bkopp

+0

Извините, мое объяснение не охватывало всю историю. Вам нужно создать задания с сервера backend, чтобы фактически конвертировать видео. [AWS Lambda] (http://aws.amazon.com/lambda/details/) - отличный сервис, который может помочь вам в этом. –

+0

ОК спасибо, я посмотрю на это. – bkopp