ffmpeg作程序的應該不少人都知道,我本身平時用的potplayer聽說由於使用了它的代碼而不開源被掛上了恥辱柱,前些日子接觸到了給視頻加水印的需求,大體是要用php使用命令行來執行ffmpeg程序處理視頻php
在下載服務器(服務器是windows的)對應的版本,設置好ffmpeg環境變量路徑,再就是cmd執行命令windows
ffmpeg -y -t 60 -i target.mp4 -vf drawtext=fontfile=simhei.ttf:text="abcd水印內容":x=w/10:y=h/2:fontsize=24:fontcolor=white:shadowy=2 new.mp4
解釋下參數服務器
y 直接確認,無需輸入y編輯器
t 60 截取前60秒,這是項目的一個特定需求函數
i 輸入原視頻字體
vf 這個其實我也不太清楚,彷佛是加濾鏡,文字水印也是以濾鏡加上去的編碼
drawtext 繪製文本,也就是文字水印,相關參數第一個彷佛要寫=,其它參數寫:命令行
fontfile 字體文件,windows好像會自動定位到C:\Windows\Fonts視頻
text 文字水印內容get
x x座標,能夠直接填數字,也能夠使用寬度計算如一半寬度w/2
y y座標,能夠直接填數字,也能夠使用高度計算如一半高度h/2
fontsize 水印字體大小,直接填數字,其它的沒怎麼研究
fontcolor 水印顏色,能填常見的white,yellow,rgb沒試過,不填彷佛沒有,不過也多是黑色
shadowy 不清楚
最後一個參數是新文件名
以上直接用cmd可以生成水印,至於中文我是直接在文本編輯器寫好在cmd粘貼執行的,固然比較可能遇到亂碼問題,水印的字體必須是中文字體,輸入中文必定要注意編碼,某些默認cmd編碼多是gbk,能夠先用chcp 65001換成utf8的環境,在php調用時我是用的iconv函數將內容從utf8轉換成gbk