
首先是给服务器安装ffmpeg
其实转换只要一行代码就行了
首先来把MP4切片成ts,然后创建m3u8,我目前了解到的m3u8其实就是一个类似于清单,播放器读取后,根据这个清单来按序播放ts视频.
ffmpeg -i demo.mp4 -profile:v baseline -level 3.0 -start_number 0 -hls_time 10 -hls_list_size 0 -f hls demo.m3u8
其中demo.mp4和demo.m3u8就是原文件和需要转换成的m3u8文件;
-profile
-level 3.0 大概也是视频画质级别吧,基本上是从1到5,
-start_number 0 表示从0开始
-hls_time 10 标识每10秒切一个
直接在命令行内执行上述代码后,就能生成m3u8文件和对应的ts文件了,记得提前先cd得到demo.mp4的目录.
为了防止别人太容易的盗取ts文件,所以在转格式时对ts文件进行加密,方法如下:
首先,新建一个.key文件,名字随便起,这里命名成key.key,然后在里面写入16个字节的字符串,随便写,如:
jnf92lk0a9ad3adg
然后在这个key同目录下,新建一个.keyinfo文件,名字也是随便起,这里sham命名为key.keyinfo,然后再里面写入:
其中第一行的数据会写入到m3u8文件里,是你最终key.key文件存放的位置路径
第二行的当前key.key文件的路径,如果和.keyinfo不在同一目录,需要写上路径
key.keykey.key
最后是在执行ffmpeg时,加入如下代码即可
-hls_key_info_file key.keyinfo
完整的就是
ffmpeg -i demo.mp4 -profile:v baseline -level 3.0 -start_number 0 -hls_time 10 -hls_key_info_file key.keyinfo -hls_list_size 0 -f hls demo.m3u8
h264 acc 编码
ffmpeg -i demo.mp4 -c:v libx264 -c:a aac -start_number 0 -hls_time 10 -hls_key_info_file key.keyinfo -hls_list_size 0 -f hls demo.m3u8
这样,生成m3u8文件是就会在里面添加相应代码,然后ts文件也被加密了.
下面就是如何将m3u8变回MP4了:
前提是这个m3u8文件已经是一个包含ts清单的文件,建议提前下载下来看下,因为有的m3u8只写了通过分辨率来链接到对应的m3u8,那个才是你需要的。
sudo ffmpeg -i https://xxx.com/index.m3u8 -acodec copy -vcodec copy -absf aac_adtstoasc xxx.mp4
这里的m3u8可以直接是网上的文件,最后的xxx.mp4就是你需要转换成的文件。
在命令终端或ssh里执行,也可以参考上面通过system来执行,然后就只要耐心等待就好了,最终完成后,你就得到MP4文件啦.