AWS ios 开发工具包 - 弹性转码器作业的 http post 请求



查看 AWS 弹性转码器,并有几个问题:

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

  2. 假设执行管道作业有一些价值,我有一个实现问题:如果我使用的是 ios SDK,有没有办法绕过手动创建弹性转码器请求文档中指定的 http 授权标头?当我在xcode中工作时,我没有看到任何特定于转码器的方法,但我只是想知道是否有某种方法可以使用AWSRequest之类的东西(而不是NSMutableURLRequest(可以省去制作授权密钥的麻烦。我浏览了一大堆文档,包括ios SDK示例项目,但没有看到使用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()

显然,当我运行它时,我收到一个错误。

这是最接近我的问题,但它没有答案:使用 Amazon ios SDK 到 Amazon Elastic Transcoder 的 Rest 通话

  1. 这个问题的答案完全取决于您的使用案例。Amazon Elastic Transcoder 可能是转换视频格式和创建缩略图、视觉水印和字幕等的重要选项。这些只是众多例子中的几个。您应该查看 Amazon Elastic Transcoder 产品详细信息。

  2. 如果您决定使用 Elastic Transcoder ,则应从 AWS 管理控制台设置管道,因为它是一次性设置。从移动设备创建管道是没有意义的。在移动设备上,您只需将视频文件上传到 Amazon S3 存储桶。后端服务器(例如 Amazon EC2 和 AWS Elastic Beanstalk 都是不错的选择(应该监控存储桶并为 Elastic Transcoder 创建作业。AWS刚刚发布了AWS Lambda,您可能需要检查一下。完成工作后,您可以使用 Amazon SNS 获得通知。

相关内容

  • 没有找到相关文章

最新更新