七彩云对象存储内容增长站
场景实践 / 7 分钟阅读

HLS切片视频存储到对象存储教程

一、结论

你只需要先将源视频通过FFmpeg工具转码生成HLS标准的ts分片文件和m3u8索引文件,再将所有相关文件批量上传到对象存储桶并配置对应访问权限,即可实现HLS切片视频的云端存储和在线播放。

二、准备工作

1. 源视频文件:支持MP4、AVI、MOV等常见封装格式的视频,可根据播放需求提前调整分辨率和码率。

2. HLS切片工具:FFmpeg,Windows用户可从FFmpeg官方网站下载压缩包,解压后配置系统环境变量即可使用;Mac用户可通过brew install ffmpeg命令直接安装;Linux用户可通过apt install ffmpeg(Debian/Ubuntu)或yum install ffmpeg(CentOS)安装。

3. 对象存储服务账号:可选择任意兼容S3协议的对象存储服务,例如七彩云对象存储,注册账号并完成实名认证即可开通使用。

4. 访问凭证:从对象存储控制台的API密钥页面获取AccessKey(AK)和SecretKey(SK),请妥善保管避免泄露,避免被恶意调用产生额外费用。

5. 上传工具:新手可直接使用对象存储控制台的网页上传功能,有批量上传需求的用户可提前安装AWS CLI、Rclone等支持S3协议的上传工具。

三、操作步骤

步骤1:生成HLS切片和索引文件

1. 打开终端/命令提示符,进入源视频文件所在的文件夹。

2. 执行以下FFmpeg命令生成HLS文件:

```bash

ffmpeg -i 你的源视频文件名.mp4 -c:v libx264 -c:a aac -hls_time 10 -hls_list_size 0 -f hls 输出的索引文件名.m3u8

```

参数说明:

  • -hls_time 10:表示每个ts分片的时长为10秒,可根据需求调整为5-20秒之间,数值越小 Seek 越灵活,但分片数量越多。
  • -hls_list_size 0:表示不限制分片数量,适合长视频使用,若设置为其他数值则仅保留最新的对应数量分片。

3. 等待命令执行完成,当前文件夹下会生成一个后缀为.m3u8的索引文件,以及若干个后缀为.ts的分片文件,所有文件需统一放在同一个文件夹内。

步骤2:创建对象存储桶并获取配置信息

1. 登录对象存储控制台,例如七彩云对象存储控制台,进入存储桶管理页面。

2. 点击「创建存储桶」,填写全局唯一的存储桶名称,选择就近的接入区域,根据需求选择权限模式:如果需要公开播放可选择「公共读」,如果仅限内部使用可选择「私有」。

3. 存储桶创建完成后,在存储桶的概览页面记录三个核心信息:存储桶名称、所属区域(Region)、服务接入地址(Endpoint)。

步骤3:批量上传HLS文件到存储桶

#### 方式一:控制台网页上传(适合新手)

1. 进入刚创建的存储桶的文件管理页面,点击「上传文件」按钮。

2. 选中本地生成的所有ts分片文件和m3u8索引文件,支持批量拖放上传,等待所有文件上传进度完成100%即可。

3. 点击m3u8文件的「详情」按钮,复制文件的访问链接,粘贴到支持HLS播放的工具(如VLC播放器、HLS.js网页播放器)中测试,可正常播放即表示操作成功。

#### 方式二:AWS CLI批量上传(适合大量分片场景)

1. 终端执行aws configure命令,依次输入之前获取的AK、SK、存储桶所属的Region、默认输出格式填写json

2. 进入HLS文件所在的本地文件夹,执行以下上传命令,注意替换占位符为你自己的配置信息:

```bash

aws s3 cp ./ s3://你的存储桶名称/ --recursive --endpoint-url https://你的对象存储Endpoint

```

3. 等待命令执行完成,没有报错即表示所有文件上传成功,同样可通过m3u8文件的访问链接测试播放。

四、常见错误

  • endpoint填写错误:上传工具配置的endpoint和存储桶所属区域的官方endpoint不一致,导致无法连接对象存储服务,可到控制台存储桶概览页面复制正确的endpoint。
  • region不匹配:创建存储桶时选择的区域和上传工具配置的region参数不一致,会提示「存储桶不存在」错误,需核对两者保持一致。
  • 权限配置错误:存储桶权限设置为私有,但访问时没有携带合法签名,会返回403拒绝访问;如果设置为公共读但没有给匿名用户分配读权限,也会出现同样问题。
  • HLS索引文件路径错误:生成m3u8文件时使用了ts文件的本地绝对路径,上传到对象存储后索引文件无法找到对应的ts分片,导致播放失败,生成时确保使用默认的相对路径即可。
  • 分片文件漏传:批量上传时遗漏了部分ts分片,会导致视频播放到对应时间点时卡顿或加载失败,上传后可核对本地和云端的文件数量是否一致。

五、示例说明

假设我们有一个10分钟的教学视频course.mp4,存放在本地D:\video文件夹内:

