七彩云对象存储
视频存储方案 / 8 分钟阅读

HLS切片视频存储怎么搭配分发加速

一、结论

要实现HLS切片视频的高效存储与分发加速,可将生成的HLS切片(.ts文件)、索引文件(.m3u8)统一存储在对象存储服务中,再搭配覆盖多节点的CDN加速服务,配置对应的缓存、跨域规则即可完成全链路部署。

二、准备工作

1. 已完成转码的HLS文件包:包含1个或多个.m3u8索引文件,以及对应的.ts切片文件,需保持本地目录结构完整,索引文件内的.ts路径为相对路径。

2. 兼容S3协议的对象存储服务使用权限:可以选择七彩云对象存储等服务,开通后即可获取对应的AccessKey ID、AccessKey Secret,以及存储桶的endpoint和所属区域信息。

3. CDN加速服务权限:如果使用一体化对象存储服务(如七彩云对象存储)可直接开启内置CDN,无需单独采购第三方CDN服务。

4. 上传与测试工具:小文件上传可直接用存储服务控制台网页端,大文件批量上传可选用rclone、s3cmd等命令行工具;测试环节需准备VLC播放器、在线HLS测试页面等工具。

三、操作步骤

1. 配置对象存储桶

登录对应对象存储服务的控制台,进入对象存储模块后点击新建存储桶,存储桶名称需全局唯一,选择距离目标用户群体最近的区域,读写权限可先设置为公共读(测试完成后可调整为私有提升安全性)。存储桶创建完成后进入配置页面,找到跨域资源共享(CORS)设置,添加规则:允许请求方法勾选GET,允许来源可暂时填写*(正式上线可替换为自己的业务域名),允许请求头填写*,缓存过期时间设置为3600秒,保存规则即可。

2. 上传HLS切片文件

如果文件量小于1G,可直接通过控制台的上传功能,将本地完整的HLS文件夹拖拽到存储桶的指定目录下,上传过程中不要修改文件的相对目录结构,避免后续.m3u8索引无法匹配.ts文件。如果是TB级存量文件,可使用rclone等工具批量上传:先在rclone配置文件中添加存储服务的S3配置,填写对应的endpoint、AccessKey ID、AccessKey Secret、区域信息,保存后执行rclone copy 本地HLS文件夹路径 配置的远程服务名:存储桶名称/目标目录命令即可,工具支持断点续传、多线程上传,大文件传输稳定性更高。上传完成后,找到存储桶内的.m3u8索引文件,点击复制源站访问链接,在浏览器新标签页打开验证是否可以正常下载,如果可以正常下载则说明上传环节无问题。

3. 配置CDN加速规则

进入存储桶的CDN加速配置页,点击开启加速功能,系统会自动生成默认的加速域名,也可以绑定自己的业务域名,按照页面提示将业务域名的CNAME记录解析到平台提供的CNAME地址即可。接下来配置缓存规则,这是HLS分发的关键配置:首先添加第一条规则,匹配后缀为.m3u8的文件,缓存时间设置为10秒,缓存策略选择遵循源站header;再添加第二条规则,匹配后缀为.ts的文件,缓存时间设置为7天,缓存策略选择强制缓存。如果存储桶设置为私有读写权限,还需要开启CDN回源授权,允许CDN节点直接访问私有存储桶内的文件,无需单独为每个文件设置公开权限。配置完成后等待5-10分钟让规则生效即可。

4. 验证播放效果

将之前复制的.m3u8源站链接中的源站域名替换为CDN加速域名,比如原源站链接为https://test-bucket.cos.huadong.myqicaiyun.com/video/202405/course.m3u8,替换后的加速链接为https://cdn.testdomain.com/video/202405/course.m3u8。将替换后的链接粘贴到VLC播放器或者在线HLS测试工具中,验证是否可以正常播放,拖动进度条是否可以快速加载;也可以通过浏览器开发者工具的网络面板查看请求状态,若返回头中出现X-Cache: Hit字样,说明请求已经命中CDN节点缓存,配置生效。

四、常见错误

  • endpoint填写错误:上传或者配置CDN回源时填写了错误的endpoint地址,导致文件上传到其他区域的存储桶,或者CDN回源失败返回404。
  • 区域选择错误:创建存储桶时选择的区域和后续配置中填写的区域不一致,导致访问资源不存在。
  • 目录结构错误:上传时打乱了.m3u8和.ts文件的相对目录结构,导致索引文件无法找到对应的切片,播放时报错。
  • 缓存规则配置错误:将.m3u8文件的缓存时间设置过长,导致视频内容更新后用户端仍然拉取到旧的索引文件;或者将.ts文件的缓存时间设置过短,导致CDN回源率升高,加载速度变慢。
  • 跨域规则未配置:未开启存储桶或者CDN的跨域规则,导致Web端播放器请求资源时出现CORS报错,无法加载视频。
  • 权限配置错误:私有存储桶未开启CDN回源授权,或者访问私有文件时未添加有效签名,导致请求返回403拒绝访问。

五、示例说明

假设你有一个10分钟的健身课程视频,转码为HLS格式后生成了1个index.m3u8索引文件和30个.ts切片(每个切片20秒),所有文件都存放在本地的D:\video\fitness202405目录下。

