网页在线视频下载教程(m3u8格式介绍及下载教程)「建议收藏」

简介:m3u8文件是苹果公司使用的HTTPLiveStreaming(HLS)协议格式的基础。HLS是新一代流媒体传输协议,其基本实现原理为将一个大的媒体文件进行分片,将该分片文件资源路径记录与m3u8文件(即playlist)内,其中附带一些额外描述(比如该资源的多带宽信息等…)用于提供给客户端。客户端依据该m3u8文件可获取对应的媒体资源,进行播放。因此,客户端获取HLS流文件,主…

大家好,又见面了,我是你们的朋友全栈君。

简介:

m3u8文件是苹果公司使用的HTTP Live Streaming(HLS)协议格式的基础。HLS是新一代流媒体传输协议,其基本实现原理为将一个大的媒体文件进行分片,将该分片文件资源路径记录与m3u8文件(即playlist)内,其中附带一些额外描述(比如该资源的多带宽信息等…)用于提供给客户端。客户端依据该m3u8文件可获取对应的媒体资源,进行播放。因此,客户端获取HLS流文件,主要是对m3u8文件进行解析操作。

m3u8文件实质是一个播放列表(playlist),其可能是一个媒体播放列表(Media Playlist),或者是一个主列表(Master Playlist)。但无论是哪种播放列表,其内部文字使用的都是utf-8编码。

(1)当m3u8文件作为媒体播放列表(Media Playlist)时,其内部信息记录的是一系列媒体片段资源,顺序播放该片段资源,即可完整展示多媒体资源。其格式如下所示:

#EXTM3U
#EXT-X-TARGETDURATION:10

#EXTINF:9.009,
http://media.example.com/first.ts
#EXTINF:9.009,
http://media.example.com/second.ts
#EXTINF:3.003,
http://media.example.com/third.ts

对于点播来说,客户端只需要顺序下载上述片段资源,依次进行播放即可。而对于直播来说,客户端需要定时重新请求该m3u8文件,看下是否有新的片段数据需要进行下载并播放。

(2)当m3u8作为主播放列表(Master Playlist)时,其内部提供的是同一份媒体资源的多份流列表资源(Variant Stream)。其格式如下所示:

#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=150000,RESOLUTION=416x234,CODECS="avc1.42e00a,mp4a.40.2"
http://example.com/low/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=240000,RESOLUTION=416x234,CODECS="avc1.42e00a,mp4a.40.2"
http://example.com/lo_mid/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=440000,RESOLUTION=416x234,CODECS="avc1.42e00a,mp4a.40.2"
http://example.com/hi_mid/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=640000,RESOLUTION=640x360,CODECS="avc1.42e00a,mp4a.40.2"
http://example.com/high/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=64000,CODECS="mp4a.40.5"
http://example.com/audio/index.m3u8

该备用流资源制定了多种不同的码率,不同格式的媒体播放列表,并且,该备用流资源也可同时提供不同版本的资源内容,比如不同语言的音频文件,不同角度拍摄的视频文件等等。客户可以根据不同的网络状态选取合适码率的资源,并且最好根据用户喜好选择合适的资源码率。

教程:

我们在用网页观看在线视频时,很多视频是不提供下载接口的,并且使用google强大的插件都无济于事,这里提供使用m3u8格式来破解并下载视频的教程。

目标:下载某在线网页的电视剧《风筝》第五集,视频链接为:https://www.wandouys.com/video/play/35616-4-5.html

网页在线视频下载教程(m3u8格式介绍及下载教程)「建议收藏」

步骤一:目前使用Google浏览器,按F12进入开发者模式,打开Network,并刷新,找到这个视频的m3u8文件,双击即可下载。如图所示:

网页在线视频下载教程(m3u8格式介绍及下载教程)「建议收藏」

用记事本打开下载好的playlist.m3u8文件,这里面保存着把各个被分段之后的视频的排序,此处媒体片段的路径采用了相对路径表示。如图所示:

