前几天直接从网页下载视频,但是发现用迅雷下来的都是一堆ts文件,于是看看有啥转码的
一开始使用格式工厂,但是一直失败...最后查了查发现ffmpeg最牛逼
记录一下
ffmpeg下载安装
去官网下载https://ffmpeg.org/download.html

记住不要下载最上面那个,那个是源码,我一开始也是下错了,选择自己的系统类型,反正window的就点那个编译好的

看到这个,直接下载那个zip就行,这里我查了一下那些后缀的意思,简单来说精简版就够用了,想要多功能就full,那个shared是给别人二次开发用的
| 版本 | 功能完整度 | 链接方式 | 体积 | 核心特点 | 适合人群 |
|---|---|---|---|---|---|
| essentials | 精简(日常够用) | 静态 | 最小 | 无冗余,启动快 | 普通用户、初学者 |
| full | 完整(全功能) | 静态 | 大 | 功能最全,单文件运行 | 专业用户、一步到位 |
| full-shared | 完整(全功能) | 动态 | 最大(exe 小,DLL 多) | 方便二次开发 | 软件开发者 |
| 7z 格式 | 同版本功能一致 | 同版本一致 | 更小 | 高压缩率 | 有解压工具的用户 |
| Zip 格式 | 同版本功能一致 | 同版本一致 | 更大 | 系统直接解压 | 不想装解压软件的用户 |
配置系统环境变量
找到你解压的文件夹的bin,然后复制一下,给到环境变量就行


然后随便打开命令行测试一下,命令能用就是ok
ffmpeg -version

参数使用
ffmpeg -i "你复制的完整m3u8地址" -c copy -bsf:a aac_adtstoasc 下载的视频.mp4
| 参数 | 作用 | 关键说明 |
|---|---|---|
-i "你的m3u8地址" |
指定输入的视频源 | 地址必须用英文双引号 "" 包裹 ,避免地址里的&、空格等特殊字符导致命令截断报错 |
-c copy |
音视频流无损直接复制 | 核心参数!不重新编码,下载速度拉满,画质完全无损,m3u8 的 H.264/H.265+AAC 编码都直接兼容 MP4 |
-bsf:a aac_adtstoasc |
音频格式适配 | 解决 TS 流转 MP4 时的音频兼容问题,避免出现「下载后没声音、无法播放」的问题 |
输出的视频名.mp4 |
最终保存的文件 | 可以自定义名字,比如电影.mp4,也可以写完整路径,比如D:\下载\我的视频.mp4 |
简单来说就是,直接把我上面的命令改一下,-i后面写网络地址,最后面改一个视频下载后的名字就行
如果感觉视频太大,或者想选择清晰度,那就把-c copy去掉就行
ps:这里我推荐,你直接在你要下载的目录cmd就行,不然还得去写输出视频的完整路径

下载之后,会出现一大堆日志,基本上就是把那些分散的m4s文件给组合起来


最后则会显示下载好的视频的信息,这里基本就是看时长就行了,时长不对就说明找错m3u8的网址了
网址获取
最简单就是打开你的视频网址,然后按F12,选择network,把选项勾上,并且点击禁止按钮(圆圈加一横)把内容先清空

然后一定不要关掉这个,直接切到网页,刷新一下,并且点击视频开始播放
接下来会出现一大堆东西,可能是广告,其他的元素图片那些

直接搜索m3u8,就可以筛选出来

一般是开始判断哪个是对的,正常来说,如果视频的话,最大的哪个一般就是,但是我们还是要点击看一下,可以看到我上面那个就是57.7kb是最大的,我们先点击试试

选择response,一般是有东西的,这里因为没有东西,所以我就没用这个去尝试下载了,直接选择第二大的

看参数,最简单的就是#EXTM3U标签,说明肯定是m3u8,不会错,那么接下来看其他的,都是不同分辨率的m3u8,那么用这个下载时肯定不会错的
直接转到header头信息,把地址复制过来下载就行

备用网址
主要网址不能用,那就尝试其他网址,我们看一下其他的是怎么样的

都是一些m4s,并且分辨率都不一样,所以如果主要的不行,就用这个下载也行
不同分辨率
当然你不想下载最高清的,也可以尝试网址里面的其他分辨率的
举个例子,这里面有4个分辨率,我想下载第一个那个

那么有两种方法,一种是手动拼接网址,看看header的前缀,然后把后面那一串替换上去,反正肯定有重复的,这里就是从/amplify_video后面不一样,直接替换上去

不推荐这一种,直接加参数是最好的,给命令加上-map p:x?
ffmpeg -i "你复制的完整m3u8地址" -map p:x? -c copy -bsf:a aac_adtstoasc 下载的视频.mp4
这里直接把x改成相应的数字,记住是从0开始算的,0就是第一条(480*270),要下载第几条就第几条就行
本地转换
因为我之前使用迅雷的网页视频下载,然后下载之后发现是一个m3u8外加一大堆ts文件,所以才用这个,但是已经下载好了,也可以直接使用这个来转换
目录大概是这样,这里我就用一个小的来示范了


查看m3u8文件
这个文件主要就是定位,那些ts才是视频文件,所以我们得先看看定位有没有问题,直接记事本打开m3u8

密钥就是那个0.map,然后碎片位置也是对的,在index里面,那么我们就不用去换位置了,一般来说迅雷这个下载都会给我们弄好
如果有问题,再手动换位置就行
执行
ffmpeg -i index.m3u8 -c copy -bsf:a aac_adtstoasc 完整视频.mp4
推荐也是直接再m3u8文件目录cmd,这样不用去写路径了,直接转换(每个人文件名字不一样,自己替换)

直接报错,查了一下是因为FFmpeg 的安全机制拦截了.map文件, 所以我们得加一个参数让他读取,加一个参数**-allowed_extensions ALL**
ffmpeg -allowed_extensions ALL -i index.m3u8 -c copy -bsf:a aac_adtstoasc 完整视频.mp4


没有报错,直接搞定
我是推荐直接下载好,不然你还得去多下载一次再来转换,多此一举啊!
至于据说有一些问题,说啥头文件啊、cookies登录啊、加密的问题啊,还没遇到我就不管了,遇到再去解决