学习m3u8格式。

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

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

先介绍下来龙去脉:

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

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

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

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

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

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

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

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

01

格式说明

要介绍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下载转换器了呀?不难。
本文的目的是学习科学知识,提高专业技能,因此前面讲的是重要的。
当然,学习的目的是为提供更好的生活服务,因此,本文同时提供了下载提取最终视频文件的工具,工具就是根据上述原理来实现的,如果需要请继续看下面一节。

02

内容提取合并工具

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

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

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

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

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

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

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

长按进行关注。

m3u8视频格式分析相关推荐

  1. 【Android RTMP】RTMP 数据格式 ( FLV 视频格式分析 | 文件头 Header 分析 | 标签 Tag 分析 | 视频标签 Tag 数据分析 )

    文章目录 安卓直播推流专栏博客总结 一. RTMP 格式解析 二. 文件头 Header 分析 三. 标签 Tag 分析 四. 视频标签 Tag 数据分析 安卓直播推流专栏博客总结 Android R ...

  2. 一文详解 m3u8视频格式与视频秒开优化

    公司要求对 视频秒开率 进行优化(一秒内成功加载的播放数/播放总数). 因此本意是想对比一下m3u8与mp4视频格式,并了解m3u8格式优缺点,以确定一个优化大概方向. 但对m3u8做简单了解后,觉得 ...

  3. AVI视频格式分析-封装格式

    AVI视频封装格式分析 使用的工具 RIFF块 CHUNK块 LIST块 hdrl LIST avih CHUNK strl LIST strh CHUNK strf CHUNK JUNK CHUNK ...

  4. Python爬虫新手入门教学(二十):爬取A站m3u8视频格式视频

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 前文内容 Python爬虫新手入门教学(一):爬取豆瓣电影排行信息 Python爬虫新手入门 ...

  5. vue关于videojs一个页面多个视频且一个播放器多个视频源的写法(播放m3u8视频格式的视频监控)

    前言 突然接到一个任务是需要做一个视频回放,而且是监控视频那种. 1.首先需要能播m3u8视频 npm install --save video.js npm install --save video ...

  6. 数据压缩作业:H.264视频格式分析

    目录 一.实验目的 二.实验过程及结果 1.SPS分析 2.PPS分析 3.文件GOP分析 1)编码比特数统计: 2)QP值统计 3)I帧分析 4)B帧分析 5)p帧分析​ 一.实验目的 选择一个.m ...

  7. m3u8视频格式下载并转换为mp4(ffmpeg)

    通过在网络上查询资料以及博客后发现了下载m3u8转换为mp4得方法,但是在使用后发现转换后的mp4文件信息不完善.如果您使用过网上流传最广的转换方法会发现当你查看mp4文件详细信息时是没有播放时长等数 ...

  8. AVI视频格式分析前奏-RIFF

    AVI(Audio Video Interleaved的缩写) :是一种RIFF文件格式,多用于音视频捕捉.编辑.回放等应用程序中.通常情况下,一个AVI文件可以包含多个不同类型的媒体流(典型的情况下 ...

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

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

最新文章

  1. 【UE】常用的UltraEdit使用技巧
  2. Deep Learning源代码收集-持续更新…
  3. (转)在Total Commander下使用SVN
  4. Teiid:数据虚拟化Data Virtualization平台
  5. 【渝粤教育】国家开放大学2018年春季 8638-22T薪酬制度与薪酬管理 参考试题
  6. 计算机科学计算方面分为,计算机方面的专业分为哪些类?【资讯与计算科学】和【电脑科学与技术专业】有什么不同?...
  7. Laravel源码解析之ENV配置
  8. 微信小程序踩坑- tabBar.list[3].selectedIconPath 大小超过 40kb
  9. 轨迹跟踪—线性 MPC 控制算法
  10. 《Sanmill 直棋游戏》创作之旅
  11. 计算机网络部分英文缩写汇总
  12. 使用Github搭建一个属于自己的网站
  13. 鸿蒙 background_element设置渐变色
  14. Centos7.2+Coturn+SignalMaster 搭建WebRTC进行H5直播
  15. Pimple研究及PHP框架搭建
  16. 《玩转Deepin第一篇 · Deepin系统的介绍和安装》
  17. 【MQ】Kafka如何保证幂等性
  18. 自动化功能测试-Athrun—IOS学习之旅文档
  19. 界面控件DevExpress WinForms皮肤编辑器的这个补丁,你了解了吗?
  20. vue-router 判断是否登陆,未登录跳转登陆页面

热门文章

  1. postgresql测试题_使用BenchmarkSQL测试PostgreSQL
  2. 百度AI图片识别亲测成功详解
  3. 向更深更远处迈进 | 数据计算解密神秘宇宙
  4. JS导出Echarts图标数据为Excel表格
  5. WPS中插入图像的剪切方法(转)
  6. 鸡尾酒排序(Cocktail ordering)
  7. 腐蚀rust高速箭怎么做不了_腐蚀RUST创意工坊皮肤制作教程
  8. 国家互联网金融整治 将封堵服务器在境外平台
  9. modbus通讯失败_STM32 MODBUS通讯失败
  10. 服务器怎么u盘装麒麟系统,U盘安装优麒麟(ubuntukylin)系统方法