《FFmpeg Basics》中文版-01-FFmpeg基本介紹

正文

為了最優(yōu)地使用各種FFmpeg組件,需要正確理解FFmpeg的基本屬性和特性。如果你基礎差了點瓣赂,看了不知道說的啥,您可以繼續(xù)下一章片拍,并在遇到需要了解的內容的時候再回來看煌集。

FFmpeg介紹

FFmpeg是根據(jù)GNU通用公共許可證獲得許可的多媒體處理自由軟件項目的名稱。 該項目最受歡迎的部分是用于視頻和音頻編碼/解碼的ffmpeg命令行工具捌省,其主要特點是速度快苫纤,輸出質量高和文件大小比較小。 FFmpeg中的“FF”表示 媒體播放器上的表示“快進”的控制按鈕纲缓,“mpeg”是Moving Pictures Experts Group的縮寫卷拘。 FFmpeg標志包含Z形圖案,這是圖片中以8x8塊圖示的熵編碼方案的特征祝高。


所有組件的編程語言是C語言恭金,源代碼可以在Linux/Unix、Windows褂策、Mac OS X等系統(tǒng)上編譯横腿。

本書是使用官方二進制版本在Microsoft Windows上創(chuàng)建的颓屑,但幾乎所有的指令和示例都應該在其他操作系統(tǒng)上無任何更改的情況下運行。 有關啟用的選項的詳細信息耿焊,請參閱詞匯表中的FFmpeg配置條目揪惦。

相關視頻資料分享【點擊免費報名,報名成功即可查看】

音視頻免費學習地址:FFmpeg/WebRTC/RTMP/NDK/Android音視頻流媒體高級開發(fā)

C/C++罗侯,Linux器腋,F(xiàn)Fmpeg ?webRTC ?rtmp ?hls rtsp ffplay ?srs

FFmpeg開發(fā)者

該項目由Fabrice Bellard于2000年開始,F(xiàn)abrice Bellard是QEMU和Tiny C Compiler的創(chuàng)建者钩杰,也是一位出色的程序員纫塌。 現(xiàn)在該項目由FFmpeg團隊維護,開發(fā)人員來自許多國家讲弄,主要的開發(fā)人員可以參與合同工作:

參與FFmpeg開發(fā)

任何人都可以通過在網(wǎng)頁上加入特定的郵件列表來參與FFmpeg的開發(fā)和更新:

http://www.ffmpeg.org/contact.html

表中列出了可用的郵件列表:

FFmpeg郵件列表


FFmpeg 下載

主要下載來源位于如下網(wǎng)頁:

http://ffmpeg.org/download.html

Windows的用戶可以從如下網(wǎng)頁下載二進制文件(推薦使用靜態(tài)構建):

http://ffmpeg.zeranoe.com/builds

許多Linux發(fā)行版已經(jīng)安裝了FFmpeg工具措左,否則它們可以被編譯,這在OS X上也是可能的避除,或者OS X二進制文件可以從web頁面下載:

http://www.evermeet.cx/ffmpegorhttp://ffmpegmac.net

命令行語法

ffmpeg命令行工具的語法相對簡單怎披,重要的是在正確的位置鍵入所需的參數(shù),而不是在各種輸入和輸出之間混合選項瓶摆。ffmpeg命令的一般結構如下凉逛,需要注意的是全局選項影響所有輸入和輸出:


Windows命令提示符及其替代方法

Windows上的ffmpeg命令行工具是通過命令提示符來管理的,可以通過Windows ->所有程序->附件->命令提示群井。它也可以從一個快捷方式Win+R開始状飞,然后鍵入cmd,然后輸入书斜。


Windows命令提示符在關閉時不會保存所使用的命令的歷史昔瞧,因為有一些具有額外特性的免費應用程序,如文件管理菩佑、編輯自晰、宏、FTP客戶端等稍坯,建議選擇高級的FFmpeg工具程序酬荞。下一個表描述了幾種免費的替代方案。

分享一個音視頻高級開發(fā)交流群,需要學習資料的點擊788280672加入群自取,資料包括(C/C++瞧哟,Linux混巧,F(xiàn)Fmpeg ?webRTC ?rtmp ?hls rtsp ffplay ?srs 等等),免費分享勤揩。

Windows命令提示符選擇


接下來的行描述了最好的替代FAR管理器咧党,在Linux上它可以用一個類似的應用程序Midnight Commander替代,如果安裝了它陨亡,它將從控制臺的mc命令啟動傍衡。

