我正在嘗試使用 ffmpeg 在影片的前 30 秒添加我的標誌。我有一個名為 的影片d1.mp4
和一個名為 的徽標logo.png
。
影片開始時,水印應位於影片的左上角或右上角,並在 30 秒後消失。
你能告訴我如何添加它嗎?
答案1
ffmpeg -i in.mp4 -framerate 30000/1001 -loop 1 -i logo.png -filter_complex
"[1:v] fade=out:st=30:d=1:alpha=1 [ov]; [0:v][ov] overlay=10:10 [v]" -map "[v]"
-map 0:a -c:v libx264 -c:a copy -shortest out.mp4
假設標誌是帶有 Alpha 通道的單一靜態影像,並且您希望將其覆蓋在幀速率為 30000/1001(NTSC 速率)的影片上。-framerate
如果不同,請變更以符合您的輸入影片。如果您的徽標是視頻,則省略-framerate 30000/1001 -loop 1
。如果徽標沒有 Alpha 通道,請透過format=yuva420p,
在 之前插入 例如 來新增一個通道fade
。
這將在 x,y 位置 10,10 處顯示徽標 30 秒,然後淡出 1 秒。
答案2
使用overlay
視訊濾鏡在影片中添加徽標:
ffmpeg -i video.mp4 -i logo.png -filter_complex "[0:v][1:v]overlay" \
-codec:a copy out.mp4
要理解這個命令,你需要知道什麼是流說明符是並且正在閱讀FFmpeg 過濾簡介會有幫助的。[0:v]
指的是第一個輸入( )的視訊串流video.mp4
,[1:v]
指的是第二輸入( logo.mp4
)的視訊串流。透過這種方式,您可以知道overlay
要使用哪些輸入。您可以省略[0:v][1:v]
, 並且overlay
仍然可以工作,但建議明確並且不要依賴可能未知的預設值。
預設情況下,徽標將放置在左上角。
使用-codec:a copy
意志串流複製音頻。這只是重新復用音訊而不是重新編碼。將其視為音訊的“複製和貼上”。
行動標誌
此範例將徽標向右移動 10 像素,向下移動 10 像素:
ffmpeg -i video.mp4 -i logo.png -filter_complex "[0:v][1:v]overlay=10:10" \
-codec:a copy out.mp4
此範例會將徽標從右側移動 10 像素並向下移動 10 像素:
ffmpeg -i video.mp4 -i logo.png -filter_complex \
"[0:v][1:v]overlay=main_w-overlay_w-10:10" -codec:a copy out.mp4
main_w
指「主」輸入(背景 或[0:v]
)的寬度,並overlay_w
指「覆蓋」輸入(標誌 或 )的寬度[1:v]
。因此,在示例中,這可以轉換為overlay=320-90-10:10
或overlay=220:10
。
定時疊加
有些過濾器可以處理時間軸編輯這允許你使用算術表達式以確定何時應套用過濾器。請參閱ffmpeg -filters
查看哪些過濾器支援時間軸編輯。
此範例將顯示徽標 30 秒:
ffmpeg -i video.mp4 -i logo.png -filter_complex \
"[0:v][1:v]overlay=10:10:enable=between(t\,0\,30)" -codec:a copy out.mp4
如果您想淡化徽標,請參閱mark4o的回答。