《FFmpeg Basics》中文版-19-FFmpeg組件和項目

寫在前面

如果您對音視頻技術(shù)感興趣梧躺,可以訂閱我的專題:音視頻專輯
也可以關(guān)注我的簡書賬戶: 張芳濤,我后期會發(fā)布更多的音視頻以及圖像處理方面的文章嘀韧。

正文

FFmpeg項目由4個命令行工具和9個軟件庫組成梁只,可供許多公司和軟件項目使用。 ffmpeg工具的語法和用法在第一章有相關(guān)介紹旨别。

FFplay介紹

FFplay是一個簡單的媒體播放器,能夠播放ffmpeg工具可以解碼的所有媒體格式汗茄,請參閱第二章顯示可用的格式和其他列表秸弛。

FFmpeg組件:ffplay

描述 簡單的媒體播放器,使用FFmpeg和SDL庫,它主要用于測試和開發(fā)
語法 ffplay [options] [input_file]
參數(shù)描述
options 幾乎所有可用于ffmpeg工具的選項都可以與ffplay一起使用
input_file 輸入可以是常規(guī)文件递览,管道叼屠,網(wǎng)絡(luò)流,抓取設(shè)備等

在顯示相同的輸出之前绞铃,F(xiàn)Fplay在編碼到文件之前非常有用镜雨,請參閱第一章的顯示輸出預(yù)覽部分了解詳細信息。 例如儿捧,要使用ffplay在lightorange背景上顯示各種testsrc視頻源荚坞,我們可以使用以下命令:

ffplay -f lavfi -i testsrc -vf pad=400:300:(ow-iw)/2:(oh-ih)/2:orange

我的測試命令:

ffplay -f lavfi -i testsrc -vf pad=400:300:\(ow-iw\)/2:\(oh-ih\)/2:orange
  • 顯示的效果:

如果我們想從文件文檔中觀看視頻。從文件評論中收聽mp3格式的音頻菲盾,我們可以使用以下命令:

ffplay -i lavfi "movie=document.avi[out0];amovie=comments.mp3[out1]
  • 聲明一下颓影,書上寫錯了,至少在我電腦上這樣執(zhí)行是不行的懒鉴,下面是我的測試命令:

    ffplay -f lavfi "movie=/Users/zhangfangtao/Desktop/test.mp4[out0];amovie=/Users/zhangfangtao/Desktop/DYZDJ.mp3[out1]"
    
  • 執(zhí)行結(jié)果就是播放視頻里面的畫面诡挂,然而聲音是我指定的mp3的聲音。

如果FFmpeg被編譯為-enable-libiec61883選項疗我,連接到計算機的FireWire DV/HDV設(shè)備的輸入可以通過命令顯示:

ffplay -f iec61883 -i auto
  • 我電腦上測試報錯咆畏。也不知道哪兒可以用得著。吴裤。旧找。

重放期間的鍵和鼠標控制

在播放過程中,ffplay可以用鍵和鼠標控制麦牺,細節(jié)在下面這個表格里面:

key 描述
q, ESC 退出
f 切換全屏
p, Spacebar 切換暫停
a 音頻通道
v 視頻通道
t 可用的字幕
w 在可用的顯示模式選項中循環(huán):視頻钮蛛,rdft,音頻
向左的箭頭 /向右的箭頭 向后/向前拖動10秒鐘
向下翻頁/ 向上翻頁 向后/向前拖動10分鐘
點擊鼠標 查找與寬度部分對應(yīng)的文件中的百分比

就像MPlayer一樣剖膳,ffplay也會退出ESC鍵魏颓,并用空格鍵切換暫停。 f鍵切換全屏模式吱晒,但有時它會中止Windows計算機甸饱,至少是在舊版本會這樣。 如果媒體文件包含多個視頻流仑濒,則可以使用v鍵循環(huán)播放叹话,音頻流可以使用t鍵循環(huán)播放一個鍵和字幕流。 按下右箭頭鍵將視頻快進10秒墩瞳,PageUp鍵視頻快進10分鐘; 箭頭左鍵視頻快退10秒驼壶,pageDown鍵退10分鐘。 鼠標點擊事件提供了功能更靈活的時間搜索喉酌,我們可以通過點擊相應(yīng)的播放器窗口部分移動到任何部分热凹,例如點擊中心將移動到媒體文件的中間泵喘。

