基于HLS流媒体技术,可以使单一的播放连接根据带宽选择自适应分辨率的效果。
首先先生成一个加密key,
openssl rand 16 > enc.key
然后新建一个enc.keyinfo文件,把enc.key上传网页播放器的运行目录下
enc.keyinfo 内容就是
https://域名/enc.keyenc.key
之后再直接用下面的代码进行转码就可以生成1080P 720P 480P三种分辨率了。
ffmpeg -y -i 1.mp4 -preset slow -g 48 -sc_threshold 0 -map 0:0 -map 0:1 -map 0:0 -map 0:1 -map 0:0 -map 0:1 -map 0:0 -map 0:1 -map 0:0 -map 0:1 -map 0:0 -map 0:1 -s:v:0 1920*1080 -b:v:0 1800k -s:v:1 1280*720 -b:v:1 1200k -s:v:2 858*480 -b:v:2 750k -s:v:3 630*360 -b:v:3 550k -s:v:4 426*240 -b:v:4 400k -s:v:5 256*144 -b:v:5 200k -c:a copy -var_stream_map "v:0,a:0,name:1080p v:1,a:1,name:720p v:2,a:2,name:480p v:3,a:3,name:360p v:4,a:4,name:240p v:5,a:5,name:144p" -master_pl_name master.m3u8 -f hls -hls_time 10 -hls_key_info_file enc.keyinfo -hls_playlist_type vod -hls_list_size 0 -hls_segment_filename "v%v/segment%d.ts" v%v/index.m3u8
完事之后会生成6个分辨率文件夹,以及一个主m3u8文件。上传到存储节点即可。
一般的HLS播放器都会自动切换分辨率不需要手动切换。
PS: 首次加载必定会加载最高清的内容,从第二个TS文件起才能切换分辨率。
文章有(1)条网友点评
非常有用👍