下载m3u8
sudo ffmpeg -i https://xxx.xxx.com/xxx/index.m3u8 -c copy output.mp4
合并文件
先将文件转换成mpg格式:
sudo ffmpeg -i 1.mp4 -qscale 4 1.mpg
sudo ffmpeg -i 2.mp4 -qscale 4 2.mpg
在合并文件:
sudo ffmpeg -i "concat:1.mpg|2.mpg" -c copy output.mpg
再将mpg格式转换回mp4:
sudo ffmpeg -i output.mpg -y -qscale 0 -vcodec libx264 output.mp4
更优的合并方案
上述方案有缺点,速度过慢,且合并文件太大,也可以采用下面的方案
先将文件转换成ts格式:
sudo ffmpeg -i 1.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 1.ts
sudo ffmpeg -i 2.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 2.ts
合并文件同时转换成mp4:
ffmpeg -i "concat:1.ts|2.ts" -acodec copy -vcodec copy -absf aac_adtstoasc output.mp4
给视频加黑边
sudo ffmpeg -i invideo.mpg -vf pad=width:height:x:y:black output.mpg
- width: 输出的视频的宽
- height: 输出的视频的高
- x: 输入视频的左上角点的位置的x轴
- y: 输入视频的左上角点的位置的y轴
ffmpeg常用命令行参数解释
-c:指定编码器
-c copy:直接复制,不经过重新编码(这样比较快)
-c:v:指定视频编码器
-c:a:指定音频编码器
-i:指定输入文件
-an:去除音频流
-vn: 去除视频流
-preset:指定输出的视频质量,会影响文件的生成速度,有以下几个可用的值 ultrafast, superfast,
veryfast, faster, fast, medium, slow, slower, veryslow。-y:不经过确认,输出时直接覆盖同名文件。
ffmpeg常用命令
查看文件的元信息:
ffmpeg -i input.mp4 [-hide_banner]
,加上-hide_banner
可以去掉冗余信息转换编码格式:
ffmpeg -i [input.file] -c:v libx264 output.mp4
(转换成264编码)ffmpeg -i [input.file] -c:v libx265 output.mp4
(转换成265编码)转换容器格式:
ffmpeg -i input.mp4 -c copy output.webm
(只是转一下容器,内部的编码格式不变,所以使用-c copy指定直接拷贝,不经过转码,这样比较快)调整码率:
1
2
3
4ffmpeg \
-i input.mp4 \
-minrate 964K -maxrate 3856K -bufsize 2000K \
output.mp4指定码率最小为964K,最大为3856K,缓冲区大小为 2000K
改变分辨率:
1
2
3
4ffmpeg \
-i input.mp4 \
-vf scale=480:-1 \
output.mp4从 1080p 转为 480p
提取音频:
1
2
3
4ffmpeg \
-i input.mp4 \
-vn -c:a copy \
output.aac-vn表示去掉视频,-c:a copy表示不改变音频编码,直接拷贝
添加音轨:(将外部音频加入视频,比如添加背景音乐或旁白)
1
2
3ffmpeg \
-i input.aac -i input.mp4 \
output.mp4截图:
1
2
3
4
5ffmpeg \
-y \
-i input.mp4 \
-ss 00:01:24 -t 00:00:01 \
output_%3d.jpg从指定时间开始,连续对1秒钟的视频进行截图
1
2
3
4
5ffmpeg \
-ss 01:23:45 \
-i input \
-vframes 1 -q:v 2 \
output.jpg(指定只截取一帧,-vframes 1指定只截取一帧,-q:v 2表示输出的图片质量,一般是1到5之间,1为质量最高)
裁剪:(截取原始视频里面的一个片段,输出为一个新视频)
1
2ffmpeg -ss [start] -i [input] -t [duration] -c copy [output]
ffmpeg -ss [start] -i [input] -to [end] -c copy [output]可以指定开始时间(start)和持续时间(duration),也可以指定结束时间(end)
为音频添加封面:
1
2
3
4
5ffmpeg \
-loop 1 \
-i cover.jpg -i input.mp3 \
-c:v libx264 -c:a aac -b:a 192k -shortest \
output.mp4有两个输入文件,一个是封面图片cover.jpg,另一个是音频文件input.mp3。-loop 1参数表示图片无限循环,-shortest参数表示音频文件结束,输出视频就结束