美文网首页Web开发
ffmpeg 表达式理解: 音量减弱/渐强(淡入淡出)+混音

ffmpeg 表达式理解: 音量减弱/渐强(淡入淡出)+混音

作者: 半岛迷音 | 来源:发表于2018-04-10 22:08 被阅读0次

一个音频在10秒后5秒内逐渐削弱效果 

起始目的: 想混合a和b两个音频(重叠), b时长10秒, a时长大于10秒, 在b播放的10秒里a音频音量为30%, b播放完毕后a恢复正常音量100%, 先度娘

参考资料: 

http://www.fengxiaochuang.com/?p=295

得到公式一枚: 

volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame

理解:

lt(t,10)

t=当前秒数

如果当前时间小于10秒, 则返回1, 否则返回0

10秒前

if(1,1,max(1-(t-10)/5,0))

if(x,y,z), 如果x=1 则返回1, 否则返回z

如果小于10秒, volume=1, 否则 volume=z

max(1-(t-10)/5,0)

max(x, y)  返回x和y中的更大的值

t-10

10秒前

0-10=-10

-10/5=-2

1-(-2)=3

1-(-1.8)=2.8

10秒后

11-10=1

1/5=0.2

1-0.2=0.8 -> 11秒

1-0.4=0.6 -> 12秒

1-0.6=0.4 -> 13秒

1-0.8=0.2 -> 14秒

1-1=0 -> 15秒

其中可调参数10=正常时长, 5=削弱时长

volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame

eval=frame  //每经过一帧, 执行一次表达式

所以, 每秒钟的音量值都通过表达式计算结果来动态赋值


初始音量30%,10秒后3秒内逐渐恢复正常音量

t=经过的秒数, 通过时间的变化, 思考表达式

t=10 : (t-10)=0 -> (t-10)/3=0.00 -> 0.3+(t-10)/3*0.7=0.30 -> min(0.3+(t-10)/3*(1-0.3),1)=0.30

t=11 : (t-10)=1 -> (t-10)/3=0.33 -> 0.3+(t-10)/3*0.7=0.53 -> min(0.3+(t-10)/3*(1-0.3),1)=0.53

t=12 : (t-10)=2 -> (t-10)/3=0.66 -> 0.3+(t-10)/3*0.7=0.76 -> min(0.3+(t-10)/3*(1-0.3),1)=0.76

t=13 : (t-10)=3 -> (t-10)/3=0.99 -> 0.3+(t-10)/3*0.7=1.00 -> min(0.3+(t-10)/3*(1-0.3),1)=1.00

t=14 : (t-10)=4 -> (t-10)/3=1.33 -> 0.3+(t-10)/3*0.7=1.23 -> min(0.3+(t-10)/3*(1-0.3),1)=1.00

表达式参考资料:

 https://xdsnet.gitbooks.io/other-doc-cn-ffmpeg/content/ffmpeg-doc-cn-08.html

min(x, y)  返回x和y中的更小的值

min(0.3+(t-10)/3*(1-0.3),1) //如果大于1则返回1, 13秒过后保持正常音量播放

1-0.3=0.7  //初始值为0.3  要在0.3的基础往上加

所以  

volume='if(lt(t,10),0.3,min(0.3+(t-10)/3*(1-0.3),1))':eval=frame

完整命令

ffmpeg -i 111.aac -af "volume='if(lt(t,10),0.3,min(0.3+(t-10)/3*(1-0.3),1))':eval=frame" 333.aac


使用滤镜混音(叠加): 

ffmpeg -i 333.aac -i 444.mp3 -filter_complex amix=inputs=2:dropout_transition=0 555.aac

参考资料

https://xdsnet.gitbooks.io/other-doc-cn-ffmpeg/content/ffmpeg-doc-cn-34.html

http://www.fengxiaochuang.com/?p=295


音视频合成(无损)

若音频比视频长,画面停留在最后一帧,继续播放声音。

ffmpeg -i 222.mp4 -i 555.aac 666.mp4

单独提取视频(去掉声音)

ffmpeg -i input.mp4 -vcodec copy -an output.mp4

单独提取音频(去掉视频)

ffmpeg -i input.mp4 -acodec copy -vn output.mp3


常用的一些命令(参考资料)

https://www.jianshu.com/p/11b6c4eb9e49

相关文章

网友评论

    本文标题:ffmpeg 表达式理解: 音量减弱/渐强(淡入淡出)+混音

    本文链接:https://www.haomeiwen.com/subject/ghlohftx.html