FFmpeg 命令行
FFmpeg命令行帮助
#>ffmpeg -h #>ffmpeg -h long #>ffmpeg -h full
将视频按照指定的宽高输出
#>ffmpeg -i input.mp4 -s 480×360 output.mp4
将多个视频合并成一个视频
#两个视频左右 #>ffmpeg -i Touch1.avi -i Touch2.avi -filter_complex "[0:v]pad=iw*2:ih[a];[a][1:v]overlay=w" TouchLR.avi
#四个视频田字 #>ffmpeg -i Touch1.avi -i Touch2.avi -i Touch3.avi -i Touch4.avi -filter_complex "[0:v]pad=iw*2:ih*2[a];[a][1:v]overlay=w[b];[b][2:v]overlay=0:h[c];[c][3:v]overlay=w:h" TouchTBLR.avi
剪切视频尺寸
#>ffmpeg.exe -i in.mp4 -vf crop=500:ih:390:0 out.mp4 crop=输出宽:输出高:原视频中起始位置x:原视频中起始位置y iw 输入视频宽度 ih 输入视频高度
单张图片生成视频
#>ffmpeg.exe -r 25 -loop 1 -i 1.jpg -pix_fmt yuv420p -vcodec libx264 -b:v 6000k -r:v 25 -preset medium -crf 30 -s 2000x2000 -vframes 250 -r 25 -t 60
out.mp4 #>ffmpeg.exe -r 25 -loop 1 -i 1.jpg -pix_fmt yuv420p -vcodec libx264 -b:v 6000k -r:v 25 -preset medium -crf 30 -s 2000x2000 -vframes 1500 -r 25 -t 60
out.mp4 #>ffmpeg -r 15 -f image2 -loop 1 -i “%img%” -i “%audio%” -s 720x480 -pix_fmt yuvj420p -t 930 -vcodec mpeg4 “%output%” 注意:因为输入的图片有yuv420,yuv444等各种格式,因此必须加入 -pix_fmt yuvj420p 参数。
-loop 1 参数加入的原因是因为只有一张图片,因此需要通过loop作为输入流形成视频。
-t 930 是设置输出的视频的长度,如果有loop 而没有t参数,将会无限的合成下去。
而没有 loop和-t 视频轨道则会只有一张图片,视频轨道的时间只有几毫秒。而音频轨道则会是音频的长度,造成音频和视频轨道时间不一致。一些软件的播放或者视频网站的转码就会出现问题。
将视频生成序列图片
#>ffmpeg.exe -i in.mp4 -f image2 outpath\%d.png
将动态图片gif生成序列图片
#>ffmpeg.exe -i in.gif outpath/%d.bmp
使用GPU加速编码
#>ffmpeg.exe -encoders 查看支持的编码器名称 #>ffmpeg.exe -s 640x480 -i h264_qsv.yuv -vcodec h264_qsv -preset:v veryfast out.mp4