使用ffmpeg交叉淡化视频和音频


3

到目前为止,使用ffmpeg在2个视频之间进行超级淡入淡出的交叉淡入淡出的效果使我到目前为止,但是现在,我已经尝试了许多解决方案,并且看到那里的每个SO链接,是时候向大家寻求帮助了。

我正在尝试同时淡入淡入淡出2秒钟ts格式的2个视频和音频和视频的视频。

这些步骤是:

  1. 添加复杂的滤镜黑屏
  2. 在9秒钟后淡出视频1,淡入时间为1秒
  3. 在9秒钟时淡入视频2,淡入时间为1秒
  4. 修剪黑色滤镜输出至19秒

这仅适用于视频,效果很好,但是当我尝试添加音频时,我无法越过此错误消息:

未连接到任何目的地的滤波器的滤波器实例“ Parsed_asetpts_4”的音频类型的输出垫“默认”

看来我没有正确连接音频输出。我想我需要更改[over]行以包含音频。但是我该怎么做呢?

`ffmpeg -i vid1.ts -i vid2.ts -f lavfi -i color=black -filter_complex \
"[0:v]format=pix_fmts=yuva420p,\
fade=t=out:st=9:d=1:alpha=1,setpts=PTS-STARTPTS[v0];\
[0:a]\
afade=t=out:st=9:d=1,asetpts=PTS-STARTPTS[a0];\
[1:v]format=pix_fmts=yuva420p,\
fade=t=in:st=0:d=1:alpha=1,setpts=PTS-STARTPTS+9/TB[v1];\
[1:a]\
afade=t=in:st=0:d=1,asetpts=PTS-STARTPTS+9/TB[a1];\
[a0][a1]amix=inputs=2;\ 
[2:v]scale=720x406,trim=duration=19[over];\
[over][v0]overlay[over1];\
[over1][v1]overlay=format=yuv420[outv]" -vcodec libx264 -y -map [outv] final.ts`

您应该包括命令完成后出现的完整控制台输出。
llogan'2

它在这里工作正常。
蒂莫西·顾

Answers:


6

这将同时进行音频和视频:

ffmpeg -i segment1.mp4 -i segment2.mp4 -an \
-filter_complex \
"   [0:v]trim=start=0:end=9,setpts=PTS-STARTPTS[firstclip];
    [1:v]trim=start=1,setpts=PTS-STARTPTS[secondclip];
    [0:v]trim=start=9:end=10,setpts=PTS-STARTPTS[fadeoutsrc];
    [1:v]trim=start=0:end=1,setpts=PTS-STARTPTS[fadeinsrc];
    [fadeinsrc]format=pix_fmts=yuva420p,      
                fade=t=in:st=0:d=1:alpha=1[fadein];
    [fadeoutsrc]format=pix_fmts=yuva420p,
                fade=t=out:st=0:d=1:alpha=1[fadeout];
    [fadein]fifo[fadeinfifo];
    [fadeout]fifo[fadeoutfifo];
    [fadeoutfifo][fadeinfifo]overlay[crossfade];
    [firstclip][crossfade][secondclip]concat=n=3[output];
    [0:a][1:a] acrossfade=d=1 [audio]
" \
-map "[output]" -map "[audio]" result.mp4

这基本上与该答案相同,但是仅覆盖视频。请检查答案,因为它解释得很奇妙

希望他们将来会添加一个vcrossfade过滤器...!


2
(可能为时已晚,但对后代有利...)
Merc 2015年

1

这样做:这用于两个视频的淡入淡出

ffmpeg -i big_buck.mp4 -i big_buck.mp4 -an -filter_complex "
[0:v]trim=start=0:end=4,setpts=PTS-STARTPTS[firstclip];  
[1:v]trim=start=1,setpts=PTS-STARTPTS[secondclip]; 
[0:v]trim=start=4:end=5,setpts=PTS-STARTPTS[fadeoutsrc]; 
[1:v]trim=start=0:end=1,setpts=PTS-STARTPTS[fadeinsrc]; 
[fadeinsrc]format=pix_fmts=yuva420p, fade=t=in:st=0:d=1:alpha=1[fadein]; 
[fadeoutsrc]format=pix_fmts=yuva420p,fade=t=out:st=0:d=1:alpha=1[fadeout]; 
[fadein]fifo[fadeinfifo]; [fadeout]fifo[fadeoutfifo]; [fadeoutfifo]
[fadeinfifo]overlay[crossfade]; [firstclip][crossfade]
[secondclip]concat=n=3[output]; [0:a][1:a] acrossfade=d=1 [audio]" -map "
[output]" -map "[audio]" result.mp4 -y

它仅适用于两个视频


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.