FAR Manager是一個受歡迎的文件管理器深员、編輯器和FTP客戶端,它支持宏蛙埂、插件和其他高級特性倦畅。用戶界面是高度可定制的,并被翻譯成多種語言绣的。下一幅圖展示了它的命令歷史窗口叠赐,它在輸入新命令時顯示,因此用戶可以輕松地選擇之前使用的命令并最終編輯它屡江。

接下來的行描述了最好的替代FAR管理器芭概,在Linux上它可以用一個類似的應用程序Midnight Commander替代,如果安裝了它惩嘉,它將從控制臺的mc命令啟動罢洲。

FAR Manager是一個受歡迎的文件管理器、編輯器和FTP客戶端宏怔,它支持宏、插件和其他高級特性畴椰。用戶界面是高度可定制的臊诊,并被翻譯成多種語言。下一幅圖展示了它的命令歷史窗口斜脂,它在輸入新命令時顯示抓艳,因此用戶可以輕松地選擇之前使用的命令并最終編輯它。


對于其高級文件編輯器帚戳,在創(chuàng)建ffmpeg批處理時玷或,F(xiàn)AR Manager會很有用,這在批處理文件章節(jié)中有介紹片任。 還需要文件編輯器來將媒體文件包含在網(wǎng)頁中-“網(wǎng)絡視頻”章節(jié)的主題偏友。 界面的自定義開始于F9鍵并支持選擇選項選項卡。

路徑設置

將下載的FFmpeg命令行實用程序(ffmpeg.exe对供,ffplay.exe位他,ffprobe.exe)復制到環(huán)境變量Path部分中包含的目錄是可以實現(xiàn)的,因此可以從任何目錄調用它們而無需編寫他們完整的路徑产场。

或者鹅髓,您可以將FFmpeg程序復制到其他目錄,例如C:\ media京景,然后通過控制面板 - >系統(tǒng)和安全 - >系統(tǒng) - >高級系統(tǒng)設置將此文件夾添加到系統(tǒng)路徑窿冯。 請點擊環(huán)境變量按鈕,向下滾動系統(tǒng)變量的滾動條确徙,點擊路徑醒串,然后點擊編輯按鈕执桌。 在彈出的窗口中單擊編輯系統(tǒng)變量變量值字段,將光標移動到行尾厦凤,添加文本

;C:\media

點擊OK按鈕鼻吮。分號分隔特定的目錄,別復制较鼓。


對于命令提示符的當前會話椎木,可以使用命令設置路徑:

set path=%path%;C:\path_to_ffmpeg.exe

例如,如果文件ffmpeg.exe被復制到目錄C:\media博烂,命令是:

set path=%path%;C:\media

重命名為縮寫形式(懶人專區(qū))

命令名稱ffmpeg有6個字符香椎,如果每次用的話都輸入"ffmpeg"這六個字符就太麻煩了,想個簡單的辦法禽篱,建議將文件ffmpeg.exe重命名為f.exe(ffplay.exe至fp.exe等)或類似的簡寫形式以保存 時間并防止被誤認畜伐。 在命令提示符中,你可以使用以下命令:

ren ffmpeg.exe f.exe

為了清晰起見躺率,本書總是使用完整的命令形式ffmpeg玛界。

顯示輸出預覽

在各種視頻測試中,我們可以通過直接在屏幕上顯示命令輸出來節(jié)省大量時間悼吱,而不是將其保存到文件中慎框,也不是在媒體播放器中預覽。

FFplay媒體播放器預覽

使用簡化的命令后添,而不是使用ffmpeg工具生成一個新文件笨枯。

ffmpeg -i input_file ... test_options ... output_file

我們可以使用將顯示與ffmpeg完全相同的ffplay,使用該命令保存到文件中

ffplay -i input_file ... test_options

使用SDL輸出設備預覽遇西。

此預覽由表中描述的SDL(簡單的DirectMedia層)輸出設備生成:

輸出設備:SDL


描述設備的選擇


請注意馅精,SDL設備只能顯示具有yuv420p像素格式的輸出,并且使用其他輸入類型的選項-pix_fmt具有一個值yuv420p必須被預先處理粱檀,否則會顯示一個錯誤洲敢,例如:

可以在FFmpeg中使用的SI前綴

當指定數(shù)值各種ffmpeg選項如比特率或最大文件大小可以使用常見的SI后綴:K:千(103),M為百萬(106),G十億(10^ 9),等下一個示例指定一個新的比特率1.5 mbps的輸出文件,所有命令給相同的結果:

