ffmpeg笔记
1. h264_mp4toannexb使用
h264有两种封装,
一种是annexb模式,传统模式,有startcode,SPS和PPS是在ES中,vlc里打开编码器信息中显示h264;
一种是mp4模式,一般mp4 ,mkv会有,没有startcode,SPS和PPS以及其它信息被封装在container中,每一个frame前面是这个frame的长度,vlc里打开编码器信息中显示avc1。
很多解码器只支持annexb这种模式,因此需要将mp4做转换
2. mp4转h264裸流
ffmpeg -i input.mp4 -vcodec h264 output.h264
3. h264转mp4
ffmpeg -i input.h264 -vcodec mpeg4 output.mp4
4.视频文件本身其实是一个容器(container),里面包括了视频和音频,也可能有字幕等其他内容
$ ffmpeg -formats 查看 FFmpeg 支持的容器
$ ffmpeg -codecs 查看 FFmpeg 支持的编码格式,视频编码和音频编码都在内 v[h264,h265,vp8,vp9,av1] a[mp3,aac]
$ ffmpeg -encoders v[libx264,nvenc,libx265,libvpx, libaom] a[libfdk-aac, aac]
5.FFmpeg 的命令行参数非常多,可以分成五个部分
$ ffmpeg {1} {2} -i {3} {4} {5}
全局参数
输入文件参数
输入文件
输出文件参数
输出文件
6.常用命令
-c:指定编码器-c copy:直接复制,不经过重新编码(这样比较快)
-c:v:指定视频编码器
-c:a:指定音频编码器
-i:指定输入文件
-an:去除音频流
-vn: 去除视频流
-preset:指定输出的视频质量,会影响文件的生成速度,有以下几个可用的值 ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow。-y:不经过确认,输出时直接覆盖同名文件。
$ ffmpeg -i input.mp4 #查看视频文件的元信息,比如编码格式和比特率
$ ffmpeg -i input.mp4 -hide_banner #-hide_banner参数,可以只显示元信息。
7.转换编码格式transcoding
$ ffmpeg -i [input.file] -c:v libx264 output.mp4 #一般使用编码器libx264,所以只需指定输出文件的视频编码器即可
$ ffmpeg -i [input.file] -c:v libx265 output.mp4 #转成 H.265 编码
8.转换容器格式transmuxing
$ ffmpeg -i input.mp4 -c copy output.webm #将视频文件从一种容器转到另一种容器
9.调整码率transrating$ ffmpeg -i input.mp4 -minrate 964K -maxrate 3856K -bufsize 2000K output.mp4
10.改变分辨率(transsizing)$ ffmpeg -i input.mp4 -vf scale=480:-1 output.mp4
11.提取音频(demuxing)$ ffmpeg -i input.mp4 -vn -c:a copy output.aac
12.添加音轨(muxing)$ ffmpeg -i input.aac -i input.mp4 output.mp4
13.截图$ ffmpeg -y -i input.mp4 -ss 00:01:24 -t 00:00:01 output_%3d.jpg
$ ffmpeg -ss 01:23:45 -i input -vframes 1 -q:v 2 output.jpg #可以指定只截取一帧,-vframes 1指定只截取一帧,-q:v 2表示输出的图片质量,一般是1到5之间(1 为质量最
14.裁剪(cutting)
$ ffmpeg -ss [start] -i [input] -t [duration] -c copy [output]
$ ffmpeg -ss [start] -i [input] -to [end] -c copy [output]
15.为音频添加封面
$ ffmpeg -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参数表示音频文件结束,输出视频就结束。