ffmpeg 踩坑實錄 添加實時水印(二)


一、背景介紹

      最近領導要求做一個視頻錄制的相關項目。其中,需要對視頻文件進行添加 實時時間水印。於是,我想到了使用之前的ffmpeg來做。

二、ffmpeg實際操作

       首先把需要添加水印的視頻文件,上傳到服務器指定位置 比如 “/usr/local/1.mp4”,這樣的地方。其次,我們需要了解如何去給視頻添加水印。

這里提供兩種方式,一種是靜態的,一種是動態的。(相關安裝請參考 《ffmpeg 踩坑實錄(一)》)

 

  靜態水印:

ffmpeg -i /usr/local/test/448da411-05cb-4ff2-a108-1721014e8e52.mp4 -vf drawtext="fontfile=arial.ttf:x=w-tw:fontcolor=white:fontsize=30:text='1q1q1'"  1.mp4

  動態水印:

 ffmpeg -i /usr/local/test/448da411-05cb-4ff2-a108-1721014e8e52.mp4 -vf drawtext="expansion=strftime:basetime=$(date +%s -d '2018-10-13 14:10:50'):fontfile=arial.ttf:x=w-tw:fontcolor=red:fontsize=30:text='%Y-%m-%d  %H\\:%M\\: %S"  1.mp4

    以上兩種,均在我本機實現過。前一種就是在視頻文件全程右上角 貼上了1q1q1q字樣的水印。

    后一種就是在視頻文件的右上角貼上了以“2018-10-13 14:10:50”為起始時間的動態時間水印。

 

三、命令相關內容詳解

    靜態水印中  -i 表示的是 輸入文件

                    -vf 表示的是  視頻濾鏡,使用了drawtext濾鏡,basetime是視頻時間戳的初始值,text是顯示時間的格式,fontsize后面一串是關於水印的顏色、字體、背景等設置

動態水印中 采取了 “expansion=strftime”的形式通過表達時,指定水印數值。

更多的內容,可以參考官方的文檔,其中給出了不少實際的案例。

 

四、存在的問題和待改進的地方

   1.靜態水印不滿足要求,驗證完成之后便沒有對其進行深入嘗試;

    2.動態水印,有兩個問題,第一個 是錄制完成之后才對其進行水印的添加,這樣打在視頻文件上的水印會跟實際錄制的時間有一定的誤差,如果不在意的仍可以使用該方法實現

                                              第二個 目前文中所列出來的命令,是指定了起始時間的。這樣來說,其實是不對的,因為服務器的時間在流逝。但可以采用java拼接命令行,在這個時候把當時的服務器時間插入進去。這樣完成了以當時服務器時間作為起始時間的 動態時間水印。

   3.效率問題,這次添加水印的視頻文件 是大約3分鍾時長的MP4文件,兩種處理加水印的方式 時間均在十秒左右,比較耗費時間。后期如果采用該方法,需要提升相關效率。

 

五、參考文獻

【1】《ffmpeg為視頻添加時間戳 - 手動編譯ffmpeg

【2】 《官方

 

六 補充

上述第四部分列出的問題中  關於動態時間水印的起始時間問題,可以通過前端請求到業務層,由業務層拼接 執行命令語句 。比如java,獲得當時服務器時間 然后拼接加水印的語句。即可獲得相關效果

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM