总结一下m3u8格式相关问题

2023-11-01

1.m3u8格式解读

本小节摘自:m3u8视频文件详解

m3u8不是一种视频格式,而是一种纯文本文件。

m3u8视频文件格式中 存放了视频的基本信息 和 分段视频的索引地址 (将一整个视频分成了时长不同的很多小段)。当播放m3u8视频时,就是按顺序下载播放索引列表的视频,从而完成一部完整视频的播放。

维基百科对m3u8的定义

M3U8: m3u8 是一种纯文本文件,采用UTF-8编码,是一种Unicode版本的m3u文件。
M3U : m3u 是一种播放多媒体列表的文件格式,可以指定一个或多个多媒体文件的位置,它的设计初衷是为了播放音频文件。比如MP3,但是越来越多的软件现在用来播放视频文件列表。
M3U文件是记录了一个索引纯文本文件,打开它时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的网络地址进行在线播放。
HLS :m3u 和 m3u8 文件都是苹果公司使用的HLS (HTTP Live Streaming)格式的基础,这种格式可以在iPhone和Macbook等设备播放。——HLS 点播是常见的分段 HTTP 点播,就是将视频流分成不同的片段,客户端不断的去下载该片段,由于片段之间的分段间隔时间非常短,所以看起来是一条完整的播放流

2.m3u8格式怎么播放、播放原理

(1)只有m3u8文件的【链接】时,可以浏览器插件Native HLS Playback 或者 vlc播放器播放
https://blog.csdn.net/saddyyun/article/details/85157709
没有浏览器插件Native HLS Playback时在地址框输入m3u8的链接会默认是下载那个m3u8文件,有了插件则是播放。

(2)只有m3u8【文件】时
注意不要是“.local.index.m3u8”那种,否则你就像只拷贝出个快捷方式在另一台电脑上,详见(3)。

另外,视频如果挂了那也没辙,毕竟那只是存储在服务器的文件,不让访问就访问不了了。

用文本文档形式打开如果是 非本地的*.ts目录序列,注意还有一个坑,
是“M3U8批量下载器”教我的,叫做“相对链接”
在这里插入图片描述
下面截取一段那个m3u8片段

#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION:3
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-ALLOW-CACHE:YES
#EXTINF:3.000,
/amplify_video/1228050294535282694/vid/0/3000/1280x720/_x6v6S8Jhz5tpqhM.ts
#EXTINF:3.000,
/amplify_video/1228050294535282694/vid/3000/6000/1280x720/7mwaVhHeIYdjPn48.ts
#EXTINF:3.000,
/amplify_video/1228050294535282694/vid/6000/9000/1280x720/-vhJ_5vdtWcl2Yjk.ts

我发现里面的片段直接复制到地址栏写找不到,我寻思着这也能访问啊,为啥下载不了?还有啥猫腻?
于是我搜索了其中一段(如下链接),发现老外这个有个我没有的【前缀】啊!
https://superuser.com/questions/1033563/how-to-download-video-with-blob-url

在这里插入图片描述
↑于是我回来再找那个视频,发现确实有前缀,这就是“相对链接”报错的原因吧。然后我加上了标红的这段,合成了个链接

https://video.twimg.com/amplify_video/1228050294535282694/vid/6000/9000/1280x720/-vhJ_5vdtWcl2Yjk.ts

输入地址框,果然能下载了!ts单个片段也可以播放!
在这里插入图片描述

其他方式:百度一下并使用专用工具(挺多的,自己百度吧)

(3)有【m3u8文件】又有【全是*.ts文件(或者没有后缀名时)的文件夹】时
这种情况一般就是我们手机下载下来的形式,用qq浏览器和UC下载经常有这种格式,m3u8这是播放列表文件,一般只能看出几十KB大小,用普通播放器却不能正常播放,带着的文件夹貌似全是缓存却束手无策(我们保存的视频不能永远放在同一个手机上不动吧……)
直接打开

用文本编辑器打开m3u8文件(我用的是vscode),会发现几个标签和一大串地址序列,这和我们之前介绍的“索引地址”一致。

