学习m3u8格式。

一段时间之前,乘着某美女CEO的东风,学习了一个新的数据格式,即m3u8格式。

经过一段时间的沉淀,美女CEO的热潮大概已经褪去,今天才对这个格式进行分析,嘻嘻。

先介绍下来龙去脉:

某一日,一段微信聊天记录截屏和一段视频在一个个微信群中被转发,发散开来,然后,大家就看到了四男一女玩俄罗斯轮盘的镜头,好几十分钟,很是有些羞耻。

然后经过几日的发酵,该视频被微信屏蔽,无法在微信打开了,对想看而又没来得及看的人来说,甚是遗憾。

不过,没关系,资源还在,只是无法在微信打开了,于是找出地址,使用手机通用浏览器打开,很是流畅,就是这个网址:

https://dadi-yun.com/20190305/1826_××××××××/index.m3u8。

但是,手机看着是不是不太爽?

于是用PC浏览器尝试打开,却是下载下来一个文本文件,很是奇怪。

因此进行了一番分析学习,终成此文章。

本文首先对m3u8格式进行分析,然后将介绍对该格式的数据进行提取及合并,生成最终的mp4文件的方法。

格式说明

要介绍M3U8,首先得介绍下M3U,它是一种文件格式,是某些移动设备例如安卓,苹果手机浏览器缓存视频的“专用视频格式”。M3U文件是记录了一个索引纯文本文件,打开它时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的网络地址进行在线播放。

M3U8文件是指UTF-8编码格式的M3U文件,相当于M3U的特例情况。

M3U8主要的优点是可以做多码率的适配,根据网络带宽,客户端会自动选择一个适合自己码率的文件进行播放,保证视频流的流畅。它主要应用在移动设备上。

接下来将根据前面的美女CEO视频URL进行格式分析。

首先,我们在pc浏览器上通过浏览器打开那个带m3u8后缀的URL,将会下载一个m3u8文件,用记事本打开,可看到内容如下:

#EXTM3U

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=800000,RESOLUTION=1080x60

8800k/hls/index.m3u8

第一行为每个m3u8文件的固定值。

第二行为文件的属性。

第三行为被索引的文件的url。

这是一个纯文本的索引文件,在移动设备上,由于系统的支持,就可以根据索引去自动下载并播放了,在PC上,windows和浏览器是不支持的,我们就得先根据索引去将下一个文件下载下来,然后再进行后续操作。

接下来第二步,获取下一步的url。

上面的索引内容里的“8800k/hls/index.m3u8”显然是不完整的,需要与之前的url进行拼接,当然之前的url需要去除最后一级文件的内容。

这个url进行拼接就是:

“https://dadi-yun.com/20190305/1826_4d2ec220/”+“800k/hls/index.m3u8”即“https://dadi-yun.com/20190305/1826_4d2ec220/800k/hls/index.m3u8”
第三步,访问拼接的URL,将会下载另一个m3u8文件,用记事本打开,可看到内容大体如下:

#EXTM3U

#EXT-X-VERSION:3

#EXT-X-TARGETDURATION:8

#EXT-X-MEDIA-SEQUENCE:0

#EXTINF:4.000000,

2cb056dc5bb000000.ts

#EXTINF:4.000000,

2cb056dc5bb000001.ts

#EXTINF:4.000000,

2cb056dc5bb000002.ts

.

.

.

#EXTINF:4.000000,

2cb056dc5bb000447.ts

#EXTINF:1.400000,

2cb056dc5bb000448.ts

#EXT-X-ENDLIST

上面的内容是一个列表,为简单起见,大部分拷贝时被省略了。可以看到,内容的前面是正常的M3U8文件的描述,后面是一个索引列表,从

2cb056dc5bb000000.ts到2cb056dc5bb000448.ts,按顺序共449个ts文件,这些就是具体的视频内容文件片段了,一个个下载下来,然后通过合并文件就能组成最终能播放的视频文件了。
这里的文件URL同样需要拼接,最终长这样子:

https://dadi-yun.com/20190305/1826_4d2ec220/800k/hls/2cb056dc5bb000000.ts

ts文件是传输流文件,视频编码主要是h264格式,音频为ACC格式,这里以实用为准,就不详细介绍,如果需要可留言后面专门介绍。
前面的这一步步手工操作很麻烦,但了解了原理,是不是就可以写一个m3u8下载转换器了呀?不难。
本文的目的是学习科学知识,提高专业技能,因此前面讲的是重要的。
当然,学习的目的是为提供更好的生活服务,因此,本文同时提供了下载提取最终视频文件的工具,工具就是根据上述原理来实现的,如果需要请继续看下面一节。

内容提取合并工具

如果只是想学习学习这个近30分钟的4男1女多人俄罗斯轮盘游戏方法及理论,使用在线转换网站即可进行,这里提供一个:

https://jx.618g.com/?url=

在这个等号后面补充进最原始的m3u8地址即可使用浏览器进行实时播放,但需要flash支持,当然,还要记得别在公众场合打开!

如果想在PC上保存这个近一百八十M的多人游戏视频,还是需要将这个视频下载下来的。强烈建议下载保存,视频内容很不错。

本文使用的m3u8文件下载器叫ts助手,很容易在网上找到,虽然要注册,但下载几次基本没问题,大概长这个样子:

输入m3u8文件的URL,媒体名称随便写,下载目录选择你想要的目录,然后点击添加并下载,即可自动将视频下载下来并合并成最终的mp4文件,只是这款软件界面设计还不够自动化,如果有有心人,可以对UI适当改进,方便大家,也是一种功德。

工具下载地址,请长按下面的二维码关注我,在对话框发送“m3u8”进行获取。

长按进行关注。

