让我们重新唤醒这个被遗忘的话题!

让我们重新唤醒这个被遗忘的话题!

我在 Adob​​e Premiere 中做了很多视频编辑工作,而且某个分支的工作非常重复,所以我在想也许我可以编写一个脚本来用 ffmpeg 自动化这个过程。

在费尽心思尝试让它工作之后,我却一无所获,我真的需要一些指点。

我将尝试用一种伪描述来描述我的最终目标:

                   [<------v:watermark.png----->]
    [/v:clip1.mp4\][/v:clip2.mp4\][/v:clip3.mp4\][/v:clip4.mp4\]
    [<a:clip1.mp4>][------a:soundtrack.mp3----->][<a:clip4.mp4>]

其中 / & \ 为淡入淡出(为黑色),< 为交叉溶解。

或者,用文字描述:一组视频剪辑,每个剪辑从黑色淡入,然后在播放下一个剪辑之前淡出为黑色。第一个和最后一个剪辑的音频存在(介绍和结尾),其他剪辑的音频被删除并替换为 mp3 文件,该文件在播放最后一个剪辑之前淡出(并根据需要进行修剪以适应)。除了第一个和最后一个剪辑之外,整个视频上都显示水印,最好使用 Photoshop(我认为还有 ImageMagick)称为“叠加”模式,尽管我可以接受简单的混合。

现在我写了描述,它确实看起来相当复杂,我并不为自己无法接近它而感到羞愧。在 Premiere 中,这只是一个繁琐且耗时的肌肉记忆过程。

我不是要求任何人为我写这个,只要得到一些指点我就很高兴了!

信息点:

  • 这些剪辑包含多种容器和编解码器。
  • 所有剪辑的分辨率都完全相同 (1920x1080)。
  • 片段的帧速率确实有所不同,但仅在 29.97 到 30 FPS 左右之间,我很乐意将其全部调整为 30FPS。
  • 我希望避免多次编码。

答案1

让我们重新唤醒这个被遗忘的话题!

尝试这个:

ffmpeg -i clip1.mp4 -i clip2.mp4 -i clip3.mp4 -i clip4.mp4 -i watermark.png -i soundtrack.mp3 -filter_complex "\
[1:v][2:v]concat[12clips];\
[12clips][4:v]overlay[12overlay];
[0:v][12overlay][3:v]concat=n=3[video];\
[0:a][5:a][3:a]concat=n=3:v=0:a=1[audio]\
" -map "[video]" -map "[audio]" -c:v libx264 -c:a aac output.mp4

在添加水印之前将中间的片段连接起来

[1:v][2:v]concat[12clips]

将水印应用到中间的夹子上

(您可能需要调整覆盖过滤器以获得水印的最佳效果)

[12clips][4:v]overlay[12overlay]

在应用水印之前,你可能必须使用 format=yuva420p 来在叠加时包含 alpha 通道

[4:v]format=yuva420[wateralpha];[12clips][wateralpha]overlay[12overlay]

加入所有视频片段

[0:v][12overlay][3:v]concat=n=3[video];

连接所有音频片段

[0:a][5:a][3:a]concat=n=3:v=0:a=1[audio]

映射流并编码!

 -map "[video]" -map "[audio]" -c:v libx264 -c:a aac output.mp4

让我知道进展如何!

相关内容