参考博客
现在比较经常使用的工具是ffmpeg
ffmpeg -i "*.mp4" -r 1 -q:v 2 -f image2 %d.jpeg
- -i 用来获取输入的文件
- -r 设置每秒提取图片的帧数,-r 1的意思就是设置为每秒获取1帧;
- -q:v 2 提高抽取到的图片的质量的
- -f 强迫采用格式fmt
然后,在当前目录下面就可以找到抽出来的图片了。
ffmpeg常用命令
- 视频中抽帧存图, -r 每秒产生的帧数(置空则全转), -q:v 2 高质量, -s 宽x高
ffmpeg -i input.avi -r 1 -q:v 2 -s WxH -f image2 pic-%03d.jpeg
- 获取视频的信息
ffmpeg -i input.avi
- 将图片序列合成视频, -r 生成视频的帧, -b 码率 bit单位, -vcodec 编码格式
ffmpeg -f image2 -i pic-%03d.jpeg -vcodec xvid -r 30 -b:v 8000k test.mp4
- 转化视频格式, -acodec 音频编码, -ac 声道数, -ar 声音采样率(选择32、64、96、128),-ab 声音比特率(建议160k以上), -vol 音量扩大倍数, 如200%, -threads 设置线程数,对部分格式的编码有效
ffmpeg -threads 4 -i source_video.avi -b:v 8000k -s 320x240 -ab 32 -ar 24000 -acodec aac -vol 200 final_video.mp4
- 图像resize
ffmpeg -i input.jpg -vf scale=320:240 output_320x240.png # fixed aspect ratio
ffmpeg -i input.jpg -vf scale=320:-1 output_320.png # keep aspect ratio
ffmpeg -i input.jpg -vf scale=iw*2:ih input_double_width.png # iw, ih input width and height
ffmpeg -i input.jpg -vf scale=iw*.5:ih*.5 input_half_size.png # 0.5 input width height
ffmpeg -i input.jpg -vf scale=w=320:h=240:force_original_aspect_ratio=decrease output_320.png # keep ratio but given a max box
- 每秒抽一帧
time ffmpeg -i ./test.avi -q:v 1 -vf select='not(mod(n\,1))',setpts=N/TB -r 1 %08d.jpg
//处理视频M1.mp4, 不需要旋转
ffmpeg -y -i " M1.mp4" -vcodec libx264 -b 1024000 -s 320x180 -acodec copy " M1_cp.mp4"
//处理视频M2.mp4,逆时针旋转90
ffmpeg -y -i " M2.mp4" -vf transpose=2 -vcodec libx264 -b 1024000 -s 320x180 -acodec copy -metadata:s:v:0 rotate=90 " M2_cp.mp4"
//处理视频M3.mp4,旋转180
ffmpeg -y -i " M3.mp4" -vf vflip,hflip -vcodec libx264 -b 1024000 -s 320x180 -acodec copy -metadata:s:v:0 rotate=180 " M3_cp.mp4"
//处理视频M4.mp4,逆时针旋转270(或者顺时针旋转90)
ffmpeg -y -i "M4_cp.mp4" -vf transpose=1 -vcodec libx264 -b 1024000 -s 320x180 -acodec copy -metadata:s:v:0 rotate=270 "M4_cp.mp4"