查看 AWS 弹性转码器,并有几个问题:
-
对于我的用例,首先使用转码器是否有重要价值?我正在制作一个允许用户选择视频的ios应用程序。当他们这样做时,我会将其上传到 S3 存储桶。据我了解,我应该使用弹性转码器对这些视频进行转码,并将它们以 hls 格式放入第二个存储桶中。这是否有意义,或者我是否也可以消除转码步骤,因为我只在 ios 设备上创建内容,然后在 ios 设备上流式传输内容?
-
假设执行管道作业有一些价值,我有一个实现问题:如果我使用的是 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 通话
-
这个问题的答案完全取决于您的使用案例。Amazon Elastic Transcoder 可能是转换视频格式和创建缩略图、视觉水印和字幕等的重要选项。这些只是众多例子中的几个。您应该查看 Amazon Elastic Transcoder 产品详细信息。
-
如果您决定使用
Elastic Transcoder
,则应从 AWS 管理控制台设置管道,因为它是一次性设置。从移动设备创建管道是没有意义的。在移动设备上,您只需将视频文件上传到 Amazon S3 存储桶。后端服务器(例如 Amazon EC2 和 AWS Elastic Beanstalk 都是不错的选择(应该监控存储桶并为 Elastic Transcoder 创建作业。AWS刚刚发布了AWS Lambda,您可能需要检查一下。完成工作后,您可以使用 Amazon SNS 获得通知。