|3u8是什么格式?m3u8是苹果推出的一种视频播放标准,是m3u的一种,但编码格式是UTF-8。使用m3u8格式文件主要是因为它可以实现多码率的视频适配。视频网站可以根据用户的网络带宽自动匹配合适码率的文件供客户端播放,从而保证视频的流畅度。准确的说,m3u8是一种索引文件。使用m3u8文件实际上是通过它在服务器上解析出对应的视频网络地址,从而实现在线播放。它将视频切割成ts格式的小视频文件,然后存储在服务器中(现在为了减少I/O访问次数,一般都存储在服务器的内存中),通过m3u8解析路径,然后请求它。合并ts文件的方法其实有很多种。有的教程直接用cmd的copy命令直接合并ts文件:copy/bmovie*.tsmovie_new.ts这种方法可以合并,但是不能转成mp4格式,也可能会出现视频缺陷的情况.因此,本文将讲解如何使用ffmpeg将ts文件合并为mp4格式。使用ffmpeg还可以有效防止视频缺陷。1.在开始之前,您需要确保您的计算机上已经成功安装了Python和pip。如果没有,可以访问这篇文章:超详细的Python安装指南进行安装。(可选1)如果使用Python进行数据分析,可以直接安装Anaconda:Anaconda,Python数据分析和挖掘的好帮手,内置Python和pip。(可选2)另外,推荐大家使用VSCode编辑器,它有很多优点:Python编程的最佳拍档——VSCode详解指南。安装ffmpegMac(打开终端,使用homebrew安装):brewinstallffmpeg--with-libvorbis--with-sdl2--with-theoraLinux:apt-getinstallffmpeglibavcodec-extraWindows:1.输入http://ffmpeg.org/download.html#build-windows,点击windows对应的图标,进入下载界面点击下载按钮,2.将下载的zip文件解压到指定目录3.将解压后的文件目录放在bin目录下(包括ffmpeg.exe)进入path环境变量4.在DOS命令行输入ffmpeg-version,出现如下界面表示安装完成:2.ts文件的简单合并使用ffmpeg合并一些ts文件非常很简单,你只需要在终端输入一行命令。可用:ffmpeg-fconcat-ifile_list.txt-ccopyoutput.mp4其中file_list.txt是一个文本文件,格式如下:file'input1.ts'file'input2.ts'file'input3.ts'我们可以使用Python脚本生成这个file_list.txt:importosfilePath="yourtsvideostoragepath"file_list=sorted(os.listdir(filePath))withopen("yourtsvideostoragepath/file_list.txt","w+")asf:forfileinfile_list:f.write("file'{}'\n".format(file))注意这个file_list.txt需要和你的ts视频放在同一个目录下,然后cd到这个目录,并执行上面提到的ffmpeg合并转换命令:ffmpeg-fconcat-ifile_list.txt-ccopyoutput.mp43。解密处理上面我们说到了未加密的ts文件,下载后可以直接播放。但是AES-128加密文件下载后无法播放,需要解密如何判断是否需要加密?观察视频网站是否有m3u8文件传输,下载后打开:#EXTM3U#EXT-X-VERSION:3#EXT-X-TARGETDURATION:13#EXT-X-MEDIA-SEQUENCE:0//这里是注释,true文件中不会有,//检查你的m3u8文件中是否有这一行,如果有,说明这个m3u8文件是加密的,请继续往下看//如果没有这一行,尤其是没有这一行#EXT-X-KEY,那么恭喜,这个m3u8没有加密,可以直接按照本教程第二点合并#EXT-X-KEY:METHOD=AES-128,URI="http://www.example.com/20180125/key.key"#EXTINF:12.5,//下面其实是视频的真实地址,可以直接在浏览器地址栏回车下载//不过,这样的链接在里面会很多m3u8文件,建议用工具下载(迅雷),ffmpeg,vlc等//这个也可能会出现GBDYO3576000.ts,其实前面的路径省略了,可以自己添加根据m3u8fi的路径乐http://www.example.com/20180125/GBDYO3576000.ts#EXTINF:12.5,http://www.example.com/20180125/GBDYO3576001.ts#EXTINF:12.5,http://www.example.com/20180125/GBDYO3576002.ts如果你的文件是加密的,那么你还需要一个密钥文件。Key文件的下载方法与m3u8文件类似。如下图,key.key是我们需要下载的密钥文件,注意这里m3u8有2个,需要用m3u8文件加上ts文件的超链接如上:下载所有ts文件,把所有的下载ts文件,m3u8,key.key放到一个文件夹中,并将m3u8文件重命名为index.m3u8,key.key重命名为key.m3u8。把index.m3u8里面的url改成你本地路径的key文件,把所有ts改成你本地路径,如下图:#EXTM3U#EXT-X-VERSION:3#EXT-X-TARGETDURATION:13#EXT-X-媒体序列:0#EXT-X-KEY:METHOD=AES-128,URI="e:/20180125/key.m3u8"#EXTINF:12.5,e:/20180125/GBDYO3576000.ts#EXTINF:12.5,e:/20180125/GBDYO3576001.ts#EXTINF:12.5,e:/20180125/GBDYO3576002.ts然后用ffmpeg合并:ffmpeg-allowed_extensionsALL-iindex.m3u8-ccopynew.mp4就大功告成了!我们使用ffmpeg成功解密并合并了这些ts视频片段。实际应用场景可能与此不同。希望本文能起到启发他人的作用。
