我将通过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
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
错误域为NSURLErrorDomain
代码-999 "取消"
通常意味着请求被客户端主动取消了,而不是服务端的问题。这可能与你的播放问题不直接相关,因为这个错误信息是关于请求的取消而非视频文件本身的问题。
不过,既然你提到视频无法从其URL播放,这里有几个可能的原因和解决方法:
MIME类型设置:确保你在上传时设置的MIME类型是正确的。对于MP4视频,正确的MIME类型应为video/mp4
,看起来你的代码中已经正确设置了这一点。但请再次确认mimeType
变量在实际执行时确实被赋值为了正确的类型。
S3对象权限:检查你上传到S3的视频文件是否具有正确的访问权限。它需要至少被设置为“公有”(Public)或者配置了适当的预签名URL以便通过网络访问。你可以通过S3控制台或API修改对象的ACL(Access Control List)来实现这一点。
存储桶政策和CORS配置:确保你的S3存储桶的CORS(跨源资源共享)配置允许来自你尝试播放视频的域名的请求。如果没有正确的CORS规则,浏览器可能会阻止视频的加载。
视频编码问题:虽然不太常见,但有时视频文件的编码格式可能不被所有浏览器支持。确保视频使用广泛兼容的编码格式,如H.264视频编码和AAC音频编码。
直接播放链接:确认你尝试播放的URL是直接指向视频文件的,并且没有被重定向或包含任何额外的查询参数。S3上的直接对象URL应该类似于https://your-bucket-name.s3.amazonaws.com/your-video-file.mp4
。
如果以上都已确认无误,建议直接通过S3管理界面检查该视频文件的属性,包括其元数据、访问权限等,以进一步诊断问题。此外,尝试使用其他工具或直接在浏览器中输入视频URL来测试播放,看是否能成功,这样可以帮助定位问题是出在视频文件本身还是访问路径上。