請注意,在FFmpeg文檔中茄蚯,SI前綴被稱為后綴沦疾,因為它們必須在數(shù)值之后立即輸入。

后綴B(字節(jié))可以在ffmpeg選項中使用數(shù)值第队,并將數(shù)值乘以8哮塞。它可以與其他前綴相結合,以表示千字節(jié)(KB)凳谦、兆字節(jié)(MB)等忆畅。例如,為輸出文件設置10兆字節(jié)的最大文件大小,可以使用下一個命令:


FFmpeg的代碼轉換

ffmpeg程序讀入內存中指定的任意數(shù)量的輸入的內容家凯,根據(jù)輸入的參數(shù)或程序的默認值對其進行處理缓醋,并將結果寫入任意數(shù)量的輸出。輸入和輸出可以是計算機文件绊诲、管道送粱、網(wǎng)絡流、抓取設備等掂之。

在代碼轉換過程中抗俄,ffmpeg在libavformat庫中調用demuxers來讀取輸入,并從數(shù)據(jù)包中獲取編碼數(shù)據(jù)世舰。如果有更多的輸入动雹,ffmpeg可以通過跟蹤任何活動輸入流的最低時間戳來保持它們的同步。然后解碼器從編碼的數(shù)據(jù)包中生成未壓縮的幀跟压,在可選的過濾后胰蝠,幀被發(fā)送到編碼器。編碼器產(chǎn)生新的編碼包震蒋,它被發(fā)送到muxer并寫入到輸出茸塞。

FFmpeg工具的重要部分是過濾器,它可以被組織成過濾鏈和filtergraphs查剖。Filtergraphs可以是簡單的或復雜的钾虐。在解碼源和編碼輸出之間實現(xiàn)濾波處理。轉碼過程在下一個圖中說明梗搅。


Filters, filterchains禾唁,filtergraphs

在多媒體處理中效览,術語過濾器是指在編碼到輸出之前修改輸入的軟件工具无切。過濾器分為音頻和視頻過濾器(請參閱詞匯表中的過濾器)。FFmpeg內置了許多多媒體過濾器丐枉,可以通過多種方式組合它們哆键。具有復雜語法的命令根據(jù)指定的參數(shù)從一個過濾器到另一個過濾器。這簡化了媒體處理瘦锹,因為有有損壓縮的媒體流的多譯碼和編碼會降低整體質量籍嘹。FFmpeg的過濾API(應用程序編程接口)是libavfilter軟件庫,它允許過濾器有多個輸入和輸出弯院。過濾器包括在輸入和輸出之間使用-vf選項的視頻過濾器和-af選項音頻過濾器辱士。例如,下一個命令生成一個測試模式順時針旋轉90°使用轉置過濾器(7中描述。章):



過濾器通常用于filterchains(逗號分隔的過濾器序列)和filtergraphs(分號分隔的filterchains序列)嘀略。如果使用了任何空格沦辙,那么filterchain必須用引號括起來棕洋。在filtergraphs中遂庄,可以使用表示所選filterchain輸出的鏈接標簽头岔,并可以在以下的filtergraphs中使用塔拳。例如,我們希望將輸入視頻與hqdn3d過濾器輸出的輸出進行比較峡竣。如果沒有filtergraphs靠抑,我們必須至少使用兩個命令,例如:


分割過濾器將輸入分為2個輸出標簽[a]和[b]适掰,然后將[a]鏈接用作第二個filterchain的輸入颂碧,它為標記[a]的比較創(chuàng)建了一個pad。[b]鏈接被用作第三個filterchain的輸入攻谁,它創(chuàng)建一個標記為[b]的輸出稚伍。最后一個filterchain使用[A]和[B]標簽作為覆蓋過濾器的輸入,從而產(chǎn)生最終的比較戚宦。另一個例子是在下一個圖中个曙。


選擇的媒體流

一些媒體容器如AVI、Matroska受楼、MP4等可以包含多種類型的流垦搬,F(xiàn)Fmpeg可以識別5種流類型:音頻(a)、附件(t)艳汽、數(shù)據(jù)(d)猴贰、字幕(s)和視頻(v)。

使用-map選項選擇流河狐,然后使用流說明符和語法:

File_number和stream_number也表示為file_index和stream_index米绕,從0開始計數(shù),這意味著第一個是0馋艺,第二個是1栅干,等等。

