ffmpeg的创作视频

野生程序猿-杂烧3年前音视频735

如何将图片、文字、音频合并起来用代码生成视频,这里推荐个好工具ffmpeg

先来看我的一个demo

ffmpeg  -f image2  -loop 1 -t 1 -i ../pic/1.jpg  -loop 1 -t 3 -i ../gps/356801031391114.jpg  -loop 1 -t 3 -i ../pic/3.jpg  -loop 1 -t 3 -i ../pic/4.jpg  -loop 1 -t 3 -i ../pic/5.jpg  -loop 1 -t 3 -i ../pic/6.jpg  -loop 1 -t 3 -i ../pic/7.jpg  -loop 1 -t 2 -i ../pic/8.jpg  -filter_complex "[0:v]overlay=x=0:y='if(gte(t,1), max(h-(t-1)*3500,0),NAN)'[v0];[1:v]overlay=x=0:y='if(gte(t,1), max(h-(t-1)*3500,0),NAN)'[v1];[2:v]overlay=x=0:y='if(gte(t,1), max(h-(t-1)*3500,0),NAN)'[v2];[3:v]overlay=x=0:y='if(gte(t,1), max(h-(t-1)*3500,0),NAN)'[v3];[4:v]overlay=x=0:y='if(gte(t,1), max(h-(t-1)*3500,0),NAN)'[v4];[5:v]overlay=x=0:y='if(gte(t,1), max(h-(t-1)*3500,0),NAN)'[v5];[6:v]overlay=x=0:y='if(gte(t,1), max(h-(t-1)*3500,0),NAN)'[v6];[v0][v1][v2][v3][v4][v5][v6]concat=n=7:v=1:a=0,format=yuv420p[v];[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=46:text='2110':x=455:y=748:enable='between(t,0.2,1)'[v];[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=46:text='2014-04-11':x=249:y=591:enable='between(t,0.2,1)'[v];[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=56:text='2448':x=336:y=241:enable='between(t,1.5,4)'[v];[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=66:text='161':x=362:y=306:enable='between(t,1.6,4)'[v];[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=66:text='221':x=282:y=366:enable='between(t,1.7,4)'[v];[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=44:text='...':x=120:y=380:enable='between(t,4.5,7)'[v];[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=66:text='':x=135:y=452:enable='between(t,4.7,7)'[v];[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=52:text=' 7':x=236:y=402:enable='between(t,7.6,10)'[v];[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=40:text=' 四川省泸州市':x=440:y=402:enable='between(t,7.7,10)'[v];[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=70:text='':x=307:y=376:enable='between(t,10.6,13)'[v];[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=40:text='':x=60:y=451:enable='between(t,10.7,13)'[v];[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=24:text='泸州市古蔺县双水岸小区西南50米(金兰大道北)':x=72:y=460:enable='between(t,13.5,16)'[v];[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=24:text='泸州市古蔺县体育中心北':x=72:y=520:enable='between(t,13.6,16)'[v];[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=24:text='泸州市古蔺县人民医院西南':x=72:y=580:enable='between(t,13.7,16)'[v];[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=24:text='':x=74:y=420:enable='between(t,16.7,19)'[v];[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=24:text='':x=74:y=476:enable='between(t,16.8,19)'[v];[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=24:text='':x=74:y=532:enable='between(t,16.9,19)'[v];[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=62:text='':x=295:y=762:enable='between(t,19.3,21)'[v];[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=62:text='24164':x=295:y=826:enable='between(t,19.4,21)'[v];[v]concat=n=1:v=1:a=0,format=yuv420p[v]" -vcodec libx264 -r:v 25 -y  -map "[v]" 356801031391114_temp.mp4

一行太乱了,来个换行的