m3u8视频格式分析的更多相关文章

  1. python采集A站m3u8视频格式视频

    基本开发环境 (https://jq.qq.com/?_wv=1027&k=NofUEYzs) Python 3.6 Pycharm 相关模块的使用 (https://jq.qq.com/?_ ...

  2. vue使用video.js解决m3u8视频播放格式

    今天被这个关于m3u8视频播放不了搞了一下午,这个项目所有的视频流都是m3u8格式的,后台给我们返回的都是m3u8格式的视频流,解决了好长时间,看了好多博客,只有这个博客给我点启发,去解决这个问题,请 ...

  3. 爬虫爬取m3u8视频文件

    一.m3u8视频格式 一般m3u8文件和 视频流ts文件放在同一目录 而m3u8文件格式存放的一般都是ts 文件的一个列表 二.根据m3u8视频存放以及写法的规律 思路 我们一般网站上能找到的m3u8 ...

  4. ffmpeg 安装,转视频格式为m3u8,压缩视频

    # ffmpegffmpeg 安装,转视频格式为m3u8,压缩视频 ## ffmpeg 安装直接安装: apt-get install ffmpeg 运行 `ffmpeg` 看是否出现版本号以判断是否 ...

  5. 某学院m3u8视频解密获取分析实战分享

    [免责声明]本文来源于作者个人学习整理,仅供学习交流使用,不构成商业目的.所有资源均系本人个人学习或网络收集,仅提供一个展示.介绍.观摩学习的博文,不对其内容的准确性.可靠性.正当性.安全性.合法性等 ...

  6. 打造m3u8视频(流视频)下载解密合并器(kotlin)

    本文是对我原创工具m3u8视频下载合并器关键代码解析及软件实现的思路的讲解,想要工具的请跳转链接 1.思路说明 思路挺简单,具体步骤如下: 下载m3u8文件 解析m3u8文件获得ts文件列表 根据文件 ...

  7. YUV和RGB格式分析

    做嵌入式项目的时候,涉及到YUV视频格式到RGB图像的转换,虽然之前有接触到RGB到都是基于opencv的处理,很多东西并不需要我们过多深入的去探讨,现在需要完全抛弃现有的算法程序,需要从内存中一个字 ...

  8. 常见压缩格式分析,及 Linux 下的压缩相关指令

    可先浏览加粗部分 一.常见压缩档 *.zip | zip 程式壓縮打包的檔案: (很常见,但是因为不包含文件名编码信息,跨平台可能会乱码) *.rar | winrar 程序压缩打包的档案:(在win ...

  9. m3u8视频下载方法

    部分网站的视频内容,采用了m3u8的格式.正常打开网页可以,但是如果想下载到本地,就存在一定问题了.这里可以再获取到m3u8地址之后,利用vlc软件,来下载m3u8的视频. 工具:Firefox浏览器 ...

随机推荐

  1. Springboot vue.js html 跨域 前后分离 shiro权限 集成代码生成器

    本代码为 Springboot vue.js  前后分离 + 跨域 版本 (权限控制到菜单和按钮) 后台框架:springboot2.1.2+ mybaits+maven+接口 前端页面:html + ...

  2. MongoDB安装与Spring整合

    MongoDB是面向文档的非关系型数据库,数据模型是一种类似于JSON的结构,在数据库中存的是各种各样的JSON.官网下载地址:https://www.mongodb.com/download-cen ...

  3. ORACLE spool打印

    问题描述:spool让我想起来了spooling假脱机,但是这个spool是oracle下的命令,将select查询出来的数据打印出来 1.linuxi下 spool +路径+文件名,这里的文件如果不 ...

  4. .Net Core WebApi 模型验证无效时报400

    问题 模型验证无效时,没有进入到接口里,而是直接报400 Bad Request,非常不友好. 环境 SDK:.Net Core 2.2.401 开发工具:VS2017 step 1 创建接口 /// ...

  5. 【STM32-V6】STM32F429BIT6开发板开源, 丰富软件资源, 强劲硬件配置, 配套400多实例, 9套手册持续更新中2019-12-12

    淘宝购买地址:淘宝购买链接 次.当前标准库最新版本V2.3,HAL库最新版本V1.1 安富莱微信公共平台,欢迎大家关注(打造高质量公众号) 新版用户手册,重在BSP驱动包设计方法,HAL库的框架学习, ...

  6. 【重要更新】Senparc.Weixin SDK v6.5 升级说明(支持 .NET Core 3.0 及分布式消息上下文)

    Senparc.Weixin SDK v6.5 开始支持 .NET Core 3.0,并将微信消息上下文进行了大幅度的重构,支持了使用分布式缓存存储上下文信息,这意味着在分布式系统中,现在 Senpa ...

  7. 精通awk系列(3):铺垫知识:读取文件的几种方式

    回到: Linux系列文章 Shell系列文章 Awk系列文章 读取文件的几种方式 读取文件有如下几种常见的方式: 下面使用Shell的read命令来演示前4种读取文件的方式(第五种按字节数读取的方式 ...

  8. NET Framework项目移植到NET Core上踩的坑(1)

    本文章向大家介绍NET Framework项目移植到NET Core上遇到的一系列坑,主要包括NET Framework项目移植到NET Core上遇到的一系列坑使用实例.应用技巧.基本知识点总结和需 ...

  9. sudo go 找不到命令

    我们使用 sudo 时,使用的配置文件是 /etc/sudoers. 解决配置 /etc/sudoers 文件中的 Defaults secure_path 这一项.将 $GOROOT/bin 目录加 ...

  10. python实现智能语音天气预报

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 飞奔的帅帅 PS:如有需要Python学习资料的小伙伴可以加点击下 ...