FFmpeg的介紹一(基礎(chǔ)部分)

第一部分

基礎(chǔ)術(shù)語(yǔ)

容器(Container)

容器就是一種文件格式炬藤,比如flv,mkv等碴里。包含下面5種流以及文件頭信息沈矿。

流(Stream)

是一種視頻數(shù)據(jù)信息的傳輸方式,5種流:音頻咬腋,視頻羹膳,字幕,附件根竿,數(shù)據(jù)陵像。

幀(Frame)

幀代表一幅靜止的圖像就珠,分為I幀,P幀醒颖,B幀妻怎。

編解碼器(Codec)

是對(duì)視頻進(jìn)行壓縮或者解壓縮,CODEC =COde (編碼) +DECode(解碼)

復(fù)用/解復(fù)用(mux/demux)

把不同的流按照某種容器的規(guī)則放入容器泞歉,這種行為叫做復(fù)用(mux)
把不同的流從某種容器中解析出來(lái)逼侦,這種行為叫做解復(fù)用(demux)

簡(jiǎn)介

FFmpeg的名稱來(lái)自MPEG視頻編碼標(biāo)準(zhǔn),前面的“FF”代表“Fast Forward”腰耙,F(xiàn)Fmpeg是一套可以用來(lái)記錄榛丢、轉(zhuǎn)換數(shù)字音頻、視頻挺庞,并能將其轉(zhuǎn)化為流的開(kāi)源計(jì)算機(jī)程序晰赞。可以輕易地實(shí)現(xiàn)多種視頻格式之間的相互轉(zhuǎn)換选侨。

FFmpeg的用戶有Google掖鱼,F(xiàn)acebook,Youtube侵俗,優(yōu)酷锨用,愛(ài)奇藝,土豆等隘谣。

組成

1增拥、libavformat:用于各種音視頻封裝格式的生成和解析,包括獲取解碼所需信息以生成解碼上下文結(jié)構(gòu)和讀取音視頻幀等功能寻歧,包含demuxers和muxer庫(kù)掌栅;

2、libavcodec:用于各種類型聲音/圖像編解碼码泛;

3猾封、libavutil:包含一些公共的工具函數(shù);

4噪珊、libswscale:用于視頻場(chǎng)景比例縮放晌缘、色彩映射轉(zhuǎn)換;

5痢站、libpostproc:用于后期效果處理磷箕;

6、ffmpeg:是一個(gè)命令行工具阵难,用來(lái)對(duì)視頻文件轉(zhuǎn)換格式岳枷,也支持對(duì)電視卡實(shí)時(shí)編碼;

7、ffsever:是一個(gè)HTTP多媒體實(shí)時(shí)廣播流服務(wù)器空繁,支持時(shí)光平移殿衰;

8、ffplay:是一個(gè)簡(jiǎn)單的播放器盛泡,使用ffmpeg 庫(kù)解析和解碼闷祥,通過(guò)SDL顯示;

FFmpeg處理流程

過(guò)濾器(Filter)

在多媒體處理中饭于,filter的意思是被編碼到輸出文件之前用來(lái)修改輸入文件內(nèi)容的一個(gè)軟件工具蜀踏。如:視頻翻轉(zhuǎn),旋轉(zhuǎn)掰吕,縮放等果覆。

語(yǔ)法:[input_link_label1][input_link_label2]… filter_name=parameters [output_link_label1][output_link_label2]…

過(guò)濾器圖link label :是標(biāo)記過(guò)濾器的輸入或輸出的名稱

1.視頻過(guò)濾器 -vf

如testsrc視頻按順時(shí)針?lè)较蛐D(zhuǎn)90度

ffplay -f lavfi -i testsrc -vf transpose=1

如testsrc視頻水平翻轉(zhuǎn)(左右翻轉(zhuǎn))

ffplay -f lavfi -i testsrc -vf hflip

2.音頻過(guò)濾器 -af

實(shí)現(xiàn)慢速播放,聲音速度是原始速度的50%

ffplay p629100.mp3 -af atempo=0.5

如何實(shí)現(xiàn)順時(shí)針旋轉(zhuǎn)90度并水平翻轉(zhuǎn)殖熟?

過(guò)濾器鏈(Filterchain)

基本語(yǔ)法

Filterchain = 逗號(hào)分隔的一組filter

語(yǔ)法:“filter1,filter2,filter3,…filterN-2,filterN-1,filterN”

順時(shí)針旋轉(zhuǎn)90度并水平翻轉(zhuǎn)

ffplay -f lavfi -i testsrc -vf transpose=1,hflip

如何實(shí)現(xiàn)水平翻轉(zhuǎn)視頻和源視頻進(jìn)行比較局待? 看過(guò)濾器鏈?zhǔn)侨绾螌?shí)現(xiàn)的。

過(guò)濾器鏈(Filterchain)

第一步: 源視頻寬度擴(kuò)大兩倍菱属。

ffmpeg -i jidu.mp4 -t 10 -vf pad=2*iw output.mp4

第二步:源視頻水平翻轉(zhuǎn)

ffmpeg -i jidu.mp4 -t 10 -vf hflip output2.mp4

第三步:水平翻轉(zhuǎn)視頻覆蓋output.mp4

ffmpeg -i output.mp4 -i output2.mp4 -filter_complex overlay=w compare.mp4

是不是很復(fù)雜钳榨?

用帶有鏈接標(biāo)記的過(guò)濾器圖(Filtergraph)只需一條命令。

過(guò)濾器圖(Filtergraph)

基本語(yǔ)法

Filtergraph = 分號(hào)分隔的一組filterchain