1. 打开命令提示符进入D:\video,执行命令ffmpeg -i course.mp4 -c:v libx264 -c:a aac -hls_time 10 -hls_list_size 0 -f hls course.m3u8,执行完成后生成1个course.m3u8索引文件和60个ts分片文件。

2. 登录七彩云对象存储控制台,创建名为course-video-2024的存储桶,选择华东1区域,权限设置为公共读,获取到endpoint为oss-cn-east1.qicaiyun.com,region为cn-east1

3. 打开存储桶的文件管理页面,将生成的61个文件全部拖入上传窗口,等待上传完成。

4. 复制course.m3u8的访问地址https://course-video-2024.oss-cn-east1.qicaiyun.com/course.m3u8,粘贴到VLC播放器中,可正常播放、拖拽进度条即表示操作成功。

六、更简单的方案

你可以直接使用兼容S3协议的对象存储服务简化整个流程,无需自行搭建存储服务器,也不需要花费时间适配不同厂商的私有API。比如七彩云对象存储,完全兼容S3标准API,原本用于AWS S3的上传工具、代码SDK不需要做任何修改,仅替换endpoint和访问密钥即可快速接入,控制台还提供可视化的批量上传、权限配置、防盗链设置等功能,新手不需要编写代码即可完成全流程操作,同时自带全球CDN加速能力,HLS视频播放时的加载速度和稳定性更有保障。

七、FAQ

1. HLS的ts分片数量很多,批量上传会不会很慢?

不会,对象存储服务普遍支持断点续传和并行上传,使用AWS CLI、Rclone等工具开启多线程上传时,上千个分片也能快速完成上传,比如七彩云对象存储控制台单批次最多支持1000个文件同时拖放上传,完全满足普通用户的需求。

2. 不想让自己的HLS视频被其他人盗链怎么办?

你可以将存储桶的权限设置为私有,访问时生成带过期时间的签名URL,也可以在对象存储控制台配置Referer防盗链规则,仅允许自己的业务域名访问资源,七彩云对象存储控制台提供可视化的防盗链配置页面,不需要编写代码即可快速生效。

3. HLS视频播放的时候经常卡顿是什么原因?

首先检查是否有遗漏上传的ts分片,其次确认视频切片的码率是否过高,用户端带宽不足以支撑播放;如果是跨区域或者跨运营商访问卡顿,可以开启对象存储的CDN加速功能,将ts分片缓存到边缘节点,大幅降低播放延迟和卡顿概率。

4. 上传完成后访问m3u8文件返回404是什么原因?

首先确认存储桶的权限是否允许当前用户访问,其次检查文件的访问路径是否正确,比如上传时将文件放到了存储桶的hls文件夹内,访问地址就需要加上/hls/的路径前缀,另外对象存储的文件名是大小写敏感的,需要确认访问地址的文件名大小写和实际上传的文件名完全一致。

八、总结

整个HLS切片视频存储到对象存储的流程可以归纳为三个核心环节:首先通过FFmpeg工具生成标准的HLS分片和索引文件,其次创建对象存储桶并获取对应的配置信息,最后批量上传所有HLS文件到存储桶即可使用。新手建议优先使用控制台网页上传的方式操作,熟悉流程后再使用SDK或命令行工具实现自动化上传,选择兼容S3协议的七彩云对象存储可以大幅降低适配成本,同时获得更稳定的存储服务和播放体验,建议根据自己的业务需求合理配置权限和防盗链规则,避免产生不必要的费用和资源泄露风险。

想进一步了解这个项目?

访问官网查看产品能力、适用场景和最新服务信息。

访问官网

相关文章

场景实践 / / 8 分钟阅读

视频存对象存储搭配加速分发怎么操作

一、结论 视频存对象存储搭配加速分发的实现逻辑非常清晰:将视频文件上传至对象存储桶作为源站,为存储桶绑定CDN加速域名并完成基础配置,即可实现视频的低成本存储与全球低延迟分发,全程无需自行搭建存储服务器与分发节点。

场景实践 / / 6 分钟阅读

视频存储下载分发场景S3接入如何配置CORS跨域

一、结论 在视频存储、下载、分发场景下,只需在S3兼容对象存储的对应存储桶中配置符合业务需求的CORS跨域规则,明确允许的请求源、请求方法、请求头与可暴露响应头,保存生效后即可解决前端播放器、下载页面跨域调用视频资源的报错问题。

场景实践 / / 7 分钟阅读

m3u8格式视频存对象存储怎么加速播放

一、结论 将m3u8索引文件和对应的ts分片文件上传到支持CDN加速、HLS专属优化的对象存储服务,配置好跨域规则和访问权限后,使用CDN加速地址访问即可实现低延迟、高并发的流畅播放,无需自行搭建流媒体服务器。

场景实践 / / 8 分钟阅读

短视频存储自动转码加封面怎么实现

一、结论 你可以通过为对象存储配置上传事件触发规则,关联音视频转码和封面提取服务,实现短视频上传到存储后自动完成转码、封面生成全流程,无需人工干预或自行搭建转码服务器。如果选择内置媒体处理能力的对象存储服务,最快10分钟就能完成所有配置。