FFplay顯示模式

當播放視頻文件時,ffplay顯示視頻般妙,它是其-showmode選項的默認值纪铺,其他值是rdft(逆實數(shù)離散傅立葉變換)和waves(來自濾波器顯示波的音頻波)。 按w鍵可在播放過程中切換這些模式:


我的測試結(jié)果:

FFprobe介紹

ffprobe是一種從多媒體流中收集信息并以人機和機器可讀方式打印的實用程序股冗。 它可用于檢查多媒體流使用的容器的格式以及其中每個媒體流的格式和類型霹陡。 選項用于列出ffprobe支持的一些格式或設(shè)置顯示哪些信息和蚪,并設(shè)置ffprobe如何顯示它止状。 其輸出易于通過文本過濾器進行分析,并且由-of(或-print_format)選項指定的選定writer定義的表單的一個或多個部分組成攒霹。 ffprobe使用的例子在調(diào)試和測試章節(jié)中怯疤。

FFmpeg組件:ffprobe

描述 命令行工具,用于檢測多媒體流中的各種數(shù)據(jù)以進行分析催束。 它可以單獨使用或與文本過濾器一起使用集峦,以獲得復(fù)雜的處理
語法 ffprobe [options] [input_file]
參數(shù)描述
options 幾乎所有的ffmpeg工具可用的選項都可以使用ffprobe
input_file 輸入可以是常規(guī)文件、管道抠刺、網(wǎng)絡(luò)流塔淤、抓取設(shè)備等
附加的ffprobe選項
-bitexact force bit精確輸出,用于產(chǎn)生不依賴于特定構(gòu)建的輸出
-count_frames 每個流的幀數(shù)速妖,并在相應(yīng)的流部分報告
-count_packets 每個流的數(shù)據(jù)包數(shù)高蜂,并以相應(yīng)的流部分方式報告設(shè)置打印格式,w_name是寫入器名稱罕容,w_options是寫入器選項
-of w_name[=w_options] 設(shè)置打印格式备恤,w_name是寫入器名稱,w_options是寫入器選項
-select_streams str_spec 只選擇str_spec指定的流锦秒,可以是下一個字母:a=audio, d=data, s=subtitle, t=attachment, v=video
-show_data 顯示有效負載數(shù)據(jù)露泊,如hex和ASCII轉(zhuǎn)儲,加上- show_數(shù)據(jù)包旅择,它轉(zhuǎn)儲數(shù)據(jù)包的數(shù)據(jù)惭笑,再加上-show_streams,它轉(zhuǎn)儲codec extradata
-show_error 在探測輸入時顯示有關(guān)發(fā)現(xiàn)錯誤的信息
-show_format 顯示有關(guān)輸入媒體流的容器格式的信息
-show_format_entry name 像-show_format生真,但只打印由容器格式信息指定的條目沉噩,而不是全部
-show_frames 顯示輸入媒體流中包含的每個框架的信息
-show_library_version 顯示與庫版本相關(guān)的信息
-show_packets 輸入媒體流中包含的每個數(shù)據(jù)包的信息如何
-show_private_data
-private
顯示數(shù)據(jù)依賴于特定顯示元素的格式,選項是默認啟用的汇歹,但是可以設(shè)置為0屁擅,例如在創(chuàng)建符合xsd的XML輸出時
-show_streams 顯示輸入媒體流中包含的每個媒體流的信息
-show_versions 顯示與程序和庫版本相關(guān)的信息,這相當于設(shè)置了-show_program_version和-show_library_version選項

FFserver介紹

