2

调查 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()

显然,当我运行它时会出错。

这是最接近我的问题的事情,但没有答案:Rest call with amazon ios sdk to amazon elastic transcoder

4

1 回答 1

3
  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 获得通知。

于 2014-12-04T03:22:47.580 回答