2013-03-18 75 views
0

需要使用ffmpeg爲視頻的前3秒添加水印。這是我現在得到的:在視頻開頭顯示水印

ffmpeg -y -i '255871.mov' -qscale:v 0 -qscale:a 0 -vf '[in] transpose=1 [out];movie=watermark.png , select=lte(t\,3) [bg]; [out][bg] overlay=x=20:y=main_h-60 [out]' output.mp4 

它將視頻旋轉到右側,並在視頻底部添加水印前3秒。問題是水印在整個視頻中是可見的。

認爲選擇根本不起作用。試過以下命令:

ffmpeg -y -i '255871.mov' -qscale:v 0 -qscale:a 0 -vf '[in] transpose=1 [out];movie=watermark.png , select=0 [bg]; [out][bg] overlay=x=20:y=main_h-60 [out]' output.mp4 

水印不可見。這是正確的,並證明select過濾器按預期工作。據我瞭解,這是ffmpeg的工作原理:它使最短視頻的最後一幀可見。

如何強制ffmpeg在N秒後丟棄顯示水印?

+0

相關討論:[FFmpeg-user:在視頻開頭顯示水印](http://ffmpeg.org/ pipermail/ffmpeg的用戶/ 2013三月/ 014116.html)。 – LordNeckbeard 2013-03-19 17:55:03

+0

yeap,它是我的:) – mente 2013-03-19 19:40:03

+0

我只是將它添加到其他人的情況下,對該線程的回覆將對他們有用。 – LordNeckbeard 2013-03-19 19:51:19

回答

1

必須自己回答。 ffmpeg mailing list幫助我解決了這個問題。 主要想法是使用Apple Animation編解碼器(它支持透明度)將現有水印轉換爲視頻,並使用fade過濾器淡出所創建視頻的最後一幀。

實施例:

ffmpeg -loop 1 -i watermark.png -t 3 -c qtrle -vf 'fade=out:73:1:alpha=1' watermark.mov 
ffmpeg -y -i '255871.mov' -qscale:v 0 -qscale:a 0 -vf '[in] transpose=1 [out];movie=watermark.mov [bg]; [out][bg] overlay=x=20:y=main_h-60 [out]' output.mp4 

淡出是必需的因爲FFMPEG使用疊加視頻的最後一幀用於視頻的其餘部分。該過濾器通過參數alpha=1使最後一幀完全透明。其實它應該是fade=out:74:1:alpha=1,但它不適合我,不知道爲什麼