使用Azure Media Player无法播放存储于Azure Blob Storage的m3u8文件求助
可按以下顺序排查问题:
Blob资源的MIME类型配置错误
Azure Blob Storage默认会给.m3u8、.ts后缀的文件分配application/octet-stream的Content-Type,不符合HLS的规范要求。你需要手动修改两类文件的Content-Type:.m3u8文件设置为application/vnd.apple.mpegurl.ts分片文件设置为video/MP2T
可以在Azure门户的Blob属性页修改,也可以在上传文件的时候指定对应的Content-Type参数。
CORS规则未配置
Azure Media Player的访问请求属于跨域请求,你需要给Blob存储所在的存储账户添加CORS规则,允许来自对应测试域名的GET请求:- 打开存储账户的「资源共享(CORS)」设置页
- 为Blob服务添加规则:允许的源填测试页面所在域名,允许的动词勾选GET,允许的头和暴露的头填
*,最大年龄填86400即可。
m3u8文件内的分片路径异常
你可以直接在浏览器访问你的m3u8文件地址,下载后打开查看内部记录的ts分片路径:- 如果是相对路径,确认所有ts分片和m3u8文件存放在Blob容器的同一个目录下
- 单独复制任意一个ts分片的完整地址到浏览器访问,确认可以正常下载,没有权限报错
编码参数兼容问题
你当前的ffmpeg转码参数缺少HLS兼容相关的配置,可调整参数补充编码规范限制,保证和web播放器兼容:
ffmpeg -i file.mp4 -acodec aac -profile:a aac_low -ar 48000 -ac 2 -vcodec libx264 -profile:v main -level 3.1 -movflags faststart -s 640x360 -start_number 0 -hls_time 10 -hls_list_size 0 -f hls index.m3u8
修改后重新生成文件上传,可先用本地VLC播放器测试m3u8地址是否可以正常播放,排除文件本身的问题后再到测试页面测试。
- 播放器协议选择错误
在测试页面粘贴地址后,需要确认「Streaming Protocol」下拉框选择的是HLS,不要使用默认的自动检测或其他协议。
内容的提问来源于stack exchange,提问作者Sharon Watinsan
相关产品推荐
相关产品推荐

