1、视频批量转m3u8
推荐使用:ffmpeg
mac 可以用 brew install ffmpeg 命令
win自行搜索 “ffmpeg安装”
安装完后,可以写一个shell脚本,批量执行,可以参照我的
#!/bin/bash
echo "Hello World !"
for file in ./basevideo/*
do
if [ -f "$file" ]
then
echo "$file is file"
tmp=${file##*/}
mkdir ./output/${tmp%.*}
cd ./output/${tmp%.*}
echo $tmp
ffmpeg -y -i ../../basevideo/$tmp -vcodec copy -acodec copy -vbsf h264_mp4toannexb input.ts
ffmpeg -i input.ts -c copy -map 0 -f segment -segment_list input.m3u8 -segment_time 4 input-d.ts
rm input.ts
cd ../..
fi
done
文件结构如下
basevideo:原视频mp4文件
output:生成后m3u8文件
test.sh 上面的脚本
上传腾讯/阿里对象存储,可以使用他们的本地客户端,把basevieo文件夹拖拽过去
2、cors跨域处理
已腾讯云的对象存储(cos)+腾讯云的cdn为例。
第一步:在cos中,配置跨域访问。
origin:页面的域名
methods:一般都是get,只勾get即可
max-age:生成后如果不频繁变动,推荐时间长一些,120s这样
配置完后,在页面上访问对象存储地址试试,看是否配置正确。
第二步:在cdn配置跨域
配置cdn allow-origin。配置方法,可借鉴官方文档:https://cloud.tencent.com/document/product/228/60739
这两步之后,再重新上传新的视频地址,防止有cdn缓存。一般就可以正常访问了。
cors跨域的请求过程可以看https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS 讲的比较清楚了。
因为cors跨域,是通过判断head偷是否油origin。所以不会影响正常的css、img、js等静态文件,所以不用考虑影响线上其他业务的问题。