-map 0選擇所有類型的所有流捐祠。

-map i:v從文件中選擇所有的視頻流碱鳞,用i (index), -map i:a選擇所有的音頻流踱蛀,-map i:s選擇所有字幕流窿给,等等。

特殊選項- - -vn率拒, -sn分別排除所有音頻崩泡、視頻或字幕流。

如果輸入文件包含更多相同類型的流猬膨,而-map選項不被使用角撞,那么選擇的是每種類型的1個流。例如,如果文件包含2個視頻流靴寂,選擇的是具有較高分辨率的磷蜀,對于音頻選擇的流有更多的通道,等等百炬,細節(jié)如下圖所示:



除了特定的-map選項褐隆,流指定符還與許多其他選項一起使用:

流的形式說明符


Lavfi虛擬設備

在前面的部分中,我們使用了一個帶有l(wèi)avfi值的-f選項剖踊,其中l(wèi)avfi是在表中描述的libavfilter虛擬輸入設備的名稱:


顏色名稱

一些視頻過濾器和源有一個顏色參數(shù)庶弃,需要指定需要的顏色,并且有4種顏色規(guī)范的方法(默認值為黑色):

1.顏色被指定為W3C(萬維網(wǎng)聯(lián)盟)標準名稱德澈,以其十六進制值按字母順序排列的標準名稱的列表如下圖所示歇攻。請注意,這里有幾個同義詞:aqua = cyan, fuchsia = magenta和gray = grey梆造。

2.顏色被指定為十六進制數(shù)的形式0 xrrggbb @AA,RR紅色通道,GG是綠色通道和BB是藍色通道,例如0 x0000ff是藍色的,0 xffff00是黃色的,等等缴守。(@AA)是一個可選的alpha通道,指定有多少不透明的顏色,顏色在通道與一個@符號字符。Alpha通道值要么是從0x00到0xff的十六進制數(shù)字镇辉,要么是介于0.0和1.0之間的十進制數(shù)屡穗,其中0.0 (0x00)是完全透明的,1.0 (0xff)是完全不透明的忽肛。例如村砂,半透明度的綠色是0x00ff00@0.5。

3屹逛。和之前的方法一樣,但表示十六進制數(shù)字系統(tǒng)使用#符號而不是0 x前綴,一樣在HTML代碼中,例如# ff0000是紅色的,# ffffff是白色的,等等础废。請注意,#前綴不能使用alpha通道,這意味著# 0000 ff@0x34是好的,但沒有# 0000 ff@ # 34。

4.顏色是用一個特殊的值隨機指定的罕模,結果是由計算機產(chǎn)生的隨機顏色评腺。


原文地址:https://mp.csdn.net/mp_blog/creation/editor/123763273

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市手销,隨后出現(xiàn)的幾起案子歇僧,更是在濱河造成了極大的恐慌图张,老刑警劉巖锋拖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異祸轮,居然都是意外死亡兽埃,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門适袜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來柄错,“玉大人,你說我怎么就攤上這事∈勖玻” “怎么了给猾?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長颂跨。 經(jīng)常有香客問我敢伸,道長,這世上最難降的妖魔是什么恒削? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任池颈,我火速辦了婚禮,結果婚禮上钓丰,老公的妹妹穿的比我還像新娘躯砰。我一直安慰自己,他們只是感情好携丁,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布琢歇。 她就那樣靜靜地躺著,像睡著了一般梦鉴。 火紅的嫁衣襯著肌膚如雪矿微。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天尚揣,我揣著相機與錄音涌矢,去河邊找鬼。 笑死快骗,一個胖子當著我的面吹牛娜庇,可吹牛的內容都是我干的。 我是一名探鬼主播方篮,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼名秀,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了藕溅?” 一聲冷哼從身側響起匕得,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎巾表,沒想到半個月后汁掠,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡集币,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年考阱,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鞠苟。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡乞榨,死狀恐怖秽之,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情吃既,我是刑警寧澤考榨,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站鹦倚,受9級特大地震影響董虱,放射性物質發(fā)生泄漏。R本人自食惡果不足惜申鱼,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一愤诱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧捐友,春花似錦淫半、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至猴鲫,卻和暖如春对人,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拂共。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工牺弄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人宜狐。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓势告,卻偏偏與公主長得像,于是被迫代替她去往敵國和親抚恒。 傳聞我的和親對象是個殘疾皇子咱台,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內容