android端使用ffmpeg給視頻添加圖片水印

直接舉個(gè)栗子:

public static String[] addwaterMark(String imageUrl,String videoUrl,String outputUrl){
        String[] commands = new String[9];
        commands[0] = "ffmpeg";
        //輸入
        commands[1] = "-i";
        commands[2] = videoUrl;
        //水印
        commands[3] = "-i";
        commands[4] = imageUrl;//此處的圖片地址換成帶透明通道的視頻就可以合成動(dòng)態(tài)視頻遮罩蚪燕。
        commands[5] = "-filter_complex";
        commands[6] = "overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2";
        //覆蓋輸出
        commands[7] = "-y";//直接覆蓋輸出文件
        //輸出文件
        commands[8] = outputUrl;
        return commands;
    }

private void makeVideo(){
        final String[] _commands=addwaterMark(imageUrl,videoUrl,outputUrl);
        Runnable compoundRun=new Runnable() {
            @Override
            public void run() {
                FFmpegKit.execute(_commands, new FFmpegKit.KitInterface() {
                    @Override
                    public void onStart() {
                        Log.d("FFmpegLog LOGCAT","FFmpeg 命令行開(kāi)始執(zhí)行了...");
                    }

                    @Override
                    public void onProgress(int progress) {
                        Log.d("FFmpegLog LOGCAT","done com"+"FFmpeg 命令行執(zhí)行進(jìn)度..."+progress);
                    }

                    @Override
                    public void onEnd(int result) {
                        Log.d("FFmpegLog LOGCAT","FFmpeg 命令行執(zhí)行完成...");
                    }
                });
            }
        };
        ThreadPoolUtils.execute(compoundRun);
    }

addwaterMark()中的videoUrl是原始文件地址,imageUrl是水印圖片地址奔浅,outputUrl是視頻輸出地址馆纳。
-filter_complex 參數(shù)是表示使用混合濾鏡把圖片疊加到視頻上。
overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2 是將圖片居中汹桦,當(dāng)然這里的具體位置可以自己調(diào)鲁驶。
一般來(lái)說(shuō),加個(gè)水印就這樣就可以了舞骆。

然而钥弯,實(shí)際中我們總是需要來(lái)點(diǎn)大小的調(diào)整。
使用scale參數(shù)可以調(diào)整水印大小督禽。
像這樣

String[] commands = new String[9];
commands[0] = "ffmpeg";
//輸入
commands[1] = "-i";
commands[2] = videoUrl;
//水印
commands[3] = "-i";
commands[4] = imageUrl;//此處的圖片地址換成帶透明通道的視頻就可以合成動(dòng)態(tài)視頻遮罩脆霎。
commands[5] = "-filter_complex";
commands[6] = "[1:v]scale=100:200[s];[0:v][s]overlay=0:0";
//覆蓋輸出
commands[7] = "-y";//直接覆蓋輸出文件
//輸出文件
commands[8] = outputUrl;
return commands;

好,現(xiàn)在你可以隨意添加任意大小位置的水印了狈惫。
那么睛蛛,能不能再給力一點(diǎn)?我們使用兩張圖片疊加雙重水印虱岂。
命令行格式如下:

String[] commands = new String[11];
commands[0] = "ffmpeg";
//輸入
commands[1] = "-i";
commands[2] = videoUrl;
//水印
commands[3] = "-i";
commands[4] = image1;
commands[5] = "-i";
commands[6] = image2;
commands[7] = "-filter_complex";
commands[8] = "[1:v]scale=100:100[img1];[2:v]scale=1280:720[img2];[0:v][img1]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2[bkg];[bkg][img2]overlay=0:0";
//覆蓋輸出
commands[9] = "-y";//直接覆蓋輸出文件
//輸出文件
commands[10] = outputUrl;
return commands;
附1:

用來(lái)當(dāng)水印的圖片也支持gif格式玖院,那么gif要在整個(gè)視頻播放階段循環(huán)的話就請(qǐng)使用-ignore_loop參數(shù)。這個(gè)參數(shù)的值為1則忽略gif文件本身的循環(huán)設(shè)置第岖,為0的話則使用文件本身的設(shè)置。
比如這樣:

String[] commands = new String[11];
commands[0] = "ffmpeg";
//輸入
commands[1] = "-i";
commands[2] = videoUrl;
//水印
commands[3] = "-ignore_loop";
commands[3] = "0";
commands[3] = "-i";
commands[4] = image1.gif;
commands[5] = "-i";
commands[6] = image2;
commands[7] = "-filter_complex";
commands[8] = "[1:v]scale=100:100[img1];[2:v]scale=1280:720[img2];[0:v][img1]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2[bkg];[bkg][img2]overlay=0:0";
//覆蓋輸出
commands[9] = "-y";//直接覆蓋輸出文件
//輸出文件
commands[10] = outputUrl;
return commands;
附2:

以上命令也適用與透明視頻的疊加试溯。把圖片地址換成帶透明通道的視頻文件的地址就好了蔑滓。(帶透明通道的視頻素材網(wǎng)上可以下載到很多,一般都是mov格式)(然而不知道怎么像gif那樣設(shè)置循環(huán),疊加的視頻僅播放一次键袱。有知道的同學(xué)分享下經(jīng)驗(yàn)唄燎窘。)

附3:

ffmpeg的命令行參數(shù)除了頭尾,中間各組的順序是無(wú)關(guān)的蹄咖,但是各組參數(shù)內(nèi)部不能放錯(cuò)褐健。比如屬于設(shè)置濾鏡的參數(shù)穿插到了輸出里了的話就會(huì)出錯(cuò)。


相關(guān):
在android studio中使用FFmpeg
FFmpeg命令行語(yǔ)法之-filter_complex


使用ffmpeg添加文字水印一直沒(méi)有成功澜汤,打包了freetype也沒(méi)有搞定蚜迅。暫時(shí)只好把文字生成為png圖片湊合一下。有沒(méi)有小伙伴提供下思路或者范例的俊抵?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末谁不,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子徽诲,更是在濱河造成了極大的恐慌刹帕,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,843評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谎替,死亡現(xiàn)場(chǎng)離奇詭異偷溺,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)钱贯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)亡蓉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人喷舀,你說(shuō)我怎么就攤上這事砍濒。” “怎么了硫麻?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵爸邢,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我拿愧,道長(zhǎng)杠河,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任浇辜,我火速辦了婚禮券敌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘柳洋。我一直安慰自己待诅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布熊镣。 她就那樣靜靜地躺著卑雁,像睡著了一般募书。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上测蹲,一...
    開(kāi)封第一講書(shū)人閱讀 51,231評(píng)論 1 299
  • 那天莹捡,我揣著相機(jī)與錄音,去河邊找鬼扣甲。 笑死篮赢,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的琉挖。 我是一名探鬼主播启泣,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼粹排!你這毒婦竟也來(lái)了种远?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤顽耳,失蹤者是張志新(化名)和其女友劉穎坠敷,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體射富,經(jīng)...
    沈念sama閱讀 45,367評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡膝迎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了胰耗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片限次。...
    茶點(diǎn)故事閱讀 39,754評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖柴灯,靈堂內(nèi)的尸體忽然破棺而出卖漫,到底是詐尸還是另有隱情,我是刑警寧澤赠群,帶...
    沈念sama閱讀 35,458評(píng)論 5 344
  • 正文 年R本政府宣布羊始,位于F島的核電站,受9級(jí)特大地震影響查描,放射性物質(zhì)發(fā)生泄漏突委。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評(píng)論 3 327
  • 文/蒙蒙 一冬三、第九天 我趴在偏房一處隱蔽的房頂上張望匀油。 院中可真熱鬧,春花似錦勾笆、人聲如沸敌蚜。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)钝侠。三九已至该园,卻和暖如春酸舍,著一層夾襖步出監(jiān)牢的瞬間帅韧,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工啃勉, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留忽舟,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓淮阐,卻偏偏與公主長(zhǎng)得像叮阅,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子泣特,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)浩姥、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,096評(píng)論 4 62
  • 走過(guò)半生后眯分,愿你每次流淚都是喜極而泣,愿你精疲力盡時(shí)都有樹(shù)可倚柒桑。愿你學(xué)會(huì)釋?xiě)押笠簧磔p弊决,愿你無(wú)悔亦無(wú)懼安度余生。 飄...
    向行閱讀 506評(píng)論 2 5
  • 隨緣而得之友誼 共度青春宿時(shí)光 閱書(shū)論影共成長(zhǎng) 席地暢享人生夢(mèng) 文藝清新討人喜 知性?xún)?nèi)斂惹人愛(ài) 相隔異地倍思念 愿...
    我是芥末小姐閱讀 161評(píng)論 0 0
  • 工作以后進(jìn)入社會(huì)魁淳,突然間發(fā)現(xiàn)有一種顏色叫灰色飘诗,有些事情不只是有黑和白,經(jīng)歷了一段痛苦感情界逛,終于覺(jué)得該放手了昆稿,真...
    輕輕改變閱讀 207評(píng)論 0 0
  • 感恩早上起來(lái)發(fā)愿讓自己成為覺(jué)醒悟的人,感恩今天是女兒一模的日子仇奶,我卻不能在跟前陪她貌嫡,或許讓她更放松,感恩還有近三個(gè)...
    liuxiaorui閱讀 105評(píng)論 0 0