ffserver是一個在Linux上運行的多媒體流媒體服務(wù)器产弹,官方的Windows二進制文件還不能使用
FFmpeg組件:ffserver

描述 為音頻和視頻提供流媒體服務(wù)器的實用程序派歌。 它支持多個實時供稿弯囊,從文件流式傳輸并在實時供稿上進行時間轉(zhuǎn)換。 如果在ffserver.conf配置文件中指定了足夠的存儲源存儲胶果,則可以在每個實時供稿中尋找過去的位置匾嘱。 ffserver默認在守護進程模式下在Linux上運行,這意味著它將自身置于后臺并從其控制臺分離早抠,除非它以調(diào)試模式啟動或在配置文件中指定了NoDaemon選項霎烙。
語法 ffserver [options]
參數(shù)的描述
options 幾乎所有的ffmpeg工具可用的選項都可以與ffserver一起使用
額外的ffserver選項
-d 啟用調(diào)試模式,這會增加日志的冗余性蕊连,將日志消息定向到stdout悬垃,并導(dǎo)致ffserver在前臺運行,而不是作為一個守護進程
-f configfile 使用configfile而不是/etc/ffserver.conf
-n 啟用無啟動模式甘苍,這將禁用各種部分的所有啟動指令尝蠕,因為ffserver將不會啟動任何ffmpeg實例,您將不得不手動啟動它們

FFmpeg軟件庫

libavcodec

libavcodec是一個用于解碼和編碼多媒體的編解碼器庫载庭,它非常受歡迎看彼,而MPlayer和VLC等多平臺媒體播放器則用它來播放許多音頻和視頻格式。 它能夠解碼囚聚,并且在某些情況下還可以編碼一些專有格式靖榕,包括沒有官方規(guī)范的格式。 標準libavcodec框架中的這些編解碼器提供了優(yōu)于使用原始編解碼器的優(yōu)勢顽铸,主要是增加了可移植性茁计,有時還具有更好的性能,因為libavcodec包含一個標準庫跋破,用于像DCT和色彩空間轉(zhuǎn)換這樣的常見構(gòu)建塊的精確優(yōu)化實現(xiàn)簸淀。

libavcodec中已實現(xiàn)的編解碼器列表位于“顯示幫助和功能”一章中。

libavdevice

libavdevice是一個特殊的設(shè)備復(fù)用/解復(fù)用庫毒返,是libavformat庫的補充租幕。 它提供了各種平臺特定的復(fù)用器和解復(fù)用器,例如用于抓取設(shè)備拧簸,音頻采集和播放劲绪。 因此libavdevice中的(解復(fù)用)復(fù)用是AVFMT_NOFILE類型(它們使用自己的I / O函數(shù))。 傳遞給avformat_open_input()的文件名通常不是指實際存在的文件盆赤,而是具有特殊的設(shè)備特定含義贾富,例如對于x11grab設(shè)備而言,它是顯示名稱牺六。

可用設(shè)備列在第二章“可用媒體格式”部分颤枪。

libavfilter

libavfilter是一個過濾器庫,它為FFmpeg和客戶端庫或應(yīng)用程序提供媒體過濾層淑际。 它簡化了FFmpeg工具的設(shè)計并增強了它們的靈活性畏纲。


libavfilter包含格式協(xié)商的高級機制扇住,并最小化像素/格式轉(zhuǎn)換。 過濾器處理緩沖區(qū)盗胀,其中緩沖區(qū)可以包含視頻幀或音頻源艘蹋。 每個緩沖區(qū)的屬性 - 幀類型,時間戳票灰,文件位置等可以在處理過程中訪問和處理女阀。 可用過濾器的列表在第二章中。

libavformat

libavformat是一個包含音頻/視頻容器格式的解復(fù)用和復(fù)用的庫屑迂。 在實現(xiàn)的復(fù)用器中有crc浸策,framecrc,ico屈糊,md5的榛,MOV / MP4 / ISMV琼了,mpegts逻锐,matroska等。
第二章中列出可以使用的媒體格式雕薪。

