《FFmpeg Basics》中文版-15-圖像處理

寫在前面

如果您對音視頻技術感興趣笼痛,可以訂閱我的專題:音視頻專輯
也可以關注我的簡書賬戶: 張芳濤祈秕,我后期會發(fā)布更多的音視頻以及圖像處理方面的文章唯蝶。

正文

雖然FFmpeg工具的主要用途與音頻和視頻有關访雪,但ffmpeg可以對各種圖像格式進行解碼和編碼详瑞,并且許多圖像相關任務可以快速完成。 在網絡服務器上使用ffmpeg可創(chuàng)建Web圖像編輯器臣缀,支持FFmpeg的網絡主機相信信息位于Web視頻一章坝橡。

支持的圖像格式

表格中列出了FFmpeg支持的圖像格式及其特征后綴。 除LJPEG(無損JPEG)以外的所有這些文件類型都可以解碼精置,除EXR计寇,PIC和PTX之外都可以編碼。
FFmpeg支持的圖像格式

擴展名 編碼 解碼 描述
.Y.U.V X X 每個組件的一行文件
BMP X X 微軟BMP圖像
DPX X X 數碼照片交換
EXR X OpenEXR
GIF X X 動畫gif是未壓縮的
JPG X X 不支持漸進式JPEG
JP2 X X JPEG 2000
JLS X X JPEG-LS
LJPG X 無損的JPEG
PAM X X PAM是帶有alpha支持的PNM擴展
PBM X X 便攜式位圖圖像
PCX X X PC畫筆
PGM X X 便攜式GrayMap形象
PGMYUV X X PGM與U和V的分量在YUV 4:2 0
PIC X Pictor/PC Paint
PNG X X 便攜式網絡圖形
PPM X X 便攜式PixelMap形象
PTX X V.Flash PTX格式
SGI X X SGI RGB圖像格式
RAS X X Sun Rasterfile圖像格式
TIFF X X YUV, JPEG和一些擴展還沒有被支持
TGA X X Truevision Targa 圖像格式
XBM X X X位圖圖像格式
XFace X X XFace圖像格式
XWD X X X窗口轉儲圖像格式

創(chuàng)建圖像

從視頻截圖

為了將一個視頻幀從指定的時刻保存到圖像中,使用-ss(從start開始)選項來指定從開始的延遲番宁。在時間t中截圖的語法

ffmpeg -i input -ss t image.type

我的測試命令:

ffmpeg -i /Users/zhangfangtao/Desktop/test.mp4 -ss 20 /Users/zhangfangtao/Desktop/image.jpg

結果生成了第二十秒的一張圖片:


背后的視頻正好處在20秒鐘的位置

-ss選項也可以在輸入文件之前使用元莫,但結果不太準確。例如蝶押,從文件視頻中截取1小時23分45秒的截圖踱蠢。avi,我們可以使用命令:

 ffmpeg -i videoclip.avi -ss 01:23:45 image.jpg

從視頻動畫gif

視頻文件是從可以保存到GIF動畫幀的幀中創(chuàng)建的棋电,這是一種經常在web上以條幅和動畫形式使用的圖像類型茎截。因為幀是沒有壓縮的,所以只有在較短的視頻中才有用赶盔,否則GIF動畫文件的文件大小就會非常大企锌。例如,要將一個短的SWF文件轉換為GIF動畫招刨,以便為沒有Flash插件的用戶創(chuàng)建一個替代文件霎俩,我們可以使用該命令(必須將像素格式設置為rgb24):

ffmpeg -i promotion.swf -pix_fmt rgb24 promotion.gif

我的測試命令:

ffmpeg -i /Users/zhangfangtao/Desktop/test.mp4 -pix_fmt rgb24 /Users/zhangfangtao/Desktop/test.gif

  • 結果就是生成了一個gif圖

來自FFmpeg視頻源的圖像

另一個創(chuàng)建圖像的選項是使用內置的視頻源,在表中描述:


名稱 描述 圖片
color 提供以其名稱或十六進制格式指定的任何顏色沉眶,例如顏色=c=#87cefa
mptestsrc 不同的測試模式打却,詳細的描述都在章節(jié)的調試和測試中
rgbtestsrc 紅綠藍顏色模式
smptebars 彩色條紋圖案來自于電影和電視工程師協會,工程指南(1-1990)
testsrc 帶有滾動漸變和時間戳的視頻測試模式

mptestsrc視頻源的默認分辨率為512x512像素谎倔,其他列出的源分辨率為320x240像素柳击。最通用的是能夠生成任何顏色和任何大小的圖像的彩色圖像源,例如為一個標題大小的728x90像素創(chuàng)建一個teal背景片习,我們可以使用這個命令捌肴。

ffmpeg -f lavfi -i color=c=#008080:s=728x90 leaderboard.jpg

我的測試命令:

ffmpeg -f lavfi -i color=c=#008080:s=728x90 /Users/zhangfangtao/Desktop/timer2.jpg

*生成的圖片:


描述 提供一種顏色為320x240的矩形,并帶有指定的顏色
語法 color[=c=clr[:d=time[:r=fps[:sar=value[:s=resolution]]]]]
所有參數都是可選的
斜體中的項目將被替換為實際值
參數描述
color, c 源的顏色藕咏、顏色的名稱(不區(qū)分大小寫的匹配)或0xRRGGBB[AA]序列状知,可能后跟一個alpha說明符,默認值為黑色
duration, d 源視頻的持續(xù)時間孽查,被接受的句法是:[-]HH[:]]]或[-]S +[m…]饥悴,如果未指定,或表示持續(xù)時間為負盲再,則視頻將永遠生成
rate, r 源視頻的幀速率西设,每秒生成的幀數,它可以是format frame_rate_factor / frame_rate_denumator答朋,一個整數或浮點數贷揽,或者一個有效的視頻幀率縮寫,默認值是25
sar 樣本縱橫比的源視頻
size, s 源視頻的大小梦碗、窗體寬度的字符串或相應的縮寫禽绪,默認值為320x240

視頻轉換為圖像

視頻文件是由可以通過一個命令保存到圖像文件的幀組成的蓖救,結果圖像的數量是視頻幀速率的產物,它的持續(xù)時間為秒丐一。例如藻糖,如果剪輯。avi文件的持續(xù)時間為1分鐘库车,幀率為25 fps巨柒,下面的命令將產生60x25=1500張圖片,每秒25張:

ffmpeg -i clip.avi frame%d.jpg

輸出目錄將包含1500個文件柠衍,名為frame1.jpg洋满、frame2.jpg等。為了保持所有文件名的長度相同珍坊,我們在%符號后指定附加數字的數目:

ffmpeg -i clip.avi frame%4d.jpg

現在該目錄包含名為frame0001.jpg牺勾、frame0002.jpg的文件…,frame1500.jpg。

我的測試命令:

 ffmpeg -i /Users/zhangfangtao/Desktop/test.mp4  /Users/zhangfangtao/Desktop/Images/frame%03d.jpg
  • 效果:
image.png

調整大小阵漏,裁剪和填充圖像

圖像可以以類似視頻的方式調整大小驻民,例如,彩色視頻源的輸出分辨率為320x240像素履怯,可以通過兩種方式放大到VGA分辨率:

  • 使用彩色視頻源的s或大小參數回还。

  • 使用-s選項來輸出
    例如,接下來的兩個命令具有相同的結果叹洲,CIF(352x288)大小的橙色矩形:

    ffmpeg -f lavfi -i color=c=orange:s=cif orange_rect1.png
    ffmpeg -f lavfi -i color=c=orange -s cif orange_rect2.png
    

當過濾鏈內的輸入應該具有特定的分辨率時柠硕,帶參數的大小規(guī)格對過濾鏈很有用,因此大小不能被指定為選項运提。 一個常見的例子是使用顏色源作為疊加層的輸入之一蝗柔。

裁剪圖像與使用作物過濾器的視頻是一樣的,下一個示例的結果是rgbtestsrc視頻源中心的150x150像素的正方形:

ffmpeg -f lavfi -i rgbtestsrc -vf crop=150:150 crop_rgb.png