【摘自:https://www.jianshu.com/p/e97f6555a070】
标签的类型可分为五种类型:基础标签(Basic Tags),媒体片段类型标签(Media Segment Tags),媒体播放列表类型标签,主播放列表类型标签 和 播放列表类型标签。其具体内容如下所示:
基础标签(Basic Tags):可同时适用于媒体播放列表(Media Playlist)和主播放列表(Master Playlist)。具体标签如下:
EXTM3U:表明该文件是一个 m3u8 文件。每个 M3U 文件必须将该标签放置在第一行。
EXT-X-VERSION:表示 HLS 的协议版本号,该标签与流媒体的兼容性相关。该标签为全局作用域,使能整个 m3u8 文件;每个 m3u8 文件内最多只能出现一个该标签定义。如果 m3u8 文件不包含该标签,则默认为协议的第一个版本。
…………(详情请参照源链接)…………

在这里插入图片描述
我用文本方式打开m3u8发现是一串目录,估计是拷贝到电脑上由于绝对目录发生改变导致无法播放了,在vscode里用【编辑】->【替换】,将其换成现在所在的真正位置目录,然后保存,发现可以播放了!!!
在这里插入图片描述
文件夹里的【.index.m3u8】和【.local.index.m3u8】应该是对应于【网络索引】和【本地索引】,
将改过的m3u8文件无论放在哪,只要是里面索引的东西位置是对的就都能播放。(其实ts单个片段也可以播放,m3u8只是相当于一个“播放列表”,想合成一个就用二进制的方法拼接一下即可,详见后面的“已经下载好的m3u8格式怎么合并转换成其他格式”)

在这里插入图片描述
播放成功!但是是一段段的,每段就【几秒】,会按照【播放列表】顺序播放下去(上图就是【47段中的第12段在播放,文件名为11.ts的】)
想要进行合并可以往下翻到“已经下载好的m3u8格式怎么合并转换成其他格式”那一节。

3.网页上是m3u8的源怎么下载成其他格式保存

(1)M3U8 Downloader:M3U8下载器 - Chrome插件

(2)GetThemAll - Chrome插件
这个插件获取各种王爷资源十分好用,图片支持批量打包成zip,视频也能抓到源链接,遇到m3u8文件也可以进行【录制】——点击【start record】等几秒之后就会弹出保存MP4文件的提示了(注意要验一下,有时候只录制了一部分)
在这里插入图片描述

4.网页上视频是m3u8的格式怎么直接下载

(1)一般是手机uc的视频缓存,这个我就不做解释了,视频播放时有个缓存箭头,然后在“已缓存”中找到并播放,不多讲了。

(2)播放完一整段后,网络设置,查看缓存……或者f12啊啥的找呗,这段以后再补……

5.已经下载好的m3u8格式怎么合并转换成其他格式(以MP4为例)

https://jingyan.baidu.com/article/00a07f380cd30f82d128dc4f.html
其中的关键命令行是

copy /b 0+1+2+3 new.ts

新建文本,输入相应的内容,然后保存,将文本文档后缀改成bat格式。打开即可将目录下的ts文件以二进制顺序合并为new.ts文件。

根据m3u8生成内容的序列(利用原序列)

百度经验那位提供的方法是用excel制表然后合成文本,我寻思,何不直接借助m3u8文件这个“播放列表”直接生成合并文本?
┏ (゜ω゜)=☞来,说干就干。
在这里插入图片描述
↑首先打开一个m3u8文件,发现简单的查找-替换是不行的,因为每行前的标签都不一样,于是我想到了正则表达式(vscode是支持正则匹配寻找的,文本文档不行……)
感谢这位老哥:正则表达式匹配两个特殊字符中间的内容

匹配两个字符串A与B中间的字符串包含A与B: 
表达式: A.*?B(“.“表示任意字符,“?”表示匹配0个或多个) 

于是为了匹配所有“#”和“,”之间的内容,正则表达式这么写

#.*?,