libavutil

libavutil是包含用于FFmpeg的不同部分的例程的輔助庫昧诱,例如:

  • av_get_token函數(shù)在libavutil/avstring.h文件里面,可以用來解析或者轉(zhuǎn)義
  • libavutil/eval.h文件包含用于計算算術(shù)表達式的接口
  • libavutil/samplefmt.h文件包含可用音頻樣本格式的定義
  • libavutil/audioconvert.h文件包含音頻通道布局的規(guī)范

libpostproc

libpostproc是一個包含視頻后處理例程的庫所袁。

libswresample

libswresample庫能夠處理不同的采樣格式盏档,采樣率和不同數(shù)量的通道以及不同的通道布局。 它支持直接轉(zhuǎn)換樣品格式和一次打包/平面燥爷。

libswscale

libswscale是一個包含視頻圖像縮放例程的庫蜈亩,并提供快速模塊化縮放界面。

項目使用FFmpeg組件

使用各種FFmpeg工具和庫的項目數(shù)量很大前翎,其中許多項目列在http://ffmpeg.org/projects.html

谷歌Chrome瀏覽器中支持HTML5

可能是使用FFmpeg庫最常用的應(yīng)用程序是Google Chrome網(wǎng)絡(luò)瀏覽器稚配,它是最流行的網(wǎng)絡(luò)瀏覽器之一。 2009年港华,F(xiàn)Fmpeg庫被納入Chrome道川,以支持HTML5音頻和視頻元素。 其他使用FFmpeg的瀏覽器還包括Chromium和Orygin網(wǎng)絡(luò)瀏覽器立宜。

在YouTube和Facebook上播放視頻

最大的視頻分享網(wǎng)站YouTube和最大的社交網(wǎng)絡(luò)Facebook是全球最大的使用ffmpeg的項目冒萄,在處理視頻方面,每周有幾百萬個視頻橙数。

多媒體框架利用FFmpeg

在表中描述了使用FFmpeg庫的多媒體框架:

名稱 網(wǎng)站 描述
ffdshow ffdshow-tryout.sourceforge.net 媒體編碼器和解碼器尊流,實現(xiàn)為DirectShow和VFW過濾器,僅Windows
GStreamer gstreamer.freedesktop.org 用于構(gòu)建媒體處理組件圖的庫。它支持的應(yīng)用范圍從簡單的Ogg/Vorbis回放、音頻/視頻流到復(fù)雜的音頻(混合)和視頻(非線性編輯)處理
MLT www.mltframework.org MLT是一個開源的多媒體框架簇宽,為電視廣播設(shè)計和開發(fā)千扶。它為廣播公司扇救、視頻編輯自赔、媒體播放器蹈丸、轉(zhuǎn)編碼器瓤的、網(wǎng)絡(luò)流媒體和其他類型的應(yīng)用提供了一個工具箱
OpenMAX www.khronos.org/openmax OpenMAX是一個免版權(quán)的忿晕、跨平臺的API装诡,它提供了全面的流媒體編碼和應(yīng)用程序的可移植性,它可以使加速的多媒體組件在多個操作系統(tǒng)和硅平臺上被開發(fā)践盼、集成和編程

視頻編輯器

  • Avidemux
  • Blender (3D)
  • Cinelerra
  • Kdenlive
  • Kino

音頻編輯器

  • Audacity
  • Sox

媒體播放器使用FFmpeg

使用FFmpeg庫的媒體框架在表中描述:

