m3u8是苹果公司推出一种视频播放标准,是一种文件检索格式,将视频切割成一小段一小段的ts格式的视频文件,然后存在服务器中(现在为了减少I/o访问次数,一般存在服务器的内存中),通过m3u8解析出来路径,然后去请求,是现在比较流行的一种加载方式,诸如腾讯视频之类大多都是切割成ts流进行加载。
安装包
python3 -m pip install Crypto
python3 -m pip uninstall pycryptodome–(安装Crypto.Cipher缺少包)
什么是M3U8文件
M3U8文件是指UTF-8编码格式的M3U文件
M3U文件是记录了一个索引纯文本文件,打开它时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的网络地址进行在线播放
原视频数据分割为很多个TS流,每个TS流的地址记录在m3u8文件列表中
ts 文件一般怎么处理?
1 只有m3u8文件,需要下载ts文件
2 有ts文件,但因为被加密无法播放,需要解码
3 ts文件能正常播放,但太多而小,需要合并
备注部分
m3u8文件中的 m3u8标签与属性说明
#EXTM3U
每个M3U文件第一行必须是这个tag,起标示作用
#EXT-X-VERSION:3
该属性可以没有
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:15
指定最大的媒体段时间长(秒)---目标持续时间;
所以#EXTINF中指定的时间长度必须小于或是等于这个
最大值;
这个tag在整个PlayList文件中只能出现一 次(在嵌套的情况下,一般有真正ts url的m3u8才会出现该tag);
#EXT-X-MEDIA-SEQUENCE:0
每一个media URI在cont-1643296-14811578-hd中只有唯一的序号,相邻之间序号+1,
一个media URI并不是必须要包含的,如果没有,默认为0
#EXTINF:14.920000,
cont-1643296-14811578-hd-00001.ts
#EXTINF:10.000000,
cont-1643296-14811578-hd-00002.ts
#EXTINF:10.000000,
cont-1643296-14811578-hd-00003.ts
#EXTINF:10.000000,
cont-1643296-14811578-hd-00004.ts
#EXTINF:7.840000,
cont-1643296-14811578-hd-00005.ts
#EXT-X-ENDLIST
补充!!!!!!!!!!!
#EXT-X-PLAYLIST-TYPE
提供关于PlayList的可变性的信息,这个对整个PlayList文件有效,是可选的,格式
如下:#EXT-X-PLAYLIST-TYPE::如果是VOD,则服务器不能改变PlayList 文件;
如果是EVENT,则服务器不能改变或是删除PlayList文件中的任何部分,但是可以向该
文件中增加新的一行内容。
######################################################################
ts
加密后的ts文件不能直接合并或播放,需要使用key对每个ts文件进行解密。
分为两种情况:
(1).如果ts文件已经全部下载好,则可以直接在本地通过ffmpeg快速解密合并。
(2).如果ts文件没有下载好,则可以通过vlc直接下载整个视频,或者通过ffmpeg下载并转换。
无论是哪种情况,都要去视频源地址下载m3u8文件。如果可以下载key(有些网站加密方式比较严谨,不那么容易获取到key),把key文件也下载好。
下载m3u8文件的方式是去源地址网站,按F12找到m3u8文件,或者从右键–>网页源代码中找到地址。两种方式都试一试。