【问题标题】:AWS ios SDK - http post request for elastic transcoder jobAWS ios SDK - 弹性转码器作业的 http 发布请求
【发布时间】:2015-01-31 17:34:39
【问题描述】:

研究 AWS 弹性转码器,有几个问题:

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

  2. 1234563转码器请求文档?当我在 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

【问题讨论】:

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


    【解决方案1】:
    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 获得通知。

    【讨论】:

    • 好吧,这是有道理的。我没有意识到我可以建立一个管道,它会自动将我放入一个存储桶中的任何内容,根据我的要求对其进行转码,然后将其放入另一个存储桶中。如何在控制台中配置它?我创建了一个管道,但只手动完成了作业,我不知道我可以将它设置为在保存到存储桶的任何文件上自动运行。另外,我的应用程序如何知道给定工作何时完成?我想我需要知道这一点,因为只有在文件被转码并放入第二个存储桶后,我才能将其流式传输给其他用户。
    • 抱歉,我的解释没有涵盖整个故事。您需要从后端服务器创建作业才能实际转换视频。 AWS Lambda 是一项很棒的服务,可以帮助您做到这一点。
    猜你喜欢
    • 2015-08-24
    • 2015-01-22
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    相关资源
    最近更新 更多