当前位置: 首页 > news >正文

网页视频流m3u8/ts视频下载

现在很多视频网站播放流视频,都不是采用mp4/flv文件直接播放,而是采用m3u8/ts这种方式播放。

简单说就是,网站后台把视频切片成成百上千个xx.ts文件,一般10秒一个,每个都几百kb很小。然后通过xx.m3u8播放列表把这些文件连接起来。

通过Chrome DevTool的Network栏,我们可以清楚的看到加载过程:

image

我们直接点击这个playlist.m3u8播放列表文件,在旁边的preview栏中查看内容,可以看到:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:11
#EXTINF:5.250000,
out000.ts
#EXTINF:9.500000,
out001.ts
#EXTINF:8.375000,
out002.ts
#EXTINF:5.375000,
out003.ts
#EXTINF:9.000000,
out004.ts
...........

那我们怎么下载呢?

下载视频所有的ts切片文件

一般的思路是,想办法把所有的ts切片文件下载下来,然后合成一个完整的视频。
然而,配合xx.m3u8播放列表文件,我们可以直接用ffmpeg在线下载播放列表中所有的视频,然后直接用ffmpeg合并为一个视频。

我们就直接执行这一句命令即可:

$ ffmpeg -i <m3u8-path> -c copy OUTPUT.mp4
$ ffmpeg -i <m3u8-path> -vcodec copy -acodec copy OUTPUT.mp4

# 例如:
ffmpeg -i https://v6.438vip.com/2018/10/17/3JAHPTdvPhQb9LrE/playlist.m3u8 -c copy  OUTPUT.mp4

然后就会看到这样的下载过程:

image

为什么下载播放列表就能下载所有的切片文件?
因为播放列表里的都是相对路径,既然我们有了播放列表的绝对路径,那么其它所有文件的绝对路径也就不难获取了。
好在ffmpeg直接实现了这种播放列表一键下载的方式。

相关文章:

  • OS开发基础——多线程的简单应用
  • 阿里云ACE认证学习知识点梳理
  • 二、flask配置与应用-flask
  • Linux下的计算器(bc、expr、dc、echo、awk)知多少?
  • CH2601 电路维修(双端队列bfs)建图恶心
  • 新书推荐|Windows黑客编程技术详解
  • 大主子表关联的性能优化方法
  • 5G一周热闻:华为夺联通5G大单,首张5G电话卡发放
  • einx 1.0 发布,golang 游戏服务器框架
  • “迁移策略+新容器运行时”应对有状态应用的冷热迁移挑战
  • 京东物流王梓晨:打造全栈团队,你要避开这些大坑
  • 解决Centos7 yum 出现could not retrieve mirrorlist 错误
  • [ajaxupload] - 上传文件同时附件参数值
  • 14DBCP连接池
  • 闭包,sync使用细节
  • php的引用
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • Android组件 - 收藏集 - 掘金
  • Create React App 使用
  • Docker 笔记(2):Dockerfile
  • Facebook AccountKit 接入的坑点
  • leetcode386. Lexicographical Numbers
  • LintCode 31. partitionArray 数组划分
  • Lucene解析 - 基本概念
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • nodejs实现webservice问题总结
  • Spark学习笔记之相关记录
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 大快搜索数据爬虫技术实例安装教学篇
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 配置 PM2 实现代码自动发布
  • 实战|智能家居行业移动应用性能分析
  • 使用权重正则化较少模型过拟合
  • 追踪解析 FutureTask 源码
  • 【干货分享】dos命令大全
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • # 数据结构
  • $$$$GB2312-80区位编码表$$$$
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (三)mysql_MYSQL(三)
  • (原)本想说脏话,奈何已放下
  • (转) Android中ViewStub组件使用
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)项目管理杂谈-我所期望的新人
  • (转载)CentOS查看系统信息|CentOS查看命令
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .NET/C# 使窗口永不获得焦点
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET基础篇——反射的奥妙