我有淡入淡出问题并在代码下方使用,但未完全解决。
我的声音为voice.mp3,长度为voice_length
秒,声音最大的歌曲。
我希望与start_mix_time
时间的歌曲混音。
当语音起始音量应为0.2
且语音结束时,音量将返回1.0
。
例如,如果我有一个长度为10秒的歌曲和一首歌曲,歌曲开始播放并且在3秒位置,开始淡出为0.2,然后在5秒时,语音从歌曲开始,10秒后,歌曲淡入第1卷并播放结束。
以下是一个示例:
ffmpeg -i song1.mp3 -i voice2.mp3 -filter_complex "[0]asplit[a][b]; \
[a]atrim=duration=voice_length,volume='1-max(0.25*(t-start_mix_time-2),0)':eval=frame[pre]; \
[b]atrim=start=start_mix_time,asetpts=PTS-STARTPTS[song]; [song][1]amix=inputs=2:duration=first:dropout_transition=2[post]; \
[pre][post]concat=n=2:v=0:a=1[mixed]" \
-map "[mixed]" output.mp3
@Mulvya
答案 0 :(得分:0)
对于给出的示例 - 在t = 3&之间,音量从1减小到0.2。 5然后从t = 15到17逐渐消失。
ffmpeg -i song.mp3 -i voice.mp3 -filter_complex
"[0]volume='1-max((t-start_fade_t)*0.8/2,0)':eval=frame:enable='between(t,3,5)',volume=0.4:eval=frame:enable='between(t,5,15)',volume='0.2+max((t-end_fade_t)*0.8/2,0)':eval=frame:enable='between(t,15,17)'[song]; \
[1]adelay=5000|5000[vo]; \
[song][vo]amix=inputs=2:duration=first:dropout_transition=0.01" \
output.mp3
三首音量过滤器应用于歌曲 - 一个用于淡入,一个用于淡出,一个用于叠加。由于amix滤波器会减小其输入音量,因此叠加音量滤波器值将设置为所需音量的两倍。
答案 1 :(得分:0)
最后,通过这个解决了参数:
ffmpeg -i song.mp3 -i voice.mp3 -filter_complex \
"[0]volume='1-((t-start_song_fade_out)*fade_power) + min_song_volume':eval=frame:enable='between(t,start_song_fade_out,end_song_fade_out)', \
volume=min_song_volume:eval=frame:enable='between(t,end_song_fade_out,end_song_fade_out + voice_duration - 1)', \
volume='(t-end_song_fade_out + voice_duration - 1)*fade_power + min_song_volume' \
:eval=frame:enable='between(t,end_song_fade_out + voice_duration - 1,start_song_fade_in_back + end_song_fade_out-start_song_fade_out)' \
[song]; [1]adelay='(end_song_fade_out*1000)'|'(end_song_fade_out*1000)'[vo]; \
[song][vo]amix=inputs=2:duration=first:dropout_transition=0.01" -id3v2_version 3 output.mp3