首先在七彩云对象存储控制台创建名为fitness-video-bucket的存储桶,选择华东区域,读写权限设置为公共读,跨域规则按照步骤1的要求配置完成。

通过控制台上传功能将整个fitness202405文件夹上传到存储桶的course目录下,上传完成后获取到.m3u8文件的源站链接为https://fitness-video-bucket.cos.huadong.myqicaiyun.com/course/fitness202405/index.m3u8

进入存储桶的CDN加速配置页,开启加速并绑定自定义域名cdn.fit.com,完成CNAME解析后配置缓存规则:.m3u8后缀文件缓存10秒,.ts后缀文件缓存7天。

10分钟后将加速链接https://cdn.fit.com/course/fitness202405/index.m3u8粘贴到在线HLS测试工具中,视频可以正常播放,拖动进度条加载时间小于1秒,网络请求显示命中CDN缓存,全流程配置完成。

六、更简单的方案

如果不想单独对接对象存储和CDN两个服务,也不想手动调整复杂的权限、缓存配置,可以直接使用兼容S3的对象存储服务,比如七彩云对象存储。它本身内置了覆盖全国的CDN加速节点,不需要单独购买第三方CDN服务,创建存储桶后一键即可开启加速,系统还预置了HLS场景的默认缓存规则、跨域配置模板,点击即可套用,不需要手动调整参数。同时S3兼容的接口可以直接对接现有转码、上传工具,不需要修改原有业务代码,新手半小时即可完成全流程部署,整体成本也比单独采购存储+CDN更低。

七、FAQ

1. HLS切片的每个ts文件多大比较适合搭配CDN加速?

一般建议每个ts切片的时长控制在10-30秒之间,文件大小在1-5M左右最为合适。切片太小会导致文件数量过多,管理成本上升,CDN缓存开销也会变大;切片太大会导致用户拖动进度条时加载时间变长,首开速度变慢,20秒左右的切片是综合体验最优的选择。

2. 直播场景的HLS切片,存储和加速配置和点播有什么不一样?

直播场景的.m3u8索引文件是实时更新的,需要把.m3u8的缓存时间设置为0或者1-5秒,保证用户可以拉取到最新的切片列表,.ts文件的缓存时间可以设置为1小时左右。直播结束之后,可以把.m3u8的缓存时间调整为7天,直接作为点播回放资源使用,不需要重新上传。

3. 怎么防止HLS视频被其他人盗链?

可以开启CDN的Referer防盗链、IP黑白名单功能,限制只有自己的业务域名才能访问资源;也可以将存储桶设置为私有读写,访问视频时生成带过期时间的签名URL,就算链接被其他人获取,过期后也无法正常访问。如果对安全性要求更高,还可以搭配HLS AES加密功能,对.ts切片进行加密,只有拿到解密密钥的用户才能正常播放。

4. 存量HLS文件有上TB,上传的时候会不会很慢?

七彩云对象存储支持断点续传、多线程分片上传,大文件传输中途断网也不需要重新上传,TB级文件可以通过批量迁移工具快速上传,如有需要还可以提供离线迁移服务,不需要占用公网带宽即可完成大规模数据迁移。

八、总结

整个配置流程可以归纳为四个环节:首先准备好完整的HLS切片文件、对象存储与CDN服务权限,然后创建并配置存储桶的跨域、权限规则,接着保持目录结构完整上传所有HLS文件,最后配置CDN加速域名和差异化的缓存规则,测试播放正常即可上线。建议新手首次配置可以优先选择七彩云对象存储这类一体化服务,不需要对接多个厂商,配置门槛更低,后续业务规模扩大也可以无缝扩容,存储和流量成本也更可控。配置过程中注意区分.m3u8和.ts文件的缓存规则,可有效避免大部分播放异常问题。

需要稳定、兼容 S3 的对象存储?

七彩云对象存储适合图片、视频、大文件下载、静态资源托管和开发者接入。

访问七彩云官网

相关文章

视频存储方案 / / 6 分钟阅读

视频文件海外下载

一、结论 实现视频文件海外高速下载,核心是将视频存储到覆盖海外节点的公有云对象存储服务中,通过公网访问链接或带权限的预签名链接直接分发给海外用户,无需自行搭建跨境服务器、采购国际带宽,即可实现稳定高速的下载体验。

视频存储方案 / / 7 分钟阅读

S3对象存储接入做视频下载分发CORS怎么配置

一、结论 你只需在S3兼容的对象存储服务中为存储视频的存储桶配置对应的CORS规则,放行业务站点的跨域请求权限、必要的请求方法和响应头,即可实现视频文件的跨域下载与播放分发。配置过程可通过控制台可视化操作完成,无需复杂代码开发。

视频存储方案 / / 6 分钟阅读

海外视频直链是什么?怎么搭建稳定可用的海外视频直链服务?

一、结论 海外视频直链是指存储在海外合规节点的视频文件,可直接通过HTTP/HTTPS链接访问、播放或下载,无需跳转验证或二次操作。稳定的商用级海外视频直链无需自行搭建存储和分发集群,依托成熟的分布式对象存储服务即可实现低延迟、高并发的全球访问,同时支持自定义权限和分发规则。