我有一個 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.png
到base.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 為影片添加浮水印。它涉及定位細節。