圖像可以像使用pad過濾器的視頻一樣進行padd民泵,例如下一個命令為smptebars視頻源創(chuàng)建一個橙色框架:

ffmpeg -f lavfi -i smptebars -vf pad=360:280:20:20:orange pad_smpte.jpg

翻轉癣丧,旋轉和疊加圖像

翻轉圖像的鏡像版本與由hflip和vflip過濾器提供的翻轉視頻類似,例如栈妆,接下來的兩個命令會翻轉輸入圖像胁编,第一個是水平的,第二個是垂直的:

ffmpeg -i orange.jpg -vf hflip orange_hflip.jpg
ffmpeg -i orange.jpg -vf vflip orange_vflip.jpg

我的測試命令:

ffmpeg -i /Users/zhangfangtao/Desktop/001.jpg -vf hflip /Users/zhangfangtao/Desktop/002.jpg 
ffmpeg -i /Users/zhangfangtao/Desktop/001.jpg -vf vflip /Users/zhangfangtao/Desktop/003.jpg 

旋轉的圖像也類似于旋轉的視頻签钩,使用的轉置濾波器有四個可能的值:

  • 值0逆時針旋轉90度,垂直翻轉坏快。
  • 數值1按順時針方向旋轉90度铅檩。
  • 數值2逆時針旋轉90度。
  • 值3順時針旋轉90度莽鸿,然后垂直翻轉昧旨。

例如,把圖像順時針旋轉90°我們可以使用命令:

ffmpeg -i image.png -vf transpose=1 image_rotated.png

我的測試命令:

ffmpeg -i /Users/zhangfangtao/Desktop/001.jpg  -vf transpose=1 /Users/zhangfangtao/Desktop/004.jpg 
  • 生成的圖像:
004旋轉90度之后的照片.jpg

類似于視頻疊加拾给,圖像可以通過疊加過濾器放置在另一個圖像上。例如兔沃,要將smptebars包含到rgbtestsrc視頻源中蒋得,我們可以使用以下命令:

ffmpeg -f lavfi -i rgbtestsrc -s 400x300 rgb.png
ffmpeg -f lavfi -i smptebars smpte.png
ffmpeg -i rgb.png -i smpte.png -filter_complex overlay=(W-w)/2:(H-h)/2 ^ rgb_smpte.png

我的測試命令:

ffmpeg -f lavfi -i rgbtestsrc -s 400x300 /Users/zhangfangtao/Desktop/005.png
ffmpeg -f lavfi -i smptebars /Users/zhangfangtao/Desktop/006.png
ffmpeg -i /Users/zhangfangtao/Desktop/005.png  -i /Users/zhangfangtao/Desktop/006.png  -filter_complex overlay=\(W-w\)/2:\(H-h\)/2 /Users/zhangfangtao/Desktop/007.png 
  • 生成的效果圖(從左到右依次是005,006乒疏,007):


圖像類型之間的轉換

幾乎所有支持的圖像類型都可以轉換為另一個额衙,異常是EXR、LJPEG怕吴、PIC和PTX文件類型窍侧,只能進行解碼。轉換的語法是:

ffmpeg -i image.type1 image.type2

例如转绷,要將PNG圖像轉換為JPG圖像格式伟件,我們可以使用以下命令:

ffmpeg -i illustration.png illustration.jpg

我的測試命令:

 ffmpeg -i /Users/zhangfangtao/Desktop/001.jpg  /Users/zhangfangtao/Desktop/001.png

創(chuàng)建視頻圖像

視頻來自一個圖像

將靜態(tài)圖像轉換為視頻很容易,可以用來創(chuàng)建幻燈片议经,從圖像(添加文本)的短視頻連接到一起斧账,連接視頻在第23章中有描述。例如煞肾,在photo.jpg文件中創(chuàng)建一個10秒的視頻咧织,我們在命令中包含一個值true或1的-loop boolean選項:

ffmpeg -loop 1 -i photo.jpg -t 10 photo.mp4

我的測試命令:

ffmpeg -i /Users/zhangfangtao/Desktop/001.jpg  /Users/zhangfangtao/Desktop/001.png
  • 顯示的效果:

視頻來自多個圖像

要從多個圖像創(chuàng)建視頻,它們的文件名必須以數字結束扯旷,這些數字與圖像編碼到視頻文件的順序一致拯爽。在這種情況下,媒體格式是在輸入之前指定的钧忽,它是一個image2格式毯炮。例如,來自img1.jpg耸黑、img2.jpg的100幅圖片桃煎。,img100.jpg可以使用以下命令創(chuàng)建一個4秒視頻大刊,幀率為25 fps为迈。

ffmpeg -f image2 -i img%d.jpg -r 25 video.mp4

如果圖像編號以0開頭,例如img001.jpg缺菌、img002.jpg等葫辐,以提供相同的文件名長度,則命令為:

ffmpeg -f image2 -i img%3d.jpg -r 25 video.mp4

%符號后的數字必須與圖像文件名中的位數相同伴郁。

我的測試命令:

ffmpeg -f image2 -i /Users/zhangfangtao/Desktop/Images/frame%3d.jpg /Users/zhangfangtao/Desktop/001.mp4

  • 結果就是生成了一個沒有聲音的視頻耿战,視頻里面的圖片就是我剛才從test.mp4里面解析出來的圖片
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市焊傅,隨后出現的幾起案子剂陡,更是在濱河造成了極大的恐慌狈涮,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鸭栖,死亡現場離奇詭異歌馍,居然都是意外死亡,警方通過查閱死者的電腦和手機晕鹊,發(fā)現死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門松却,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人捏题,你說我怎么就攤上這事玻褪。” “怎么了公荧?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵带射,是天一觀的道長。 經常有香客問我循狰,道長窟社,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任绪钥,我火速辦了婚禮灿里,結果婚禮上,老公的妹妹穿的比我還像新娘程腹。我一直安慰自己匣吊,他們只是感情好,可當我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布寸潦。 她就那樣靜靜地躺著色鸳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪见转。 梳的紋絲不亂的頭發(fā)上低滩,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天借杰,我揣著相機與錄音撑螺,去河邊找鬼蝇恶。 笑死,一個胖子當著我的面吹牛乘客,可吹牛的內容都是我干的狐血。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼易核,長吁一口氣:“原來是場噩夢啊……” “哼匈织!你這毒婦竟也來了?” 一聲冷哼從身側響起耸成,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤报亩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后井氢,有當地人在樹林里發(fā)現了一具尸體弦追,經...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年花竞,在試婚紗的時候發(fā)現自己被綠了劲件。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡约急,死狀恐怖零远,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情厌蔽,我是刑警寧澤牵辣,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站奴饮,受9級特大地震影響纬向,放射性物質發(fā)生泄漏。R本人自食惡果不足惜戴卜,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一逾条、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧投剥,春花似錦师脂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至泳桦,卻和暖如春汤徽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背灸撰。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工谒府, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人浮毯。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓完疫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親债蓝。 傳聞我的和親對象是個殘疾皇子壳鹤,可洞房花燭夜當晚...
    茶點故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內容

  • 寫在前面 如果您對音視頻技術感興趣,可以訂閱我的專題:音視頻專輯也可以關注我的簡書賬戶: 張芳濤饰迹,我后期會發(fā)布更多...
    張芳濤閱讀 11,540評論 11 38
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,777評論 25 707
  • 上次跟小伙伴們探討了下有個做金融的男朋友是什么感覺,今天就說說女方吧锹淌!別以為我不知道你們這些單身狗在想什么匿值? 說到...
    金融從業(yè)考試閱讀 1,260評論 0 0
  • 周四午餐讀書會,第一場赂摆。 以色列梅厄夫人的自傳:我的一生挟憔。 旁聽的人忍不住給大家介紹猶太歷史。 于是烟号,我們又做了一...
    Eastree閱讀 188評論 0 0
  • 努力的意義是隨時可以跳出自己厭惡的圈子绊谭。在小打卡的日簽上看到這句話的時候,有種直擊內心的感覺汪拥。這句話真的太...
    zxy張雪瑩閱讀 274評論 0 0