执行之后贼爽,全干净了
在这里插入图片描述
然后把那个长长的前缀查找-替换成“+”
在这里插入图片描述
注意,在命令行里换行就直接算执行了,我们需要把他们首尾相接去掉换行符(记得把最开始那几个头标签删掉)
在这里插入图片描述
这样就生成了我们需要的形式,处理完复制出来,粘到命令行后面再回车即可
总结一下:去不重复的标签、去前缀、去换行符。

执行一下:
在具体文件处呼出Powershell
在这里插入图片描述
先输入cmd换成命令行,否则不管用,【命令行】和【powershell】有些差别不能当做同一个工具来用

在这里插入图片描述

然后把命令输入(复制索引时不要把回车粘上,否则会当作已经输入完毕),执行。

重命名内容后根据以往做好的列表(改文件名)
另一种方法就是将文件改名:全选,右键第一个,重命名。这样会按照当前排序顺序命名,然后用你之前做好的长列表截取需要的一段当做中间的索引也可以。

还有直接使用工具的方法:
如何快速把多个ts转去mp4格式 - 无需安装

6.其他

网上的“m3u8视频下载合并工具”不一而足,在这里也不多加介绍了
其中很多工具都是基于Ffmpeg做成的:http://ffmpeg.org/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

总结一下m3u8格式相关问题 的相关文章

  • discuz 配置https

    下面我就不同版本来给大家讲解下如何修改源文件来支持https discuz X2 0 x2 0的版本用的人不多了 但我这里还是提供一份X2 0的https改造教程 https www aitiancheng com article 550
  • Dart

    Dart 是一种跨平台的客户端开发语言 具有专门为客户端优化 高生产力 快速高效 可移植易学的风格 Dart主要由Google负责开发和维护 构造函数 命名构造函数 默认构造函数 私有属性需要加 并且是单独的文件才可以 也可以通过公员有方法
  • gcc编译过程理解

    GNU CC 通常称为GCC 是GNU项目的编译器 它能够编译C C 语言编写的程序 使用gcc 程序员可以对编译过程有更多的控制 编译过程分为3个阶段 预处理 汇编 链接 程序员可以再编译的任何阶段结束后停止整个编译过程以检查编译器在该阶
  • Jetpack学习之Room

    Android采用sqlite作为数据库存储 Room就是Google推出的自己的ORM Object Relational Mapping Room的架构图 Entity 一个Entity对应于数据库中的一张表 Entity类是Sqlit
  • ipconfig不是内部或外部命令

    打开控制面板 系统和安全 系统 高级系统设置 环境变量 末尾加分号和c windows system32 确定后打开cmd ipconfig
  • STM32F4xx keil点击debug弹出 cannot access memory 问题

    试了网上的很多方法还是没有解决 后来点开Options for Target 将所有的设置Defaults 除了头文件包含 驱动选项 然后在重新设置 点击Debug就可以进入了 原因不明 其他问题是否可以解决暂不知 其他相关问题解决见下面网
  • 深度学习中,CPU、GPU、NPU、FPGA如何发挥优势?

    随着AI的广泛应用 深度学习已成为当前AI研究和运用的主流方式 面对海量数据的并行运算 AI对于算力的要求不断提升 对硬件的运算速度及功耗提出了更高的要求 目前 除通用CPU外 作为硬件加速的GPU NPU FPGA等一些芯片处理器在深度学
  • MySQL的启动问题 (ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO))

    2011 03 18 wcdj 解决方法如下 1 打开mysql的服务 因为我当时安装选择的手动启动 2 将mysql安装的bin目录添加到系统PATH环境变量里 用 分号 分割 3 然后打开cmd 键入命令 mysql u 用户名 p 密
  • vue和thymeleaf相结合的注意事项

    Thymeleaf是一个现代的服务器端Java模板引擎 适用于Web和独立环境 能够处理HTML XML JavaScript CSS甚至纯文本 1 html模板页面中需要加入如下代码 2 script需要增加标签
  • [ MySQL ] — 常见函数的使用

    目录 日期函数 current date 获取当前日期 current time 获取当前时间 current timestamp 获取当前时间戳 date 获取参数的日期部分 编辑 date add 在日期或时间的基础上进行增加 date
  • python期末考试之判断题(含部分解析)

    列表对象的排序方法sort 只能按元素从小到大排列 不支持别的排序方式 X sort方法可升序 可降序 形参可以看做是函数内部的局部变量 函数运行结束之后形参就不可访问了 一个函数如果带有默认值参数 那么必须所有参数都设置默认值 表达式 a
  • 全连接神经网络实现MNIST手写数字识别

    在对全连接神经网络的基本知识 全连接神经网络详解 学习之后 通过MNIST手写数字识别这个小项目来学习如何实现全连接神经网络 MNIST数据集 对于深度学习的任何项目来说 数据集是其中最为关键的部分 MNIST数据集是美国国家标准与技术研究
  • 云计算的三个主要服务模型:IaaS、PaaS 和 SaaS

    文章目录 介绍 基础设施即服务 Infrastructure as a Service IaaS 平台即服务 Platform as a Service PaaS 软件即服务 Software as a Service SaaS 区别 基础
  • 物理服务器、虚拟服务器、虚拟主机、云服务器的区别

    物理服务器 一台实实在在物理机 服务器性能和稳定性比普通PC强 但是价格昂贵 一般有钱的大佬才会使用独立的物理服务器 就是需要自己实实在在买一台设备放在那里 性能强 但是无论用还是不用 机器和网络等成本都在那里 虚拟专用服务器 Virtua
  • 2021年计算机保研-假211真双非三无的失败保研经历(武大/复旦/计算所/华科/同济/上交)

    从知乎 吵鸡凶鸭OvO转过来啦 文章目录 一 个人情况 二 投递情况 1 夏令营 2 预推免 3 前车之鉴 三 复试经历 1 武汉大学 测绘遥感信息工程国家重点实验室 2 复旦大学 工程与应用技术研究院 3 中科院计算所 网络数据科学实验室
  • Linux的远程访问操作遇到的问题

    1 使用命令 ifconfig出现错误 原因是没有安装相关工具 输入命令sudo apt install net tools 提示为E 无法下载 http dk archive ubantu com ubantu dists xenial
  • 【通览一百个大模型】UL2(Google)

    通览一百个大模型 UL2 Google 作者 王嘉宁 本文章内容为转载或整理 仓库链接 https github com wjn1996 LLMs NLP Algo 订阅专栏 大模型 NLP 算法 可获得博主多年积累的全部NLP 大模型和算
  • mysql中的declare_sql中declare是什么意思

    展开全部 sql中declare是声明的意思32313133353236313431303231363533e58685e5aeb931333365653236 就是声明变量的 这个一般是用在函数和存储过程中的 比如说 这个存储过程是 只要

