在七牛云存储上播放 HLS

最近更新时间:2017-08-30 18:47:38

在七牛云存储上播放 HLS

HLS 是在移动端使用广泛的播放协议,可以用于直播,也可以用于点播。七牛云存储提供多种类型的视频文件向 HLS 的转换功能:音视频切片。同时,也提供了 m3u8 和 ts 文件的分发下载功能。

用户有两种方式使用七牛云存储提供的 HLS 功能。如果用户已经有视频的 m3u8 文件和相应的 ts 文件,那么只需上传到七牛云存储中即可。播放时将 m3u8 文件的下载 url 作为播放地址,便可以播放 HLS 视频。但有两点需要注意:

1,m3u8 文件中,必须指向 ts 文件所在的位置。包括两种形态:相对引用和绝对引用。相对引用就是当 m3u8 文件同 ts 文件在同一 bucket 中时,可以直接将 ts 文件名放在 m3u8 文件中,不需要额外的前缀:

#EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-MEDIA-SEQUENCE:0
    #EXT-X-ALLOW-CACHE:NO
    #EXT-X-TARGETDURATION:300
    #EXTINF:300.000,
    seg00000.ts
    #EXTINF:300.000,
    seg00001.ts
    #EXTINF:300.000,
    seg00002.ts
    #EXTINF:300.000,
    seg00003.ts
    #EXTINF:300.000,
    seg00004.ts
    #EXT-X-ENDLIST

对于 m3u8 文件同 ts 文件放在不同的 bucket 的情况,需要在 ts 文件名之前增加域名前缀:

#EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-MEDIA-SEQUENCE:0
    #EXT-X-ALLOW-CACHE:NO
    #EXT-X-TARGETDURATION:300
    #EXTINF:300.000,
    http://test-hls.u.qiniudn.com/seg00000.ts
    #EXTINF:300.000,
    http://test-hls.u.qiniudn.com/seg00001.ts
    #EXTINF:300.000,
    http://test-hls.u.qiniudn.com/seg00002.ts
    #EXTINF:300.000,
    http://test-hls.u.qiniudn.com/seg00003.ts
    #EXTINF:300.000,
    http://test-hls.u.qiniudn.com/seg00004.ts
    #EXT-X-ENDLIST

2,为了保证 flash 播放器能够正确播放 HLS 视频,必须在 m3u8 和 ts 文件所在的 bucket 中放置 crossdomain.xml 文件。

如果用户所用的是其他类型的视频格式,比如 MP4、FLV 等,可以上传至七牛云存储,然后使用七牛云存储的音视频切片功能,将其转化成 HLS 视频。用户可以在视频上传的同时启动转换操作:数据预处理,也可以对已经上传的视频文件进行转换:触发持久化处理

在启动 HLS 转换操作时,需要指定视频切片的长度。这个值过长会造成拖放响应降低,废流量增加;这个值过短,会造成 ts 文件过多,管理不便。通常,ts 文件片的长度取 5 分钟到 10 分钟比较合适。

有的用户希望将 m3u8 和 ts 文件所在的 bucket 置为私有,以保护视频内容。但是,一旦 bucket 置为私有,那么对 ts 文件的访问必须每次都进行授权,从而导致每次访问的 url 都不一样,进而使得每次播放都需要生成不同的 m3u8 文件。为解决这个问题,七牛云存储提供了私有 m3u8 功能。用户借助此功能,可以直接访问一个私有 bucket 中的 HLS 视频。

以上内容是否对您有帮助?
  • 提交工单