名稱 網(wǎng)站 描述
Audacious audacious-media-player.org Audacious是一個開源的音頻播放器鸦采。拖放文件夾和個人歌曲文件,在您的整個音樂庫中搜索藝術(shù)家和專輯咕幻,或者創(chuàng)建和編輯您自己的自定義播放列表渔伯。從網(wǎng)上聽CD或流音樂。用圖形化的均衡器或?qū)嶒瀬碚{(diào)整聲音肄程。享受現(xiàn)代的GTK主題的界面锣吼,或者用Winamp經(jīng)典皮膚改變一些東西。使用包含大膽的插件來為你的音樂取歌詞蓝厌,在早上設(shè)置一個鬧鐘玄叠,等等
Gnash www.gnashdev.org Gnash是GNU SWF電影播放器,它可以在桌面或嵌入式設(shè)備上獨立運行拓提,也可以作為多個瀏覽器的插件
KMPlayer http://kmplayer.kde.org KDE的視頻播放器插件和基本的MPlayer / Xine / ffmpeg / ffserver / VDR前端读恃。KMPlayer KPart插件用于Konqueror mimics QuickTime, MS Media Player和RealPlayer插件瀏覽器插件
MPlayer www.mplayerhq.hu 在許多系統(tǒng)上運行的電影播放器。它播放MPEG/VOB代态、AVI寺惫、Ogg/OGM、VIVO蹦疑、ASF/WMA/WMV西雀、QT/MOV/MP4、RealMedia必尼、Matroska蒋搜、NUT、NuppelVideo判莉、FLI豆挽、YUV4MPEG、FILM券盅、RoQ帮哈、PVA文件,由許多本機锰镀、XAnim和Win32 DLL編解碼器支持娘侍。你可以觀看VideoCD, SVCD, DVD, 3ivx, DivX 3/4/5, WMV咖刃,甚至H.264電影
Rockbox www.rockbox.org Rockbox是為數(shù)字音樂播放器提供的免費更換固件。它在很多player身上運行
VLC www.videolan.org/vlc VLC是一個免費的開源跨平臺多媒體播放器和框架憾筏,它播放大多數(shù)多媒體文件以及DVD嚎杨、音頻CD、VCD和各種流媒體協(xié)議
V-Player vchannel.sourceforge.net/ player.html 基于ffmpeg庫的跨平臺媒體播放器⊙跹現(xiàn)在V播放器支持Windows, Linux和OS X平臺枫浙。用戶界面是用c++編寫的,所有平臺上都有Qt 4
Xine www.xine-project.org 免費的多媒體播放器古拴。它播放cd箩帚、dvd和vcd。它還可以解碼本地磁盤驅(qū)動器上的AVI黄痪、MOV紧帕、WMV和MP3等多媒體文件,并在Internet上顯示多媒體流
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末桅打,一起剝皮案震驚了整個濱河市是嗜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌油额,老刑警劉巖叠纷,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異潦嘶,居然都是意外死亡,警方通過查閱死者的電腦和手機崇众,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門掂僵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人顷歌,你說我怎么就攤上這事锰蓬。” “怎么了眯漩?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵芹扭,是天一觀的道長。 經(jīng)常有香客問我赦抖,道長舱卡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任队萤,我火速辦了婚禮轮锥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘要尔。我一直安慰自己舍杜,他們只是感情好新娜,可當我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著既绩,像睡著了一般概龄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上饲握,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天旁钧,我揣著相機與錄音,去河邊找鬼互拾。 笑死歪今,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的颜矿。 我是一名探鬼主播寄猩,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼骑疆!你這毒婦竟也來了田篇?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤箍铭,失蹤者是張志新(化名)和其女友劉穎泊柬,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體诈火,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡兽赁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了冷守。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刀崖。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖拍摇,靈堂內(nèi)的尸體忽然破棺而出亮钦,到底是詐尸還是另有隱情,我是刑警寧澤充活,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布蜂莉,位于F島的核電站,受9級特大地震影響混卵,放射性物質(zhì)發(fā)生泄漏映穗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一淮菠、第九天 我趴在偏房一處隱蔽的房頂上張望男公。 院中可真熱鬧,春花似錦、人聲如沸枢赔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽踏拜。三九已至碎赢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間速梗,已是汗流浹背肮塞。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留姻锁,地道東北人枕赵。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像位隶,于是被迫代替她去往敵國和親拷窜。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,689評論 2 354

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