随机推荐

  • python数组的操作(访问)

    Python 自带的list print python自带的list集合 list1 list range 20 print list1 list2 list1 1 10 2 从开始下标1开始截取 下标到10结束 间隔2个 print li
  • 快速创建ES集群

    win10 中docker 设置 快速创建集群 访问 官网 elasticsearch docs reference setup install docker at main elastic elasticsearch GitHub 负责上
  • 上海控安成功举办普陀区科普创新专项智能网联车学术活动

    12月25日 由上海控安主办的上海市普陀区科普创新专项 智能网联汽车不神秘 学术交流活动顺利举办 活动现场座无虚席 齐聚汽车从业人员 汽车爱好者 青年学生近百人 共同探究未来汽车产业的变革 普陀区科委相关代表列席活动 上海工程技术大学电子电
  • Python学习基础系列----了解python

    了解python 1 了解Python Python是一种解释型 这意味着开发过程中没有了编译这个环节 面向对象 支持面向对象的风格或代码封装在对象的编程技术 动态数据类型的交互式 可在命令行中通过Python提示符及直接代码执行程序 高级
  • MATLAB 正则表达式

    MATLAB 正则表达式 文章目录 MATLAB 正则表达式 与正则表达式相关的函数 regexp 用法 输出类型 如何构建 exp 元字符 字符转义 重复限定符 重复限定符的三种模式 分组运算符 锚点 选项 option 例子 与正则表达
  • JS求数组中最大值

    法一 function getArrMax arr var max arr 0 for var i 1 i lt arr length i if arr i gt max max arr i return max getArrMax 1 2
  • angular总结-my

    angular知识点 1 Component 装饰器 这表明它下面的类是一个组件 它提供了有关该组件的元数据 包括它的模板 样式和选择器 在 Component 的元数据中指定的样式只会对该组件的模板生效 2 Angular 只会绑定到组件
  • sideload刷机

    官方Recovery自带了sideload刷机选项 方便了手机出故障的机友自行恢复 转载请标明出处IUNI官方论坛 bbs iunios com http bbs iunios com thread 28244 1 1 html 一 刷前准
  • [Python图像处理] 二十四.图像特效处理之毛玻璃、浮雕和油漆特效

    该系列文章是讲解Python OpenCV图像处理知识 前期主要讲解图像入门 OpenCV基础用法 中期讲解图像处理的各种算法 包括图像锐化算子 图像增强技术 图像分割等 后期结合深度学习研究图像识别 图像分类应用 希望文章对您有所帮助 如
  • Python Web系列学习3-Tornado

    1 Tornado常被用作大型站点的接口服务框架 协程是Tornado推荐的编程方式 Tornado集成了丰富的用户身份验证功能 2 同步I O可以理解为被调用的I O函数会阻塞调用函数的执行 而异步I O则不会 tornado httpc
  • 【python爬虫】js逆向分析及AES解密

    一 原理简述 1 首先查看需要获取的数据即热门评论是否在源代码中 如果在源代码中就可以直接xpath等方式进行抓取 2 但是发现在网页和框架源代码里面都无法搜到评论内容 此时 使用网络抓包工具即 查看network中的XHD 在js代码中
  • vue2 vue3父子组件传参

    vue3 父子组件传参 父组件
  • Chatgpt私有化部署(全流程)

    前言 当下使用chatgpt来帮助完成工作已然成为主流 但想访问必须先面对地区的封锁 所以使用openai官方提供的API来部署至本地服务器从而更加便利的使用chatgpt 本文章主要介绍如何部署私有聊天机器人 条件准备 公网服务器一台 可
  • Unity 屏幕坐标鼠位置 Input.mousePosition 转为UI物体的坐标

    方式一 使用 RectTransformUtility ScreenPointToLocalPointInRectangle
  • [1158]微信小程序字段配置

    文章目录 微信小程序之permission字段 微信开发者工具 project config json配置详情 项目配置文件 一级字段 compileType setting useCompilerPlugins babelSetting
  • django连接mysql数据库报错_Django 连接 MySQL 数据库及常见报错解决

    Django 连接 MySQL数据库及常见报错解决 MySQL 的安装以及设置远程访问权限 不属于本笔记的重点 此处不做多余赘述 前提 MySQL 安装成功 且已配置远程访问权限 如在本地测试的忽略此项 终端或者数据库管理工具连接 MySQ
  • pyinstaller打包 .py 文件为可执行的 .exe程序

    有疑问的地方 参考博文 一 环境搭建 Python GUI图形化小工具编程学习 PySide2 环境搭建 一 二 实例演示 Python GUI图形化小工具编程学习 Demo 实例演示 二 三 打包失败 pyinstall 打包 exe 文
  • 利用huggingface-transformers进行命名实体识别

    利用huggingface transformers进行命名实体识别 项目地址 https github com huggingface transformers 文档地址 https huggingface co docs transfo
  • linux /home recovering journal,启动Ubuntu时出现 /dev/sda2 clean 和 /dev/sda2 recovering journal 现象的解决办法...

    最近在Ubuntu 18 4上安装Nvidia显卡后 显卡似乎总是不能完全兼容 第一次出现问题时 是登录账号后 发现系统采用了默认显卡驱动 而已装过的显卡驱动则有损坏导致无法使用 第二次出现问题时 则是在开机启动后 界面出现了 dev sd
  • 总结一下m3u8格式相关问题

    1 m3u8格式解读 本小节摘自 m3u8视频文件详解 m3u8不是一种视频格式 而是一种纯文本文件 m3u8视频文件格式中 存放了视频的基本信息 和 分段视频的索引地址 将一整个视频分成了时长不同的很多小段 当播放m3u8视频时 就是按顺