gpt4 book ai didi

java - 无法播放使用预签名 URL 上传到 AWS S3 的 mp4 视频

转载 作者:行者123 更新时间:2023-11-30 05:33:18 25 4
gpt4 key购买 nike

我正在使用预签名 URL 将 mp4 视频上传到 AWS S3,上传成功,但是当我尝试从 S3 下载视频并在媒体播放器(VLC 或QuickTime),它无法播放!

生成的预签名 URL 适用于 mp3,但对于 WAVFLAC 也会出现与上述相同的问题。

生成预签名 URL 的代码:

public String getPreSignedS3Url( final String userId, final String fileName )
{
Date expiration = new Date();
long expTimeMillis = expiration.getTime();
expTimeMillis += urlExpiry;
expiration.setTime(expTimeMillis);

String objectKey = StringUtils.getObjectKey( userId, fileName );

GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(
recordingBucketName, objectKey)
.withMethod(HttpMethod.PUT)
.withExpiration(expiration);

URL url = s3Client.generatePresignedUrl(generatePresignedUrlRequest);

return url.toString();

}

从上述方法获取预签名 URL 后,我从 Postman 发出 HTTP PUT 请求,请求正文中包含 multipart/form-data,如下所示:

-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-F 'file=@/Users/john/Downloads/sampleDemo.mp4'

预签名网址如下所示:

https://meeting-recording.s3.eu-west-2.amazonaws.com/331902257/sampleDemo.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20190720T125751Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3599&X-Amz-Credential=AKIAZDSMLZ3VDKNXQUXH%2F20190720%2Feu-west-2%2Fs3%2Faws4_request&X-Amz-Signature=dfb8054f0738e07e925e9880e4a8e5ebba0a1bd3c84a3ec78913239f65221992

我尝试使用 generatePresignedUrlRequest.setContentType( "video/mp4");getPreSignedS3Url() 方法中将内容类型设置为 mp4 并添加 Content -在 HTTP PUT 请求 header 中键入:“video/mp4”,但它不起作用,并且失败并显示错误签名不匹配

我使用 S3 作为我的个人备份硬盘,我希望使用预签名 URL 将视频和音频文件上传到 S3,在将来的某个时候下载它们并能够播放它们,但我下载后无法播放。

有谁知道这可能是什么原因造成的吗?

最佳答案

对 S3 的

PUT 请求不支持 multipart/form-data。请求正文只需要包含二进制对象数据即可。如果您从 S3 下载现有文件并使用文本编辑器打开它,您会发现 S3 保留了文件内的多部分表单结构,而不是将其解释为实际负载的包装器。

关于java - 无法播放使用预签名 URL 上传到 AWS S3 的 mp4 视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57125114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com