AWS ios SDK - 弹性转码器作业的http post请求

时间:2014-12-03 08:30:16

标签: ios swift amazon-web-services amazon-elastic-transcoder aws-sdk-ios

研究AWS弹性转码器,并提出几个问题:

  1. 对于我的用例,首先使用代码转换器是否有重要价值?我正在制作一个允许用户选择视频的ios应用。当他们这样做时,我将它上传到S3存储桶。据我所知,我应该使用弹性代码转换器然后将这些视频转码并以hls格式放入第二个桶中。这是否有意义,或者我是否会因为我只在ios设备上创建内容然后在ios设备上流式传输而取消转码步骤?

  2. 假设执行管道作业有一些价值,我有一个实现问题:如果我使用ios SDK,有办法绕过手动创建弹性指定的http授权头转码器请求文档?当我在xcode中工作时,我没有看到任何特定于转码器的方法,但我只是想知道是否有某种方法可以使用像AWSRequest(而不是NSMutableURLRequest)这样的东西来节省我制作授权密钥。我查看了大量文档,包括ios SDK示例项目,但没有看到像AWSRequest一样被使用。请指点我正确的方向!

  3. 代码:我已经根据这里的文档构建了请求主体的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

1 个答案:

答案 0 :(得分: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获得通知。