1. 程式人生 > 實用技巧 >網路推流攝像頭RTMP協議視訊平臺EasyDSS點播視訊可以新增水印嗎?

網路推流攝像頭RTMP協議視訊平臺EasyDSS點播視訊可以新增水印嗎?

RTMP協議視訊平臺EasyDSS同時具備視訊點播和視訊直播的功能,在部分情況下,如果播放視訊有水印,大多使用者都會選擇把水印去掉(logo水印如何去除),而當用戶需要保護自己的視訊不被盜用的話,則會選擇新增水印。

直播1.png

昨天碰到一位使用者要求在EasyDSS平臺點播視訊中,對視訊新增水印。對EasyDSS點播視訊新增水印,TSINGSEE青犀視訊研發團隊採用了ffmpeg的avfilter 功能來實現。

命令如下:

ffmpeg -i input.mp4 -acodec copy -vcodec copy -vf “movie=logo.png [watermark]; [in][watermark] overlay=value_x:value_y :1[out]” output.mp4

-i input.avi 表示要進行水印新增處理的輸入視訊
-acodec copy表示保持音訊編碼不變
-vcodec copy表示保持視訊編碼不變
-vf “…” 雙引號中間是水印處理引數

movie是指圖片水印路徑,搭配overlay一起使用,重要的是overlay=後面的部分,第一個引數(value_x)表示水印距離視訊左邊的距離,第二個引數(value_y)表示水印距離視訊上邊的距離,第三個引數 為1,表示支援透明水印。

參考:https://ffmpeg.org/ffmpeg-filters.html#overlay-1

movie=logo.png [watermark] 表示使用圖片水印為當前目錄下的logo.png,[watermark] 代表當前的水印引數。

[in][watermark] overlay=value_x:value_y :1[out] 表示[watermark] 位於[in]之上。[in]即為輸入的input.mp4

如:
ffmpeg -i input.mp4 -acodec copy -vcodec copy -vf “movie=logo.png [watermark]; [in][watermark] overlay=10:20 :1[out]” output.mp4
表示在視訊檔案input.mp4 上新增一個logo.png的水印圖片,水印位於視訊的(10,20)處。

31.png

32.png

原視訊截圖:

33.png

新增水印後處理的圖:

34.png

可以看到左上角新增上的水印圖片。

同樣也可以滿足客戶對水印縮放控制的需求,使用-filter_complex 來實現。相比-vf, filter_complex適合開發複雜的濾鏡功能,如同時對視訊進行裁剪並旋轉。

Ffmpeg -i input.mp4 -i log.jpg -filter_complex [1:v]scale=100:100[img1];[0:v][img1]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2[out] -y output2.mp4

[1:v]兩個引數,1表示的是操作物件的編號。在此命令中0就是原始視訊檔案input.mp4,1就是image1.png,而另一個引數v表示操作物件裡的視訊資訊。

[img1]是這個操作過濾器的名字。(當然這個名字可以自定義)
[1:v]scale=100:100[img1]的意思就是對圖片log.jpg進行縮放的操作,並將這個操作的結果命名為img1。

overlay前面[0:v][img1] 含義如下: 0指的原始視訊,是將[img1]疊加到0物件的視訊上。是把image1.png疊加到input.mp4上。這裡需要注意的就是順序:後一個物件疊加到前一個上,後一個物件在上層。如果寫成[img1][0:v],那相對本例其實就是把視訊疊加到圖片log.jpg上。這樣的話一般來說由於視訊通常是全屏,等於用視訊覆蓋了圖片,水印完全看不到了。

操作如下:

35.png

36.png

操作完成後,可以看到水印進行了縮放,並且水印的位置也進行了調整,位於視訊中間位置

37.png

所以對於客戶的需要,增加水印,對水印進行位置,大小調整都可以通過ffmpeg來實現。如果大家對本文的介紹說明不理解的話,也可以直接給我留言,我會及時回覆大家的。EasyDSS有很多功能都可以通過二次開發實現,二次開發的介面我們也都會提供,如果大家對此比較感興趣,歡迎直接與我聯絡。

EasyDSS分屏播放介面如下:

直播4.png