我試圖以編程方式覆蓋使用FFmpeg的另一個視頻的頂部的圖像或視頻。看來AVFilter可以做到這一點。FFmpeg AVFilter覆蓋/水印以編程方式
有很多關於如何使用命令行做類似事情的例子,但是我沒有找到使用AVFilter編程的例子,除了doc/examples/filtering.c,它可以幫助我但不夠真實。 我已經可以對視頻進行解碼和編碼,我只需要學習如何過濾解碼的幀並添加水印。
是否有任何編程使用libavfilter的例子?
是否有使用覆蓋或電影過濾器的例子?
我試圖以編程方式覆蓋使用FFmpeg的另一個視頻的頂部的圖像或視頻。看來AVFilter可以做到這一點。FFmpeg AVFilter覆蓋/水印以編程方式
有很多關於如何使用命令行做類似事情的例子,但是我沒有找到使用AVFilter編程的例子,除了doc/examples/filtering.c,它可以幫助我但不夠真實。 我已經可以對視頻進行解碼和編碼,我只需要學習如何過濾解碼的幀並添加水印。
是否有任何編程使用libavfilter的例子?
是否有使用覆蓋或電影過濾器的例子?
的命令:
ffmpeg –i inputvideo.avi -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=10:10 [out]" outputvideo.flv
產生具有在左上角的圖像 「watermarklogo.png」 視頻。從另一個程序調用該命令應該足夠簡單。滴滴
打破下來有點明白了吧:
ffmpeg
是你將使用添加水印的程序。
-i
用於指定輸入文件。
inputvideo.avi
是您的輸入文件,由-i
指定。
-vf
用於指定視頻過濾器。在這種情況下,這是引號中的所有內容。
movie=watermarklogo.png
將加載您要用作水印的文件。在這裏,我們將文件加載爲視頻源(使用movie
),無論文件是否爲視頻。在這種情況下,它是一個圖像。
[watermark]
標記剛加載的文件。該標籤將用於代碼的其餘部分。
[in]
和[out]
指的是視頻的輸入流和輸出流。
overlay
正好在[watermark]
標籤後面使用,以便引用它。在這種簡單的情況下,我們把overlay
放在10:10
。這意味着水印將從頂部和左側偏移10個像素。如果您想要右下角,則可以使用overlay=main_w-overlay_w-10:main_h-overlay_h-10
,其中main_w
是輸入流的寬度,overlay_h
是疊加文件的高度,依此類推。
最後,outputvideo.flv
顯然是您希望將結果保存到的文件。
其他信息:
我發現這個信息通過the site Dmitry had mentioned中的註釋。亞歷克斯曾經提到,這個頁面可能對於那些不熟悉這種事情的人來說太複雜了。然而,我從來沒有做過這樣的事情,在幾分鐘內我就得到了我相信正在尋求的結果。
注:我的時候,我得到的錯誤麻煩了一下:
error while opening encoder for output stream #0.1
如果你有可能需要手動設置使用-ar參數的採樣頻率相同的問題(例如,-ar 22050)。
您可以定義水印的時間嗎?可以說我想要水印從00:00開始並在@ 01:00消失,這可能嗎? – rroche 2012-08-31 23:10:51
@rroche查看[這篇文章](http://stackoverflow.com/questions/9160771/ffmpeg-watermark-first-30-second)。費利克斯的答案可能是最簡單的,但德米特里的答案(與上面相同的德米特里)有點整齊,並允許淡出水印。 – golmschenk 2012-09-01 01:55:20
這個問題涉及到使用AVFilter庫,而不是調用FFMPEG二進制文件。 – Erik 2012-09-04 02:23:32
該代碼示例可以輕鬆修改爲應用任意過濾器。問題是什麼?有關使用疊加層和電影過濾器的示例,請參閱[如何使用FFmpeg爲視頻加水印](http://www.idude.net/index.php/how-to-watermark-a-video-using-ffmpeg)。 – 2012-02-06 06:48:44
該示例的問題是它過載(2個過濾器,過濾器圖等)。對於一個新手而且想知道如何應用一個AVFilter的人來說,這是令人困惑的,因爲它並沒有說明開始所需的東西。 – 2012-07-13 21:53:52