如果是选择的图片背景:
- 将图片变成视频大小,例如视频 360480 则取480, 720480 则取 720.
ffmpeg -i tp.jpg -vf scale=480:480 tp.jpg
ffmpeg -i cut.mp4 -vf 'movie=bg_out_image.png [bg]; [bg][in] overlay=(W-w)/2:(H-h)' -y out.mp4
如果是颜色背景
颜色也将它存为图片格式,然后将它scale到视频最大宽高
ffmpeg -i tp.jpg -vf scale=480:480 tp.jpg
ffmpeg -i video.mp4 -vf "movie=x.png [bg]; [bg][in] overlay=(W-w)/2:(H-h)" -y out.mp4
如果是视频高斯模糊效果 boxblur=1:5 清晰 boxblur=20:5 模糊
ffmpeg -i video.mp4 -vf "split[a][b];[a]scale=480x480,setdar=1:1,boxblur=10:5[1];[b]scale=224x480[2];[1][2]overlay=(W-w)/2"
-y out.mp4
ffmpeg -i cut.mp4 -vf 'split[a][b];[a]scale=960x1280,setdar='r=3/4',boxblur=10:5[1];[b]scale=960x540[2];[1][2]overlay=0:(H-h)/2' -y bg_video.mp4
如果仅仅单纯改变一下比例?
默认指定黑色背景作为它的背景 !!
给视频添加文本和图片,可以用一个命令搞定吗?
ffmpeg -i edit.mp4 -vf "drawtext=fontcolor=white:fontsize=28:fontfile=font.ttf:text='中国你好':x=50:y=50[text];movie=shuiying1.png[wm];[text][wm]overlay=0:0[out]" xx.mp4
同时添加文本和图片!!!
ffmpeg -i edit.mp4 -vf "
drawtext=enable='between(t,0,2)':fontcolor=white:fontsize=28:fontfile=font.ttf:text='中国你好':x=0:y=0[text1],
movie=shuiying1.png[wm1];[text1][wm1]overlay=30:30:enable='between(t,0,2)'[out1],
[out1]
drawtext=enable='between(t,2,4)':fontcolor=white:fontsize=28:fontfile=font.ttf:text='xxx':x=0:y=0[text2],
movie=shuiying1.png[wm2];[text2][wm2]overlay=40:60:enable='between(t,2,3)'[out2]
" xx.mp4
ffmpeg -i edit.mp4 -vf "drawtext=fontcolor=white:fontsize=28:fontfile=font.ttf:text='中国你好':x=50:y=50" xx.mp4
- FFmpeg 命令
448:960
///-r 0.1 表示10秒钟截图一次
String command = "-i " + inputVideoPath + " -r 0.1 -f image2 $cachePath/image-%05d.jpeg";
///压缩视频
String command = "-i " + inputVideoPath + " -b:v 30000k -s 216x384 " + compressVideoPath;
///添加水印
String command2 = "-i " +
compressVideoPath +
" -i " +
waterMarkPath2 +
" -i " +
waterMarkPath +
" -filter_complex overlay=10:10,overlay=5:5 " +
outVideoPath +
"";
指定时间加入水印
ffmpeg -i yasuo.mp4 -i test.png -i kongbai.png -filter_complex overlay=0:0:enable='between(t,3,5)',overlay=10:0:enable='between(t,5,8)' out.mp4
-i edit.mp4 -i test.png -i test.png -filter_complex "[1:v]scale=110.8910891089109:110.8910891089109[img1],[2:v]scale=237.30693069306932:169.6633663366337[img2],
[0:v][img1]overlay=77:100[v1],[v1][img2]overlay=18:348" -q 0 -y gt_process_done_video.mp4
-i input.mp4 -i test.png -filter_complex "[1:v]scale=100.0:100.0[img1],[0:v][img1]overlay=108.56615193684901:343.51793416341184[v1]" -q 0 -y gt_process_done_video.mp4
///加入多个水印,并且改变水印大小和显示时间
ffmpeg -i input.mp4 -i test.png -i test2.png -i test3.png -filter_complex
"[1:v]scale=50:50[img1],[2:v]scale=50:50[img2],[3:v]scale=-1:-1[img3],
[0:v][img1]overlay=0:0:enable='between(t,3,5)'[v1],
[v1][img2]overlay=10:0:enable='between(t,5,8)'[v2],
[v2][img3]overlay=70:0:enable='between(t,5,8)'"
-y out.mp4
ffmpeg -i edit.mp4 -i 1.jpg -filter_complex "[1:v]scale=110:110[img1],\
[0:v][img1]overlay=77:100:enable='between(t,3,5)'" \
-q 0 -y gt_process_done_video.mp4
ffmpeg -i input.mp4 -i test.png -i test2.png -filter_complex "[1:v]scale=50:50[img1];[2:v]scale=40:40[img2];[0:v][img1]overlay=2:3[bkg];[bkg][img2]overlay=40:40" -q 0 -y out.mp4
///改变视频到指定尺寸!!!
ffmpeg -i mycut.mp4 -vf scale=300:400 scale.mp4
ffmpeg -i video.mp4 -vcodec h264 -vf "scale='max(480,iw*0.5)':-1" -r 15 -acodec libmp3lame -ac 2 -ar 22050 -f mp4 -y 3.mp4
ffmpeg -i tp1.jpg -vf drawtext=fontcolor=white:fontsize=28:fontfile=font.ttf:text='中国
你好':x=50:y=50 -y tp2.jpg
电脑端命令~~~~
ffmpeg -i /Users/mac/Desktop/ffmpge/input.mp4 -vf "drawtext=fontcolor=white:fontsize=40:fontfile=/Users/mac/Desktop/ffmpge/gt_video_font.ttf:text='ceshi':x=50:y=50:enable='lte(t,5)'" -y /Users/mac/Desktop/ffmpge/out.mp4
ffmpeg -i /Users/mac/Desktop/ffmpge/input.mp4 -vf "drawtext=fontcolor=white:fontsize=40:fontfile=/Users/mac/Desktop/ffmpge/gt_video_font.ttf:text='ceshi':x=50:y=50'" -q 0 -y /Users/mac/Desktop/ffmpge/out.mp4
///添加一个文本
ffmpeg -i /Users/mac/Desktop/ffmpge/video.mp4 -vf drawtext=enable='between(t,3,5)':fontcolor=white:fontsize=40:fontfile=/Users/mac/Desktop/ffmpge/font/youyuan.ttf:text='ceshi':x=50:y=50 -y /Users/mac/Desktop/ffmpg/out.mp4
ffmpeg -i tp1.jpg -vf drawtext=fontcolor=white:fontsize=28:fontfile=font.ttf:text='中国你好':x=50:y=50 -y tp2.jpg
///一句命令给视频添加多个text
ffmpeg -i /Users/mac/Desktop/ffmpge/video.mp4 -vf "drawtext=enable='between(t,3,5)':fontcolor=white:fontsize=40:fontfile=/Users/mac/Desktop/ffmpge/font/youyuan.ttf:text='ceshi':x=50:y=50, drawtext=enable='between(t,7,10)':fontcolor=white:fontsize=40:fontfile=/Users/mac/Desktop/ffmpge/font/youyuan.ttf:text='haha':x=50:y=50" -y /Users/mac/Desktop/ffmpge/out.mp4
///音频部分
http://ffmpeg.org/ffmpeg-filters.html#Audio-Sources
///将mp4提取mp3.
ffmpeg -i /Users/mac/Desktop/ffmpge/video.mp4 -f mp3 -vn /Users/mac/Desktop/ffmpge/apple.mp3
///实现混音效果
ffmpeg -i yasuo.mp4 -stream_loop -1 -i duan_music.mp3 -filter_complex
"[0:a]volume=0.2[a0];
[1:a]volume=0.8[a1];
[a0][a1]amix=inputs=2[a]"
-map 0:v -map "[a]" -c:v copy -c:a aac -shortest -t 11 -y output.mp4
分离视频中的音频 和 视频,这时候视频没声音
ffmpeg -i video.mp4 -f mp3 -vn gt_video_audio.mp3 -an gt_video.mp4
获取视频中的音频
ffmpeg -i input.mp4 -vn -y -acodec copy output.m4a
将声音变成0.5
ffmpeg -i input.wav -filter:a "volume=0.5" output.wav
合并两个音频
ffmpeg -i bgmusic.mp3 -i gt_video_audio.mp3 -filter_complex amix=inputs=2:duration=first:dropout_transition=2 gt_audio.mp3
ffmpeg -i bgmusic.mp3 -i gt_video_audio.mp3 -filter_complex amerge -ac 2 -c:a libmp3lame -q:a 4 gt_audio.mp3
ffmpeg -i bgmusic.mp3 -i gt_video_audio.mp3 -filter_complex amix=inputs=2:duration=first -c:a libmp3lame -q:a 4 gt_audio.mp3
去掉视频中的音频
ffmpeg -i input.mp4 -an output.mp4
合并音频和视频
ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac -strict experimental output.mp4
水印相关
指定长,高度按比例缩放:
ffmpeg -i input.jpg -vf scale=320:-1 output_320x240.png
///加入水印到视频, 并且改变水印大小
ffmpeg -i input.mp4 -i test.png -filter_complex "[1:v]scale=80:80[test];[test]overlay=x=20:y=0" -c:v h264 out.mp4
重要参数讲解
-vf 视频的过滤器
-filter_complex graph_description创建一个复杂的filter graph.
- 将一张png 或者 gif 转成mp4 .
方案1 ->>>>>>>>>>
///将视频转成gif https://blog.csdn.net/ternence_hsu/article/details/87714244
ffmpeg -r 28 -i pianwei.gif -pix_fmt yuv420p -s 380x474 video_gif.mp4
给一个视频追加片尾mp4, list.txt 里面格式
方案1 ->>>>>>>>>>
/// 如果加上 -vcodec copy -acodec copy 速度更快!!这个是直接拷贝视频数据 -c copy
/// -r 是针对基调不一样的两个视频,很重要, 如果没加会出现花屏或者第一个视频播放完等半天才播放第二个,-r 多少可以看下fps
ffmpeg -r 25 -f concat -i list.txt -vcodec copy -acodec copy -y concat.mp4 上面这个需要格式啥的完全一致
ffmpeg -r 25 -f concat -i list.txt -y concat.mp4给视频添加一个背景,
方案1 ->>>>>>>>>>
ffmpeg -loop 1 -i icon_video_style_big1.png -i video.mp4 -filter_complex "overlay=(W-w)/2" -shortest -y output.mp4
方案2 ->>>>>>>>>>
ffmpeg -i video.mp4 -vf "movie=x.png [bg]; [bg][in] overlay=(W-w)/2:(H-h)" -y out.mp4高斯模糊视频
方案1 ->>>>>>>>>>
ffmpeg -i video1.mp4 -vf "split[a][b];[a]scale=1024:768,boxblur=10:5[1];[b]scale=(iw*768)/ih:768[2];[1][2]overlay=(W-w)/2" 2.mp4
方案2 ->>>>>>>>>> :224x480 改变分辨率和宽高比例
ffmpeg -i video.mp4 -vf "split[a][b];[a]scale=480x480,setdar=1:1,boxblur=20:5[1];[b]scale=224x480[2];[1][2]overlay=(W-w)/2" -y out.mp4
- 修改视频尺寸
范例:
‧设定显示比例为 16:9
setdar='r=16/9'
或
setdar='dar=16/9'
‧设定像素比例为 40:33
setsar='r=40/33'
或
setsar='sar=40/33'
说明: >> setdar 是修改尺,如果不改尺寸 单独修改宽高视频不会变化多少
ffmpeg -i video_tail.mp4 -vf scale=960:540,setdar='r=16/9' -y tt.mp4
- 拷贝某一段
ffmpeg -ss 2 -to 4 -accurate_seek -i source.mp4 -codec copy -avoid_negative_ts 1 -y xx.mp4
- 给图片添加文字
(1) 改变图片尺寸!
ffmpeg -i tp.jpg -vf scale=400:-1 tp1.jpg
(2) 图片添加文字
- 创建一个纯色视频 并绘制颜色
(1)
///创建一个纯色的视频
ffmpeg -f lavfi -i color=c=0x22000000:s=224x480:d=5 output.mp4
///将创建的纯色视频跟原始视频进行合并.产生新的视频
ffmpeg -i video.mp4 -i out.mp4 -filter_complex "[0:v]format=yuva444p,colorchannelmixer=aa=0[valpha];[1:v][valpha]overlay=(W-w)/2:(H-h)/2" -y overlay4.mp4
ffmpeg -i output.mp4 -vf "drawtext=fontcolor=white:fontsize=40:fontfile=font.ttf:text='我是测试文本':x=50:y=50" -y out.mp4
参考文档:
https://ffmpeg.org/ffmpeg-filters.html#drawtext-1
https://www.iteye.com/blog/keren-1773536