ffmpeg合并M3U8加密的视频 ts 合并为 mp4
文章引用于 ffmpeg 合并 m3u8 ts key 文件 解决 Invalid data found when 错误
之前也写过一篇文章,使用
ffmpeg下载 M3U8 资源的视频。今天接着来拓展一下这个下载视频
寻找资源
要想下载 M3U8 的资源,最起码得找到下载的链接,可能这个非常好找了,找到控制台的 NetWork 查看请求就行了。
可是这有一点非常不好的就是,使用 ffmpeg 去下载,只能一个个资源去请求,并且非常慢,经常还有可能请求失败(资源是可以访问到的,可是 ffmpeg 就卡住了)
解决方案:chrome 插件 猫抓
当他嗅探到资源后,就会都列出来
而我通常用 IDM 把列出的资源一下子都下载下来
资源合并为 mp4
留意上面的图,这段 m3u8 是一个 key 的文件,就是加密的文件。还好 ffmpeg 可以自动识别 key 文件并且解密文件,可是这一步有点曲折
我们先把 m3u8 的源文件下载下来,把 ts 文件都下载好,放在同一个文件夹
然后打开 m3u8 文件,找到 key.key 的配置,改为线上的 key,而不是读取本地的 key 。虽然我到现在也没搞懂这是为什么~
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:4
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=AES-128,URI="https://xxxx/key.key" # 注意URI这里,改成线上的key的域名链接
#EXTINF:3.336667,
#EXTINF:1.668333,
clvHz13123499.ts
#EXTINF:2.035367,
clvHz13123500.ts
#EXT-X-ENDLIST
解密文件,合并 ts 为 mp4
使用命令
ffmpeg -allowed_extensions ALL -protocol_whitelist "file,http,crypto,tcp" -i index.m3u8 -c copy out.mp4
运行后可能会发现报错:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bDBHgbsD-1582468013614)(https://raw.githubusercontent.com/Jioho/img/master/ffmpeg/20200223222320.png)]
看到这个错误其实只需要在 protocol_whitelist 后面补上https。后面报错提示什么就补上什么,因为对应的 m3u8 需要这几种下载方式
于是命令改成如下:
ffmpeg -allowed_extensions ALL -protocol_whitelist "file,http,crypto,tcp,https" -i index.m3u8 -c copy out.mp4
如果还发现报错是:Invalid data found when 这样的,就是因为你的 key 没有改成线上域名的 key,改了重新试下就行了
然后发现 ffmpeg 合并的飞快,比起直接用 ffmpeg 下载快多了!
智能推荐
html5拖放--15行js代码实现两个div内容互换
本文首发于我的个人博客:http://cherryblog.site/ ,欢迎大家前去参观 本文项目地址,sortable插件地址:https://github.com/sunshine940326/sortable demo地址:https://github.com/sunshine940326/drag 在写我们后台的管理程序中需要有一个拖放的功能,然后我们有一个这样的功能,实现11个固定且大...
git切换分支报错,不管什么标题名字,都报非法字符,所以就不起名字了。
切换分支的时候,报了标题这么个错误,error: ”xxx did not match any file(s) known to git. 看见不能切换分支,我首先 git status 查看了一下当前状态,如下图 然后,就会发现,其实我的这个错误非常明显,就是在我的 beat 分支下有文件修改,所以切换不了。ok,解决方法: 1. 如果修改的这些文件没什么用,完全可以删除。(我这儿的...
Oracle分析函数之LEAD和LAG实际应用
Oracle分析函数之LEAD和LAG实际应用 在前几天的工作中按照客户的需求,需要对客户信息进行数据分析,即某人存在多个状态的账号,将客户信息账号状态分析出结果,和客户确认汇报,根据保留规则,保留唯一账号,以保证程序可用性。起初,根据聚合函数进行查询分析,需要写一大串的SQL,即不美观又复杂,很容易产生错误。后续想到Oracle分析函数中的lead和lag,SQL简洁了很多且容易产生报告数据。 ...
小知识积累(不断更新中)
判断变量的类型(数组,对象) tyopof:不推荐,因为无法区别数组与对象,数组是对象的子对象 instanceof:可以使用 还可以用来判断是否属于函数 Object.prototype.toString.call():最兼容,推荐使用 定时器的执行顺序或机制 js是单线程的,浏览器遇到setTimeout或者setInterval会把定时器推入浏览器的待执行事件队列里面但是不执行,先执行完当前...
猜你喜欢
ROS自学实践(6):ROS进行激光SLAM建图——gmapping
本节主要记录运行ROS自带的SLAM建模包gmapping方法,为后续理解这些代码,建立自己的SLAM算法打下基础。 基于粒子滤波算法 二维栅格地图 需要里程计信息 1.通过命令行安装gmapping包 2.配置gmapping节点 3.运行gazebo模型及gmapping节点 4.打开rviz 添加laserscan、map、robotmodel模型 5.移动小车,建立模型 6.保存当前地图 ...
face-api.js中加入MTCNN:进一步支持使用JS实时进行人脸跟踪和识别
如果你现在正在阅读这篇文章,那么你可能已经阅读了我的介绍文章(JS使用者福音:在浏览器中运行人脸识别)或者之前使用过face-api.js。如果你还没有听说过face-api.js,我建议你先阅读介绍文章再回来阅读本文。 和往常一样,本文中为你准备了一个代码示例。我们将解析一个小的应用程序,这个程序将在浏览器中访问摄像头图像执行实时人脸检测和人脸识别,让我们开始吧! 使用face-api.js进行...
Centos yum安装tomcat8 (阿里云的端口坑!!!)
1.官网下载上传至服务器并解压 2.将解压下来的文件移动到自己的目录下 3.进入tomcat 的bin目录启动服务 4.配置 5.阿里云的端口 阿里云服务器 阿里云控制台打开端口:...
idea springboot项目热更新
前言 在项目开发过程中,常常会改动页面数据或者修改数据结构,为了显示改动效果,往往需要重启应用查看改变效果。这种开发体验无疑是很差的,Springboot为我们提供了devtools来帮助我们实现热更新。 使用springboot提供的spring-boot-devtools 添加devtools依赖 springboot maven插件配置 application.properties配置 启动...
JavaScript中Map和ForEach的区别
译者按: 惯用Haskell的我更爱map。 原文: JavaScript — Map vs. ForEach - What’s the difference between Map and ForEach in JavaScript? 译者: Fundebug 为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于学习。 如果你已经有使用JavaSc...
