使用 FFmpeg 在單獨的軌道中建立浮水印

使用 FFmpeg 在單獨的軌道中建立浮水印

我有一個 PNG(alpha)檔案和一個視訊檔案。我想創建一個視頻,其中第一個軌道是圖像,第二個軌道是視頻(PNG over video)。問題是 PNG 不保留透明度。

我需要在視訊軌道上使用 ffmpeg 在單獨的軌道中建立浮水印(PNG)。

ffmpeg -i base.mov -i logo.png -map 0 -map 1 output.mov

答案1

添加水印的語法略有不同。為此,您需要視訊過濾器,它已與 FFmpeg 捆綁在一起。

我不確定您是否可以將透明浮水印添加到單獨的軌道中。原因是圖像本身(PNG“流”)需要轉換為實際的視頻軌道(例如使用 x264) - 並且由於視頻編碼器在此階段不支援透明度,因此您不會獲得透明圖像。


下面將會新增logo.pngbase.mov右上角。您可以使用以下參數來確定位置 - 在我的範例中,我只是將其放置在距邊框十個像素的位置:

  • main_w(主視訊寬度)
  • main_h(主視訊高度)
  • overlay_w(疊加視訊寬度)
  • overlay_h (疊加視訊高度)

過濾器命令將是:

movie='logo.png' [logo]; [in][logo] overlay=main_w-overlay_w-10:10 [out]

將其變成完整的 FFmpeg 指令:

ffmpeg -i base.mov -vf "movie='logo.png' [logo]; [in][logo] overlay=main_w-overlay_w-10:10 [out]" -c:v libx264 -crf 20 out.mov

這些-c:v libx264 -crf 20參數決定輸出視訊編解碼器及其品質(其中 CRF 可能為 19 到 24,具體取決於您想要的品質;越低越好)。

這裡有一篇關於該主題的相當好的部落格文章:如何使用 FFmpeg 為影片添加浮水印。它涉及定位細節。

相關內容