研究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()
显然我运行时遇到错误。
这与我的问题最接近,但它没有答案:Rest call with amazon ios sdk to amazon elastic transcoder
答案 0 :(得分:3)
这个问题的答案完全取决于您的用例。 Amazon Elastic Transcoder是转换视频格式和创建缩略图,可视水印和字幕等的有用选项。这些只是众多示例中的一小部分。你应该看看Amazon Elastic Transcoder Product Details。
如果您决定使用Elastic Transcoder
,则应该从AWS Management Console设置管道,因为它是一次性设置。从移动设备创建管道没有意义。在移动设备上,您只需将视频文件上传到Amazon S3存储桶即可。后端服务器(例如Amazon EC2和AWS Elastic Beanstalk都是不错的选择)应该监视存储桶并为Elastic Transcoder创建作业。 AWS刚刚宣布AWS Lambda,您可能需要查看它。作业完成后,您可以使用Amazon SNS获得通知。