网页在线视频下载教程(m3u8格式介绍及下载教程)「建议收藏」

为了后续下载方便,需要把相对路径转化为绝对路径。这里我们选取其中的一个媒体片段,点击媒体片段out001.ts,右侧Headers栏会显示出当前选取的媒体片段的绝对路径。如图所示:

网页在线视频下载教程(m3u8格式介绍及下载教程)「建议收藏」

复制该绝对地址,并对刚刚下载好的m3u8文件中的相对路径进行替换。如图所示:

网页在线视频下载教程(m3u8格式介绍及下载教程)「建议收藏」

至此,替换m3u8文件完成,接下在的任务就是下载这些媒体文件了。

步骤二:下载并安装IDM软件,这里使用Internet Download Manager(IDM) v6.25.24 绿色汉化特别破解注册版.zip,解压即可,稍后将上传该压缩包。软件效果如图所示:

网页在线视频下载教程(m3u8格式介绍及下载教程)「建议收藏」

使用记事本打开修改好的m3u8文件,全选替换好的m3u8文件,在IDM中,选择“任务”——->“”从剪切板中添加批量下载”,即可弹出需要下载的视频列表,如图所示:

网页在线视频下载教程(m3u8格式介绍及下载教程)「建议收藏」

选择文件保存目录,并点击“确定”,即可开始下载。如图所示:

网页在线视频下载教程(m3u8格式介绍及下载教程)「建议收藏」

步骤三:使用格式工厂,将下载好的ts文件合并,并转码为mp4格式。即可得到该网页视频文件。如图所示:

网页在线视频下载教程(m3u8格式介绍及下载教程)「建议收藏」

 

 

 

 

 

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/124883.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • linux内核移植步骤「建议收藏」

    linux内核移植步骤「建议收藏」2016.6.8经过一个多星期的内核折磨,今天终于可以写下自己移植内核的一些心得,网上有很多博客论坛都有谈到,但是这些又说的方式有些模糊,这里我综合的几个博客在重新说下内核替换编译的步骤、以及如何更新启动项grub。替换linux的内核一共有两种方式,第一种方式是下载官方kernel提供的源码包,进行编译替换;第二种直接下载内核安装包deb,进行升级替换。下面分别从这两种方式进行一个说明:…

  • 理解的英文_iaas saas paas daas区别

    理解的英文_iaas saas paas daas区别云服务只是一个统称,可以分成三大类。IaaS:基础设施服务,Infrastructure-as-a-servicePaaS:平台服务,Platform-as-a-serviceSaaS:软件服务

  • vim鼠标模式打开与关闭

    vim鼠标模式打开与关闭

  • UML图中类之间的关系:依赖,关联,聚合,组合,泛化,实现

    UML图中类之间的关系:依赖,关联,聚合,组合,泛化,实现类与类图1)类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。2)在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要完成什么样的功能,要承担什么样的义务。一个类可以有多种职责,设计得好的类一般只有一种职责,在定义类的时候,将类的职责分解成为类的属性和操作(即方法)。3)类的属性即类的数据职责,类的操作即类的行……

  • AcceptEx浅析

    AcceptEx浅析AcceptEx函数的定义如下:BOOLAcceptEx(  SOCKETsListenSocket,       SOCKETsAcceptSocket,       PVOIDlpOutputBuffer,       DWORDdwReceiveDataLength,   DWORDdwLocalAddressLength,   DW

  • JAVA枚举类型(Enum)的使用[通俗易懂]

    JAVA枚举类型(Enum)的使用[通俗易懂]在现实社会中,有些类的实例对象是固定的。例如季节,只有春夏秋冬。如果你创建了一个season类,你当然有义务维护这个类的实例对象只能是春(SPRING)、夏(SUMMER)、秋(AUTUMN)、冬(WINTER)这四个。这个时候就体现出枚举类的作用了,java中枚举类型就是针对这样的场景需求所设计的。/***枚举类的后缀建议为Enum,枚举类型的实例对象建议全大写(这样做符合JAVA的…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号