ffmpeg學習筆記

   對於每一個初學者,剛開始接觸ffmpeg時, 想必會有三個問題最爲關心,即ffmpeg是什麼?能幹什麼?怎麼開始學習?本人前段時間開始接觸ffmpeg,在剛開始學習過程當中,這三個問題尤爲最後 一個問題着實困擾了我一下。如今將我對ffmpeg的一點理解分享出來,但願對正在學習ffmpeg編程的同窗有幫助。android

       1. ffmpeg是什麼?編程

       (1)你能夠把ffmpeg理解成一套音視頻解決方案,而且仍是免費、開源、跨平臺的解決方案。它提供了錄製、轉換以及流化音視頻等等功能。同時還包含 了很是先進的音頻/視頻編解碼庫,這樣使用ffmpeg能夠對採集的原始音視頻進行編碼存儲,或者將已有的音視頻文件解碼播放。這裏簡單提一 下,ffmpeg中視頻h264編碼依賴x264第三方視頻編碼庫,音頻MP3編碼依賴lame mp3第三方編碼庫。windows

       (2)同時,ffmpeg更是一組使用c語言開發的開源程序,與許許多多的開源程序同樣,它有本身的社區、有活躍的維護者,尤爲是近2年,版本更新很 快,差很少每月都有更新。打開ffmpeg源文件,看到成千上萬行的c代碼,在佩服做者的聰明才智同時,也不由爲本身的智商捉急。看到源文件,也就能夠 瞭解ffmpeg api的實現細節,這樣就能夠按照本身的需求進行修改,實現一個定製版的ffmpeg。固然,走到這一步仍是須要點功夫的,從本人的學習過程來看,別說修 改ffmpeg,剛開始面對ffmpeg一堆api,真是一頭霧水,無從下手,後面會講如何學習ffmpeg。api

       2. ffmpeg能幹什麼?服務器

       (1)你能夠下載安裝ffmpeg,以下圖所示,而後在控制檯命令行中輸入ffmpeg相關命令,這樣就能夠實現播放歌曲、視頻,甚至經過命令實現對音 視頻文件轉換、混合、剪輯等各類複雜處理。這種ffmpeg使用情景在服務器端比較多,相信不少視頻類網站都架設了基於ffmpeg的流媒體服務器,好比 給服務器上保存的視頻加個水印,雖然我沒搞過,但相信就是一組命令的事吧。app

                                          

       (2)你還能夠下載ffmpeg源碼,以下圖所示,在windows平臺、android平臺等各類平臺下編譯ffmpeg源碼,以獲取不一樣平臺下 ffmpeg靜態庫或者動態庫,供本身的程序調用,以實現基於ffmpeg的音視頻編解碼等程序開發。這種ffmpeg使用情景在客戶端比較多,好比短視 頻類app應用《微視》,它的音視頻編解碼工做就是調用ffmpeg完成的。固然,我近期正在搞的短視頻類app應用編解碼也是調用ffmpeg完成的。學習

                                          

       3. 如何學習ffmpeg?網站

       在網上搜索ffmpeg的學習資源,大致能夠搜出兩大類,一個是ffmpeg相關命令學習資料,也就是上一節中提到的在服務器端安裝ffmpeg,而後 經過命令的方式調用ffmpeg完成音視頻轉換、轉播等工做,這方面資料較多,另外因爲本人沒深刻去研究這些命令用法,這裏就很少講了;另外一個就是 ffmpeg api學習資料,api學習資料要比前者偏少些。對於ffmpeg api學習,在網上查來查去,回過頭會發現最好的入門學習資料實際上是源碼doc/examples文件下的幾個程序,這幾個程序都是獨立的demo示例程 序,分別實現了媒體文件打開、音視頻混合、音視頻編解碼等等基礎且常見的功能,經過分析這幾個demo示例程序,會逐漸掌握ffmpeg的api用法,這 幾個demo示例程序每一個文件大小不同,推薦從體積最小的文件看起,即代碼行數最少,這樣也不會產生望而生畏的心態了。固然,只分析源碼是遠遠不夠的, 還須要把這些demo運行起來,這樣才能對ffmpeg的參數及調用邏輯有更深刻的瞭解,後面會講講如何在windows環境下搭建ffmpeg開發環 境。編碼

                                          

相關文章
相關標籤/搜索