1.首先将视频转换为编码h264,音频编码aac格式的mp4文件

使用 ffprobe 查看视频文件的编码格式

ffprobe 本地视频.mkv

如果音视频编码为 h264/aac 则执行命令

ffmpeg -i 本地视频.mkv -acodec copy -vcodec copy 转换视频.mp4

否则执行以下命令

ffmpeg -i 本地视频.mkv -acodec libfaac -vcodec libx264 转换视频.mp4

2.将mp4格式视频转换成ts格式

ffmpeg -i 本地视频.mp4 -c copy -bsf h264_mp4toannexb 转换视频.ts

3.将ts格式视频切片,并生成m3u8文件

ffmpeg -i 本地视频.ts -c copy -map 0 -f segment -segment_list 视频索引.m3u8 -segment_time 6 前缀-%03d.ts

egment 就是切片,-segment_time 表示隔几秒进行切一个文件,上面命令是隔 6s,根据自己的需求调整参数

跨域问题

在跨域的网站根目录放 crossdomain.xml 文件,下面是允许所有的网站(一般不采取这样的方式,只是方便调试)均可以跨越访问资源配置如下:

<?xml version="1.0" encoding="utf-8"?>
<cross-domain-policy>
    <allow-access-from domain="*"/>
</cross-domain-policy>

限制指定网站访问,可以参考百度 https://www.baidu.com/crossdomain.xml 配置

<cross-domain-policy>
    <allow-access-from domain="*.baidu.com"/>
    <allow-access-from domain="*.bdstatic.com"/>
    <allow-http-request-headers-from domain="*.baidu.com" headers="*"/>
    <allow-http-request-headers-from domain="*.bdstatic.com" headers="*"/>
</cross-domain-policy>

如果文件存储在第三方平台上,比如阿里云 OSS,就把 crossdomain.xml 放在 bucket 根目录下