关于FFmpeg的安装使用(m3u8转码MP4)

前几天直接从网页下载视频,但是发现用迅雷下来的都是一堆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登录啊、加密的问题啊,还没遇到我就不管了,遇到再去解决

相关推荐
Chars-D8 小时前
FFmpeg源码深度剖析:架构、模块与转码流水线
架构·ffmpeg
·云扬·17 小时前
【MySQL】实战:用pt-table-sync修复主从数据一致性问题
数据库·mysql·ffmpeg
Hello.Reader1 天前
一堆 `.ts` 分片合并后音画不同步?从问题定位到通用修复脚本的完整实战
python·ffmpeg·视频
山栀shanzhi1 天前
FFmpeg 实战:RGB 裸流编码成 MP4,全流程详解(含源码
c++·ffmpeg
kuinnebula2 天前
FFmpeg基础
ffmpeg
这辈子谁会真的心疼你2 天前
怎样让所有mp3声音大小一样?统一声音的两个方法
人工智能·ffmpeg·音视频
landihao2 天前
ffmpeg推流的个别错误和图片压缩视频
ffmpeg·音视频
神秘剑客_CN2 天前
使用ffmpeg+python实现自动给视频添加移动水印
python·ffmpeg·音视频
琪伦的工具库3 天前
批量视频根据参数重命名工具使用指南
ffmpeg·音视频