我們想要使用ffmpeg去掉視頻中某個(gè)時(shí)間段中顯示的水印,指定水印位置及大小這樣一個(gè)需求褂傀;
使用 ffmpeg
去掉視頻中的水印是一項(xiàng)相對(duì)復(fù)雜的任務(wù)丑孩,但可以通過(guò)結(jié)合多個(gè) ffmpeg
濾鏡來(lái)實(shí)現(xiàn)焚刺。你需要知道水印的具體位置和大小病线,并使用 delogo
濾鏡來(lái)去除水印。
以下是如何使用 ffmpeg
去掉視頻中指定位置和大小的水印的步驟:
示例命令
假設(shè)水印的位置在視頻的左上角讨彼,位置為 (x=10, y=20)
歉井,大小為 (width=100, height=50)
。
bash
復(fù)制代碼
ffmpeg -i input.mp4 -vf "delogo=x=10:y=20:w=100:h=50" -c:a copy output.mp4
解釋
-
-i input.mp4
:指定輸入視頻文件哈误。 -
-vf "delogo=x=10:y=20:w=100:h=50"
:使用delogo
濾鏡來(lái)去除水印哩至。參數(shù)x
和y
是水印的左上角坐標(biāo)躏嚎,w
和h
是水印的寬度和高度。 -
-c:a copy
:復(fù)制音頻流菩貌,而不重新編碼卢佣。 -
output.mp4
:指定輸出視頻文件。
調(diào)整好水印位置箭阶,及水印大小后虚茶,預(yù)覽處理后的效果
這顯然不是我們想要的結(jié)果。你可能發(fā)現(xiàn)這個(gè)視頻背景是黑色的仇参,所以我們可以換種方式來(lái)去除水印嘹叫,即我們可以使用一張相同大小的黑色圖片蓋住水印位置;
使用 ffmpeg
去除視頻中的水印并用黑色背景填充該區(qū)域可以通過(guò) overlay
濾鏡來(lái)實(shí)現(xiàn)诈乒。具體步驟如下:
- 創(chuàng)建黑色圖片:首先需要?jiǎng)?chuàng)建一張黑色的圖片罩扇,大小與水印區(qū)域相同。
-
使用
ffmpeg
疊加黑色圖片:使用ffmpeg
將黑色圖片疊加到視頻上怕磨,從而覆蓋水印喂饥。
步驟1:創(chuàng)建黑色圖片
假設(shè)水印的大小為 300x300
,你可以使用 ffmpeg
創(chuàng)建一張這樣的黑色圖片:
ffmpeg -f lavfi -i color=c=black:s=300x300 -vframes 1 black.png
步驟2:使用 ffmpeg
疊加黑色圖片
假設(shè)水印的位置在 (x=100, y=700)
肠鲫,你可以使用 overlay
濾鏡將黑色圖片疊加到視頻上员帮,從而覆蓋水印:
ffmpeg -i input.mp4 -i black.png -filter_complex "overlay=100:700" -c:a copy output.mp4
調(diào)整圖片大小及水印覆蓋位置后导饲,預(yù)覽下實(shí)現(xiàn)效果
所以按這個(gè)思路集侯,如果背景色不是黑色,要如何處理呢帜消?
- 簡(jiǎn)單背景的可以按上述方式處理
- 復(fù)雜背景的
- 有delogo濾鏡,就有其它的濾鏡浓体,可以嘗試下
- 是否可以截取前一幀或后一幀畫面中的局部來(lái)覆蓋水印畫面呢泡挺?
好吧,今天的分享就到這里了命浴,如果感覺(jué)對(duì)你有用娄猫,點(diǎn)個(gè)贊支持下唄