视频水平和竖直拼接:
将两个视频水平连接起来
ffmpeg -i 0.mp4 -i 1.mp4 -filter_complex hstack output.mp4
将两个视频垂直连接起来
ffmpeg -i 0.mp4 -i 1.mp4 -filter_complex vstack output.mp4
png生成视频:
ffmpeg -r 25 -i %d.png -c:v libx264 -r 30 -pix_fmt yuv420p fullfoot.mp4
正常的jpg可能不需要这么麻烦:
ffmpeg -r 25 -i %d.jpg -r 30 fullfoot.mp4
上述就ok
ffmpeg多个视频按时间拼接
ffmpeg -safe 0 -f concat -i list.txt -c copy output.mp4
其中list.txt为待拼接的mp4
file bow.mp4
file stand_listen.mp4
file cheer.mp4
file stand_listen.mp4
file clap.mp4
file stand_listen.mp4
视频替换音轨: 如果天然有个音轨,那么不能直接wav+mp4合成,否则会不起效果
ffmpeg -i video_with_audio.mp4 -i newAudio.wav -map 0:0 -map 1:0 -c:v copy -c:a libmp3lame -q:a 1 -shortest video_with_newAudio.mp4
应该采用形如上方的拷贝覆盖方式。
jpg转为png
ffmpeg -i 00001.jpg -vf scale=746:1684 -y 00001.png
批量png生成视频
ffmpeg -i %5d.png -c:v libx264 -pix_fmt yuv420p -crf 18 -y test.mp4
视频时间裁剪:
ffmpeg -ss [start] -t [duration] -accurate_seek -i [in].mp4 -codec copy [out].mp4
ffmpeg -ss 6.7 -i kepu3.mp4 out1.mp4
视频空间裁剪
ffmpeg -i 1.mp4 -vf crop=410:720 out.mp4
crop的参数格式为w:h:x:y,
w、h为输出视频的宽和高,
x、y标记输入视频中的某点,将该点作为基准点,向右下进行裁剪得到输出视频。
如果x y不写的话,默认居中剪切
视频旋转180度
ffmpeg -i input.mp4 -vf "transpose=2,transpose=2" output.mp4
avi转换成mp4
.\ffmpeg.exe -i xxx.avi -c:v libx264 -pix_fmt yuv420p -y yyy.mp4
更改视频帧率,不改变时长:
ffmpeg -i in.mp4 -r 30 out.mp4
更改视频帧率,改变时长:
1. 降低FPS,增加视频时长
说对于输入文件是40帧的媒体,我们可以通过
ffmpeg -r 80 -i input output
ffmpeg -r 20 -i input output
使其输出文件的时长分别为原来的一半和两倍,即播放速度为原来的两倍和一半。
2. 降低视频FPS,视频时长不变,视频质量变差
如果我们认为40帧的文件码流太大,我们可以通过降低输出文件帧率的方法降低码流:
ffmpeg -i input -r 20 output
这样输出文件的码流理论上为输入文件的一半左右。
-r 所在位置不同,决定其参数是对输入视频还是输出视频起作用。
视频图片缩放:scale=w:h 哪一维度自动计算的话,可以填写-1
ffmpeg -i input.avi -vf scale=320:240 output.avi
音视频合成
声音文件和视频文件合成新的新的视频:
ffmpeg -i output.mp4 -i demo.wav -c:v copy -c:a aac -strict experimental demo_wav.mp4
ffmpeg -r 60 -i inputjpg out.mp4 意味着视频总长度会随帧率变化
ffmpeg -i inputjpg -r 60 out.mp4 意味着按照25帧一秒计算总视频时长,时长不会变
改变wav的采样帧率:
ffmpeg -i input.wav -ar 16000 -b: 256k output.wav
图片和视频转换:
图片生成视频
ffmpeg -i %d.jpg out.mp4
视频生成图片:
ffmpeg -i output.mp4 -r 30 %d.jpeg
ffmpeg的控制参数:
1 静默输出
-loglevel panic
ffmpeg实际上默认的制作视频帧率是25FPS,如果你采用25fps就能刚好把每一张图都用上,但是无论你怎么设置帧率,你的1000个jpg所能生成的视频长度都是1000/25=40s,而不是其他数值。
2 默认同意控制符
-y
3 默认否认控制符,无后面输入
-n
4 帧率控制(如-r 25 代表帧率为25)
5 视频质量:目前ffmpeg不太支持了
6 视频分辨率
7 图像格式