CloudFront HLS 流式传输不起作用 - S3 (HLS v4)
CloudFront HLS streaming not working - S3 (HLS v4)
我使用 CloudFront 设置了基于 S3 的 HLS 流式传输,但 HLS 流式传输似乎不起作用。我使用此网络广播创建了存储桶并转码了内容:
https://www.youtube.com/watch?v=MuQ_qg7U0l8
内容似乎具有正确的权限,但缺少 mime 类型(我看到 m3u8 具有 mime 类型 text/plain。转码器不应该正确设置吗?
我不确定这是否是视频无法播放的原因。在 Chrome 中,它只显示一个使用 HTML5 标签的空白屏幕,而在 Safari 中,如果我尝试直接播放它,它会显示播放按钮,但没有其他内容。
有什么想看的地方吗?我的原始内容是 mp4(在使用弹性转码器之前)
更新:啊似乎是 HLS-v4 的问题,如果我转码为 HLS-v3 则工作正常。所以可能与 mime 类型无关(v3 中的相同 mimetypes)
我检查了你的测试流,mime 类型是正确的:
curl -I http://.../master.m3u8
HTTP/1.1 200 OK
Content-Type: application/x-mpegURL
curl -I http://.../hls_1m_.ts
HTTP/1.1 200 OK
Content-Type: video/MP2T
流也能正常播放。
有些客户端只支持协议的 版本 3,我认为这是你的问题。
版本 4 通过 EXT-X-BYTERANGE
添加了字节范围支持。查看您的播放列表:
#EXTINF:3.754688999999999,
#EXT-X-BYTERANGE:118258@1990168
hls_1m_.ts
这肯定会导致某些不支持新功能的播放器出现问题。最安全的方法是暂时使用 版本 3。
在我的例子中,我使用的是 s3 public 存储桶,无法流式传输,
我尝试在 s3 中设置 CORS 配置,它工作正常
我在 S3 控制台 CORS 配置中添加了以下内容(s3 > "public bucket" > permissions > CORS configuration)
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
</CORSRule>
</CORSConfiguration>
了解更多详情this可能对您有所帮助
我使用 CloudFront 设置了基于 S3 的 HLS 流式传输,但 HLS 流式传输似乎不起作用。我使用此网络广播创建了存储桶并转码了内容: https://www.youtube.com/watch?v=MuQ_qg7U0l8
内容似乎具有正确的权限,但缺少 mime 类型(我看到 m3u8 具有 mime 类型 text/plain。转码器不应该正确设置吗?
我不确定这是否是视频无法播放的原因。在 Chrome 中,它只显示一个使用 HTML5 标签的空白屏幕,而在 Safari 中,如果我尝试直接播放它,它会显示播放按钮,但没有其他内容。
有什么想看的地方吗?我的原始内容是 mp4(在使用弹性转码器之前)
更新:啊似乎是 HLS-v4 的问题,如果我转码为 HLS-v3 则工作正常。所以可能与 mime 类型无关(v3 中的相同 mimetypes)
我检查了你的测试流,mime 类型是正确的:
curl -I http://.../master.m3u8
HTTP/1.1 200 OK
Content-Type: application/x-mpegURL
curl -I http://.../hls_1m_.ts
HTTP/1.1 200 OK
Content-Type: video/MP2T
流也能正常播放。
有些客户端只支持协议的 版本 3,我认为这是你的问题。
版本 4 通过 EXT-X-BYTERANGE
添加了字节范围支持。查看您的播放列表:
#EXTINF:3.754688999999999,
#EXT-X-BYTERANGE:118258@1990168
hls_1m_.ts
这肯定会导致某些不支持新功能的播放器出现问题。最安全的方法是暂时使用 版本 3。
在我的例子中,我使用的是 s3 public 存储桶,无法流式传输,
我尝试在 s3 中设置 CORS 配置,它工作正常
我在 S3 控制台 CORS 配置中添加了以下内容(s3 > "public bucket" > permissions > CORS configuration)
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
</CORSRule>
</CORSConfiguration>
了解更多详情this可能对您有所帮助