FFMPEG使用

视频水平和竖直拼接:

将两个视频水平连接起来

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 

  1. crop的参数格式为w:h:x:y,

  2. w、h为输出视频的宽和高,

  3. x、y标记输入视频中的某点,将该点作为基准点,向右下进行裁剪得到输出视频。

  4. 如果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)

  • -r 
  • is the framerate (fps)

5 视频质量:目前ffmpeg不太支持了

  • -crf 
  • is the quality, lower means better quality, 15-25 is usually good

6 视频分辨率

  • -s 
  • is the resolution

7 图像格式

  • -pix_fmt yuv420p 
  • specifies the pixel format, change this as needed

你可能感兴趣的:(图像,计算机知识,音视频)