业务背景
上传对象存储桶的m3u8的视频,包含m3u8视频的索引文件和ts切片视频,在存储桶设置为私有的情况下,m
3u8索引文件请求,ts切片视频资源没有签名信息,视频播放会报错403拒绝请求,
解决方案
OSS对音视频数据的访问提供了动态签名机制,即只需在首次访问m3u8文件时在URL中添加x-oss-process=hls/sign
, OSS将对返回的播放列表中的所有ts地址自动按照与m3u8完全相同的方式进行签名
# -*- coding: utf-8 -*- import oss2 auth = oss2.Auth("","") bucket = oss2.Bucket(auth, 'http://oss-cn-chengdu.aliyuncs.com', 'bucketname' ) # 获取观流的动态签名地址。 your_object_name = "tmp/20241218001output.m3u8" style = "hls/sign" # 生成签名URL时,OSS默认会对Object完整路径中的正斜线(/)进行转义,从而导致生成的签名URL无法直接使用。 # 设置slash_safe为True,OSS不会对Object完整路径中的正斜线(/)进行转义,此时生成的签名URL可以直接使用。 signed_download_url = bucket.sign_url('GET', your_object_name, 3600, params={'x-oss-process': style}, slash_safe=True) print(signed_download_url)
阿里云官网文档说明:https://help.aliyun.com/zh/oss/use-cases/create-hls-streams-based-on-oss