ffmpeg常用命令(获取视频缩略图等)
截取视频生成gif缩略图:
ffmpeg -i test.avi -ss 1 -t 5 -ac 2 -ab 128k -s 90*80 -y -f gif out.gif
截取视频生成jpg缩略图:
ffmpeg -i test.avi -ss 0.5 -vframes 1 -r 1 -ac 2 -ab 128k -s 90x80 -y -f mjpeg out2.jpg
- -ss:截取视频,开始时间,单位秒;
- -t:截取时长,单位秒;
- -vframes:等价于frames:v,输出选项,用于指定输出的视频帧数;
- -r:帧率,输入和输出均具有该参数,即具体形式为:
ffmpeg -r [输入帧率] -i [输入文件路径] -r [输出帧率] [输出文件路径]
# 输出视频时长= 图片数量/输入帧率
# 当输入文件为视频时,输入帧率自动识别。
# 当输入文件为图片时,输入帧率默认为25,可指定具体值。
- -ac:输出文件中音频的声道数;
- -ab:输出文件中音频的比特率(常见的音频比特率有 96k, 112k, 128k, 160k, 192k, 256k, 320k);
- -ar:输出文件中音频的采样率(采样率: 11025Hz、22050Hz、24000Hz、44100Hz、48000Hz);
- -an:从视频文件中去除音频,即视频静音,如:
ffmpeg -i test.mp4 -vcodec copy -an output.mp4
# -vcodec copy拷贝源数据的视频流到输出文件里面
- -vn:从视频文件中去除视频,即提取音频,如:
ffmpeg -i test.mp4 -acodec copy -vn output.aac
# 默认mp4的audio codec是aac,如果不是,可以都转为最常见的aac;
# -acodec copy拷贝源数据的音频流到输出文件里面
- -s:设置视频分辨率,参数值wxh,w宽度单位是像素,h高度单位是像素;
- -vf:等价于filter:v,用于设定一个图像的后处理过滤链,其参数为一个描述图像后处理链的字符串。
# 下面两条命令有相同效果
ffmpeg -i input.mpg -s 320x240 output.mp4
ffmpeg -i input.mpg -vf scale=320:240 output.mp4
# 对输入视频成比例缩放
# 改变为源视频一半大小:
ffmpeg -i input.mpg -vf scale=iw/2:ih/2 output.mp4
# 改变为原视频的90%大小:
ffmpeg -i input.mpg -vf scale=iw*0.9:ih*0.9 output.mp4
# 保持源视频的横纵比
# 宽度固定400,高度成比例:
ffmpeg -i input.avi -vf scale=400:-1
# 相反地,高度固定300,宽度成比例:
ffmpeg -i input.avi -vf scale=-1:300
- -b:v:输出视频的码率即比特率,比特率越大,视频文件越大,和分辨率成正相关。
# 常见分辨率和推荐的比特率值:
分辨率 比特率
480p 1500 Kbps左右
720p 3000-5000 Kbps
1080p 5000-8000 Kbps
4K 18000-30000 Kbps
- -map:指定输出文件的流映射关系。例如 “-map 1:0 -map 1:1”要求将第二个输入文件的第一个流和第二个流写入到输出文件。如果没有-map选项,ffmpeg采用缺省的映射关系。
- -y:存在重名文件时覆盖;
- -f:输入、输出文件的格式,小写字母,如:
ffmpeg -f mp4 test.mp4 -f avi out.avi
# 不确定格式名称时,可以直接使用文件扩展名。