“filterchain1;filterchain2;…filterchainN-1;filterchainN”

Filtergraph的分類

1纽门、簡(jiǎn)單(simple) 一對(duì)一

2薛耻、復(fù)雜(complex)多對(duì)一, 多對(duì)多

過(guò)濾器圖(Filtergraph)

簡(jiǎn)單過(guò)濾器圖處理流程和 復(fù)雜過(guò)濾器圖處理流程:

從圖中可以發(fā)現(xiàn)復(fù)雜過(guò)濾器圖比簡(jiǎn)單過(guò)濾器圖少2個(gè)步驟赏陵,效率比簡(jiǎn)單高饼齿,ffmpeg建議盡量使用復(fù)雜過(guò)濾器圖。

回答上面提的問(wèn)題蝙搔,實(shí)現(xiàn)水平翻轉(zhuǎn)視頻和源視頻進(jìn)行比較

過(guò)濾器圖(Filtergraph)

用ffplay直接觀看結(jié)果:

ffplay -f lavfi -i testsrc -vf split[a][b];[a]pad=2*iw[1];[b]hflip[2];[1][2]overlay=w

F1: split過(guò)濾器創(chuàng)建兩個(gè)輸入文件的拷貝并標(biāo)記為[a],[b]

F2: [a]作為pad過(guò)濾器的輸入缕溉,pad過(guò)濾器產(chǎn)生2倍寬度并輸出到[1].

F3: [b]作為hflip過(guò)濾器的輸入,vflip過(guò)濾器水平翻轉(zhuǎn)視頻并輸出到[2].

F4: 用overlay過(guò)濾器把 [2]覆蓋到[1]的旁邊.

選擇媒體流

一些多媒體容器比如AVI吃型,mkv证鸥,mp4等,可以包含不同種類的多個(gè)流勤晚,如何從容器中抽取各種流呢枉层?

語(yǔ)法:

-map file_number:stream_type[:stream_number]

這有一些特別流符號(hào)的說(shuō)明:

1、-map 0 選擇第一個(gè)文件的所有流

2赐写、-map i:v 從文件序號(hào)i(index)中獲取所有視頻流返干, -map i:a 獲取所有音頻流,-map i:s 獲取所有字幕流等等血淌。

3、特殊參數(shù)-an,-vn,-sn分別排除所有的音頻,視頻悠夯,字幕流癌淮。

注意:文件序號(hào)和流序號(hào)從0開(kāi)始計(jì)數(shù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末沦补,一起剝皮案震驚了整個(gè)濱河市乳蓄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌夕膀,老刑警劉巖虚倒,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異产舞,居然都是意外死亡魂奥,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門易猫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)耻煤,“玉大人,你說(shuō)我怎么就攤上這事准颓」” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵攘已,是天一觀的道長(zhǎng)炮赦。 經(jīng)常有香客問(wèn)我,道長(zhǎng)样勃,這世上最難降的妖魔是什么吠勘? 我笑而不...
    開(kāi)封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮彤灶,結(jié)果婚禮上看幼,老公的妹妹穿的比我還像新娘。我一直安慰自己幌陕,他們只是感情好诵姜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著搏熄,像睡著了一般棚唆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上心例,一...
    開(kāi)封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天宵凌,我揣著相機(jī)與錄音,去河邊找鬼止后。 笑死瞎惫,一個(gè)胖子當(dāng)著我的面吹牛溜腐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瓜喇,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼挺益,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了乘寒?” 一聲冷哼從身側(cè)響起望众,我...
    開(kāi)封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎伞辛,沒(méi)想到半個(gè)月后烂翰,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蚤氏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年甘耿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞧捌。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡棵里,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出姐呐,到底是詐尸還是另有隱情殿怜,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布曙砂,位于F島的核電站头谜,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏鸠澈。R本人自食惡果不足惜柱告,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望笑陈。 院中可真熱鬧际度,春花似錦、人聲如沸涵妥。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蓬网。三九已至窒所,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間帆锋,已是汗流浹背吵取。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留锯厢,地道東北人皮官。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓脯倒,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親臣疑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子盔憨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

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

  • 使用 ffmpeg 縮放、裁剪讯沈、剪輯視頻 我們平時(shí)使用手機(jī)拍攝的視頻一般都在1080p及以上,在實(shí)際應(yīng)用中婿奔,比如共...
    瑪格納斯閱讀 1,870評(píng)論 2 1
  • 目錄 | TABLE OF CONTENT [TOC] 注意:為了避免專有名詞翻譯帶來(lái)的混淆缺狠,直接使用專有名詞原語(yǔ)...
    7e1928c398e2閱讀 9,248評(píng)論 0 4
  • 整體的目標(biāo) [ ] 完成將多張圖片轉(zhuǎn)換成視頻。并添加背景音樂(lè)的任務(wù)萍摊。 [ ] 完成將音頻混音到視頻中的任務(wù)挤茄。 [ ...
    deep_sadness閱讀 1,790評(píng)論 1 9
  • 告別31歲穷劈,想說(shuō)點(diǎn)什么,最近的自己變得有些多愁善感踊沸,內(nèi)心有那么一丟丟的沮喪歇终,不是為什么特別的事情,只是因?yàn)閮?nèi)心的那...
    左手可樂(lè)右手可可閱讀 993評(píng)論 1 2
  • 前幾天逼龟,在微博和微信上“宣布”了自己半年內(nèi)要慢慢退出對(duì)外漢語(yǔ)的消息评凝。消息一傳出,很多認(rèn)識(shí)的不認(rèn)識(shí)的朋友都跑來(lái)問(wèn)“為...
    眾山小閱讀 2,488評(píng)論 10 29