ffmpeg  -f image2  -loop 1 -t 1 -i 1.jpg  -loop 1 -t 3 -i 2.jpg  -loop 1 -t 3 -i 3.jpg  -loop 1 -t 3 -i 4.jpg  -loop 1 -t 3 -i 5.jpg  -loop 1 -t 3 -i 6.jpg  -loop 1 -t 3 -i 7.jpg  -loop 1 -t 2 -i 8.jpg  -filter_complex "
[0:v]overlay=x=0:y='if(gte(t,1), max(h-(t-1)*3500,0),NAN)'[v0];
[1:v]overlay=x=0:y='if(gte(t,1), max(h-(t-1)*3500,0),NAN)'[v1];
[2:v]overlay=x=0:y='if(gte(t,1), max(h-(t-1)*3500,0),NAN)'[v2];
[3:v]overlay=x=0:y='if(gte(t,1), max(h-(t-1)*3500,0),NAN)'[v3];
[4:v]overlay=x=0:y='if(gte(t,1), max(h-(t-1)*3500,0),NAN)'[v4];
[5:v]overlay=x=0:y='if(gte(t,1), max(h-(t-1)*3500,0),NAN)'[v5];
[6:v]overlay=x=0:y='if(gte(t,1), max(h-(t-1)*3500,0),NAN)'[v6];
[v0][v1][v2][v3][v4][v5][v6]concat=n=7:v=1:a=0,format=yuv420p[v];
[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=46:text='2110':x=455:y=748:enable='between(t,0.2,1)'[v];
[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=46:text='2014-04-11':x=249:y=591:enable='between(t,0.2,1)'[v];
[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=56:text='2448':x=336:y=241:enable='between(t,1.5,4)'[v];
[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=66:text='161':x=362:y=306:enable='between(t,1.6,4)'[v];
[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=66:text='221':x=282:y=366:enable='between(t,1.7,4)'[v];
[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=44:text='...':x=120:y=380:enable='between(t,4.5,7)'[v];
[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=66:text='':x=135:y=452:enable='between(t,4.7,7)'[v];
[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=52:text=' 7':x=236:y=402:enable='between(t,7.6,10)'[v];
[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=40:text=' 四川省泸州市':x=440:y=402:enable='between(t,7.7,10)'[v];
[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=70:text='':x=307:y=376:enable='between(t,10.6,13)'[v];
[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=40:text='':x=60:y=451:enable='between(t,10.7,13)'[v];
[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=24:text='泸州市古蔺县双水岸小区西南50米(金兰大道北)':x=72:y=460:enable='between(t,13.5,16)'[v];
[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=24:text='泸州市古蔺县体育中心北':x=72:y=520:enable='between(t,13.6,16)'[v];
[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=24:text='泸州市古蔺县人民医院西南':x=72:y=580:enable='between(t,13.7,16)'[v];
[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=24:text='':x=74:y=420:enable='between(t,16.7,19)'[v];
[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=24:text='':x=74:y=476:enable='between(t,16.8,19)'[v];
[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=24:text='':x=74:y=532:enable='between(t,16.9,19)'[v];
[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=62:text='':x=295:y=762:enable='between(t,19.3,21)'[v];
[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=62:text='24164':x=295:y=826:enable='between(t,19.4,21)'[v];

[v]concat=n=1:v=1:a=0,format=yuv420p[v]


" -vcodec libx264 -r:v 25 -y  -map "[v]" 356801031391114_temp.mp4

第一行是输入源;后面[0:v]表示输入源1的视频(V);overlay=x=0:y='if(gte(t,1), max(h-(t-1)*3500,0),NAN)'这个是对[0:v]进行位移控制,就是动画;[v0]相当于处理后新视频片段的变量名。后面几个的解释同上。

[v0][v1][v2][v3][v4][v5][v6]concat=n=7:v=1:a=0,format=yuv420p[v];合并前面几个视频,并且有了新变量名[v]

[v]drawtext=ft_load_flags=render:fontfile=1.ttf:shadowcolor=0xaaaaaa66:shadowx=1:shadowy=1:fontcolor=#e93443:fontsize=46:text='2110':x=455:y=748:enable='between(t,0.2,1)'[v];在变量[v]视频里添加文字,enable='between(t,0.2,1)这个时间点内显示。


标签: 软件推荐

相关文章

时序数据库推荐taos

  时序数据库(Time Series Database,TSDB) 全称为时间序列数据库。时间序列数据库指主要用于处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间...

前端有没必要学习photoshop

前端有没必要学习photoshop

  现在前端开发已经工程化,可以说前端前几年的受欢迎程度已经超过后端。再加上javascript的后端语言nodejs,让前端或者说前后端全栈更受欢迎。  在我就职的几家公司里,遇到了不少前端、后端,...

推荐个强迫症最爱的任务栏管理工具7+ Taskbar Tweaker

推荐个强迫症最爱的任务栏管理工具7+ Taskbar Tweaker

我们开发人员用到的软件特别多,尤其全栈。前后端开发软件、ps、模拟器、办公软件、cmd窗口。工作的时候我不喜欢把任务栏按组叠加。像cmd窗口给我叠在一起,找都找不到,打乱开发的节奏。...

介绍一款文件比较工具Beyond Compare

介绍一款文件比较工具Beyond Compare

这款软件除了可以比较我们的代码差异,还可以比较图片形状差异。有以下几个优点1、代码支持特殊字符,如换行符的一些差异(不同操作系统,如linux跟windows下很多时候会有这个现象)。2、支持上下文功...