ffmpeg用法


工具
# 1. 无损剪切视频片段 -to 指定结束时间点  -t 指定剪切时长
ffmpeg  -i input.mp4 -ss 01:10 -to 02:10 -codec copy output.mp4
# 视频拆分  -t 前1分钟 0:00 - 1:00  剩下的 从01:00 到结尾 part。mp4
ffmpeg -i input.mp4 -t 01:00 part1.mp4 -ss 01:00 part2.mp4

# 2. 合并两个视频
ffmpeg -i video1.mp4 -i video2.mp4 -filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1" -vsync vfr output.mp4

# 2. 视频变速  两倍速 但是帧率不变 要想不丢失帧率 增加 原来30帧变成60帧   -r 60  
ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output.mp4
# 变慢
ffmpeg -i input.mp4 -vf "setpts=2*PTS,minterpolate='mi_mode=mci:mc_mode=aobmc:vsbmc=1:fps=60'" output.mp4

# 3. 视频剪切
ffmpeg -i 22.mp4 -vf "scale=iw/2:ih/2" 33.mp4

# 4. 视频叠加 将视频放在左上角
ffmpeg -i video.mp4  -i overlay.mp4 -filter_complex [0][1]overlay=x=0:y=0 output.mp4

# 5. 视频添加音频 淡出效果
ffmpeg -i video.mp4 -i audio.mp3 -af "afade=out:st=10:d=2" -map 0:v -map 1:a -c:v copy -shortest output.mp4

# 6. 图片转视频

ffmpeg -loop 1 -t 3 -framerate 60 -i image1.jpg -loop 1 -t 3 -framerate 60 -i image2.jpg -loop 1 -t 3 -framerate 60 -i image3.jpg -filter_complex "[0][1]xfade=transition=circleopen:duration=1:offset=2[f0]; [f0][2]xfade=transition=circleopen:duration=1:offset=4" -c:v libx264 -pix_fmt yuv420p output.mp4

# 7. 增加水印并且限定时间

ffmpeg -i input.mp4 -vf "drawtext=text='日照香炉生紫烟':fontfile=font.ttf:fontcolor=white@0.9:fontsize=48:x=(W-tw)/2:y=(H-th)/2:enable='between(t,0,2)',drawtext=text='日照香炉生紫烟':fontfile=font.ttf:fontcolor=white@0.9:fontsize=48:x=30:y=30:enable='gt(t,2)'" output.mp4

# 8. 截取音频或视频
ffmpeg -i input.mp3 -ss 00:02:06 -to 00:02:20 -c copy output.mp3

音频变速
ffmpeg -i output2.mp3 -filter:a "atempo=1.5" output3.mp3

#9. 视频增加背景音乐
ffmpeg -i ff.mp4 -i out3.mp3 -c:v copy -c:a aac -shortest output.mp4

#10. 视频添加字幕
ffmpeg -i output.mp4 -vf "subtitles=subtitles.srt:force_style='Alignment=2'" -c:a copy output9.mp4

查看视频编码信息

ffprobe -show_streams -select_streams v -print_format json