第一種方法
視頻轉(zhuǎn)換為圖片 然后縮放到指定大小并裁剪
然后圖片每一幀與水印進行合并繪制, 文字進行合并繪制成一張新圖
然后提取音頻文件
然后合并處理后的每一張視頻幀圖并且和 音頻進行合并
第二種方法
單獨使用ffmpeg給視頻進行縮放到指定比例 單獨給圖片縮放到指定比例,
但是這里是視頻要放到圖片的下面,那么添加水印的方法 一般是水印比圖片大,這里挖空透明的是 圖片,如果圖片轉(zhuǎn)換為一個圖片視頻,那么應(yīng)該怎么做。
第三種方法
使用-filter_complex方法操作圖層,但是目前遇到的問題是把視頻放到下面就黑屏,不上去還是算正常的,另外還需要解決縮放比例換算問題。
我想說的是我目前用的是第一種,我嘗試過同時添加縮放和裁剪 以及同時繪制文字和圖片都不行都會報錯.
后面兩種都需要解決縮放放大的問題, 因為視頻海報的情況是要把視頻放到海報鏤空區(qū)域里面,不規(guī)則遮蓋,而且圖片是從服務(wù)器加載的,而視頻是不確定的大小。
由于視頻的大小不確定,圖片也是從服務(wù)器下載的,坐標也等于是要動態(tài)計算,所以不是簡單的添加水印就可以實現(xiàn),首先添加水印那么水印在這里基本上是比視頻大的 我目前的方法是每一個圖片幀和海報圖片進行合并,但是效率十分低下處理10秒視頻要2分鐘,ios竟然自帶,只需要10秒就可以搞定 ,
我想到的另外一個方法就是先把圖片制作成視頻,但是變成視頻了,那么透明通道估計有問題了,做成視頻之后然后 被添加的視頻被當(dāng)做一個水印 添加到 這個 圖片視頻的指定區(qū)域(還需要縮放,裁剪方可放到指定區(qū)域)
但是感覺不支持,就感覺懵逼了。
那么請問ffmpeg有沒有什么辦法 讓視頻在圖片的下面, 而且 圖片指定成1080x650 大小, 然后 讓視頻移動到圖片指定坐標 進行合成
灬ヽ輕描,情隨 2018/3/20 18:06:39
現(xiàn)在的問題難在視頻大小不確定,圖片大小不確定 , 但是視頻要縮放到 服務(wù)器指定的 圖片的某個區(qū)域xy坐標而且大小也是服務(wù)器給定的。 其實上面的文字 什么都是可以編輯的。
圖片效果
由于圖片我覺得上傳麻煩那么這里
https://note.youdao.com/share/?id=178ed0f340e19d6d809dbfd5406347a4&type=note#/
2018-3-23 16:52:42
我特么就是悟性太低,或者太浮躁,我今天才認真的看語法發(fā)現(xiàn)也沒啥復(fù)雜的。。那么現(xiàn)在是可以實現(xiàn)一個命令讓當(dāng)前的視頻變小,并且還在輸入的圖片下面. 目前是圖片在下面,視頻在上面,因為還沒解決一個問題,就是好像視頻放到下面的話,圖片竟然不透明。
ffmpeg -i %file% -i 1920.png -filter_complex [1:v]scale=650:1080[img1];[0:v]scale=300:300[videoresult];[img1][videoresult]overlay=0:0:1 -y %out%
這句話的語法分為3句
第一次操作是 [1:v] 操作圖片 縮放到650x1080高 然后結(jié)果作為變量image1, 變量結(jié)束,然后操作0:v 縮放的是0軌道也就是視頻 咯,操作結(jié)果為:videoresult 最后就是排序, 排序這里是圖片放到下面然后視頻放到上面,然后 0:0表示xy坐標,1表示支持透明,但是我這里反過來不行,還在折騰中,如果實現(xiàn)了的話就可以解決我的視頻海報制作效率問題了。
最后附上命令語法糖
左上角:overlay=10:10
右上角:overlay=main_w-overlay_w-10:10
左下角:overlay=10:main_h-overlay_h-10
右下角:overlay=main_w-overlay_w-10:main_h-overlay_h-10

郁悶的是為毛透明圖片變成了白色背景,而如果把視頻放到下面 則 直接變成黑色,還是不知道咋搞。
上圖的白色區(qū)域?qū)嶋H上是透明的,然后還要把這個不確定比例的視頻縮放到指定大小放到指定區(qū)域而且放到圖片的下面。
2018-3-23 17:56:42
無法跨越的死循環(huán)
::無法放到下面 視頻是縮小了圖片是沒有變
::ffmpeg -i %file% -i 1920.png -filter_complex [1:v]scale=650:1080:[img1];[0:v]scale=300:300[videoresult];[img1][videoresult]overlay=0:50:1 -y %out%
::導(dǎo)致圖片的大小變成了視頻的大小。
::ffmpeg -i %file% -i 1920.png -filter_complex [1:v]scale=650:1080:[img1];[0:v]scale=300:300[videoresult];[videoresult][img1]overlay=0:50:1 -y %out%
::調(diào)整i的順序并不能改變宿命,可以看成最后生成的視頻大小是根據(jù)誰放到前面根據(jù)誰來的。
::Invalid stream specifier: img1. 感覺是用過之后不能繼續(xù)用了
ffmpeg -i 1920.png -i %file% -i test.jpg -filter_complex [1:v]scale=300:300[videoresult];[0:v]scale=650:1080:[img1];[2:v]scale=650:1080:[bg];[videoresult][img1]overlay=0:50:1[hecheng1];[bg][hecheng1]overlay=0:0:1 -y %out%
pause
:end
這里的代碼我是尋找各種讓視頻放到透明圖片下面的方法,最后得出結(jié)論overlay=0:0:1 只能防止2個參數(shù),而且永遠只能根據(jù)前面那個[]來生成視頻的大小,如果前面的那個變量的大熊啊是500x500那么前面后面都無法跨越。。
最后我又想到了一個辦法,先用一張透明圖片和這個視頻合并成一個變量,然后變量合成結(jié)果放到下面然后自己的放到上面就完美解決了這個問題。
ffmpeg -i 1920nocontent.png nextline[2:v]scale=650:1080:[file3];[file1][file2]overlay=0:50:1[hecheng];[hecheng][file3]overlay=0:0:1 -y %out%
pause
ffmpeg -i 1920nocontent.png -i %file% -i 1920.png -filter_complex [0:v]scale=650:1080:[file1];[1:v]scale=300:300[file2];
:end
1920nocontent.png 是表示透明圖片
%file%是一個視頻
1920.png是中間不規(guī)則挖空的圖片
第一個圖片作為file1變量
第二個參數(shù)視頻作為file2變量
第三個參數(shù)就是封面了
然后file1和file2合并成一個和file3變量大小一樣的圖片作為變量hecheng
然后hecheng放到下面 file3放到上面就完美解決了這個問題.
效果圖如下,暫時不知道透明色生成的視頻如何改成黑色或者其他顏色,有知道的朋友歡迎分享。 哈哈,我的視頻制作可以提高效率了!

寫了這么多這里是探索方法3,方法1已經(jīng)實現(xiàn)了,但是10秒的視頻紅米note4x需要2分鐘才能搞定。ios特么10秒就可以搞定,
我的任務(wù)不止如此,還需要做視頻海報,哎
補充:
ffmpeg可以做很多事情,除了用命令行之外當(dāng)然可以引入ffmpeg的一些c代碼編寫,實現(xiàn)起來效果更佳.