使用 avconv(或其他工具)修剪和淡入/淡出视频和音频

Phi*_*pos 4 ffmpeg video-editing video avconv trim

avconv用于修剪和转换视频。假设我想删除视频流的前 7 秒和后 2.5 秒以及一小时mts文件的一个音频流:

avconv -i input.mts -map 0:0 -map 0:3 -ss 0:0:07 -t 0:59:50.5 out.mov
Run Code Online (Sandbox Code Playgroud)

到目前为止,这有效,但现在我想通过添加以下内容在开头和结尾添加两秒钟的淡入淡出:

-vf fade=type=in:start_frame=350:nb_frames=100 -vf fade=type=out:start_frame=178750:nb_frames=100
Run Code Online (Sandbox Code Playgroud)

这些帧是使用avconv为视频源报告的 50 fps 计算的。但是既没有淡入也没有淡出。

1) 视频淡入淡出是什么问题,如何正确处理?2) 如何添加音频淡入淡出。似乎有一个-afade选择。但我没有发现它被记录在案。

或者,您可以为此目标提出不同的工具(修剪和淡化视频和音频),最好作为 Debian 8 的软件包提供。

Phi*_*pos 5

我终于有时间尝试@Mario G. 建议的答案,但这似乎非常麻烦。我需要这样做几十次。我阅读了 的文档ffmpeg并发现它比 强大得多avconv,包括音频和视频的淡入淡出,所以解决方案是

ffmpeg -i input.mts -map 0:0 -map 0:3 -ss 0:0:07 -to 0:59:57.5 -vf 'fade=t=in:st=7:d=2,fade=t=out:st=3595.5:d=2,crop=out_h=692' -af 'afade=t=in:st=7:d=2,afade=t=out:st=3595.5:d=2' out.mov
Run Code Online (Sandbox Code Playgroud)

因此淡入淡出的st=d=参数需要以秒为单位的时间,无需转换为帧。

我还发现了-to直接取结束时间而不是计算长度的选项。

此命令执行所有步骤

  • 频道选择-map
  • -ss和修剪-to
  • 带有-vf选项fade=t=in和的视频淡入淡出fade=t=out
  • 带有-af选项afade=t=inafade=t=out和的音频衰落
  • 使用-vf选项裁剪crop=

一步到位。