开发者社区 问答 正文

视频,上传到S3存储桶上,不是通过iOS APP中的url播放

我将通过POST请求上传S3桶上的视频和图像到S3服务(不使用AWSSDK)。图像和视频上传成功。但这段视频不是从它的网址播放的。

下面是控制台上显示的错误:

错误域=NSURLErrorDomain代码=-999“取消”UserInfo={NSErrorFailingURLStringKey=https://s3url}

下面是我正在使用的多部分请求的代码:

Alamofire.upload(multipartFormData: { (multiPart) in
        if parameters != nil {
            for (key, value) in parameters! {
                multiPart.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key)
            }
        }
        print("mime type ==================>\(mimeType)")
        //mime type for video: "video/mp4"
        multiPart.append(file, withName: key, fileName: fileName, mimeType: mimeType)
    }, usingThreshold: 10000, to: url, method: .post, headers: headers) { (encodingResult) in
        switch encodingResult {
        case .success(let upload, _, _):
            upload.responseString(completionHandler: { (response) in
                print("response string")
                print(response)
            })
            upload.responseJSON { response in
                print(response)
                print(response.result.isSuccess)
            }
        case .failure(let error):
            failure(self.parseError(error: error))
            break
        }
    }

展开
收起
游客5akardh5cojhg 2019-12-11 18:38:02 798 分享 版权
阿里云 AI 助理回答

错误域为NSURLErrorDomain代码-999 "取消"通常意味着请求被客户端主动取消了,而不是服务端的问题。这可能与你的播放问题不直接相关,因为这个错误信息是关于请求的取消而非视频文件本身的问题。

不过,既然你提到视频无法从其URL播放,这里有几个可能的原因和解决方法:

  1. MIME类型设置:确保你在上传时设置的MIME类型是正确的。对于MP4视频,正确的MIME类型应为video/mp4,看起来你的代码中已经正确设置了这一点。但请再次确认mimeType变量在实际执行时确实被赋值为了正确的类型。

  2. S3对象权限:检查你上传到S3的视频文件是否具有正确的访问权限。它需要至少被设置为“公有”(Public)或者配置了适当的预签名URL以便通过网络访问。你可以通过S3控制台或API修改对象的ACL(Access Control List)来实现这一点。

  3. 存储桶政策和CORS配置:确保你的S3存储桶的CORS(跨源资源共享)配置允许来自你尝试播放视频的域名的请求。如果没有正确的CORS规则,浏览器可能会阻止视频的加载。

  4. 视频编码问题:虽然不太常见,但有时视频文件的编码格式可能不被所有浏览器支持。确保视频使用广泛兼容的编码格式,如H.264视频编码和AAC音频编码。

  5. 直接播放链接:确认你尝试播放的URL是直接指向视频文件的,并且没有被重定向或包含任何额外的查询参数。S3上的直接对象URL应该类似于https://your-bucket-name.s3.amazonaws.com/your-video-file.mp4

如果以上都已确认无误,建议直接通过S3管理界面检查该视频文件的属性,包括其元数据、访问权限等,以进一步诊断问题。此外,尝试使用其他工具或直接在浏览器中输入视频URL来测试播放,看是否能成功,这样可以帮助定位问题是出在视频文件本身还是访问路径上。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答