[TOC]html
最近學習了一些關於FFmpeg的姿式(知識),也是踩坑踩到吐血 bash
找網上資料和例子找半天寫完了不對,各類編譯不經過,以及寫的過程當中各類碰見的亂七八糟的異常,內存側漏,忽然暴斃。。。。(數不過來了) 音視頻的學習比較難的地方就在於 概念多: (圖像/視頻的各類概念、封裝格式、H264結構、YUV的各類格式、音頻的概念、MP3/AAc編碼格式、PCM) 知識雜: 視頻的硬/軟編解碼(Stagefright(Android)、AVFoundation(iOS)、FFmpeg)、圖像處理,音頻處理 資料少 網上對於新手的資料真的很不友好,上來就把概念講的很細,一臉懵逼,而後一頓擼碼,完事以後該不會還不會,該不懂還不懂 坑多: 此處特指Android各類廠商亂改以後的MediaXXX
系列,誰用誰知道
本着前人滾坑,後人平躺的原則,準備記錄下這一路踩坑過來的各類問題app
首先 僞裝你已經有了簡單的音視頻的知識,若是不懂的話,傳送門在這裏 音視頻基礎知識講解學習
其次 C/C++基本知識 ffmepg是用純C寫的 整篇文章基本都是在C/C++的環境下編寫操做,包括分析ffmpeg裏面的源碼,都是須要以這個爲前提的,假如不太瞭解的話產傳送門在這裏 C基礎教程 C++基礎教程google
一些建議 開始入坑的朋友們不用着急一下把全部的東西都看懂,一步步來,一層層的進;有些剛開始只須要知道一些概念,等實際要用到的時候,再去細瞭解也不遲。本系列文章頁就是遵循這個方式來進行講解編碼
首先說一下個人本地環境spa
網上文章的ffmpeg版本良莠不齊,社會在進步 人類在發展,本着穩重帶皮的原則,使用的是 :3d
FFmpeg 4.0.2 "Wu" ------------------>下載地址code
you are so kris wu?cdn
編譯ffmpeg前咱們的項目用須要用的SDL2,因此咱們得先去下載編譯SDL2--->SDL2下載地址 下載解壓,終端進去SDL2的目錄 執行
./configure
make -j8
make install
複製代碼
這裏咱們爲了方便 默認的install 直接是install到了/usr/local/Cellar/sdl2/ 下
lib目錄下是咱們須要用的庫, includ是頭文件
編譯好了SDL2後咱們來編譯ffmpeg,由於咱們如今暫時還沒用到其餘的包,這裏咱們就簡單編譯一下,下載完ffmpeg 4.0.2源碼後進入目錄,執行
./configure \--disable-static\ --enable-shared\ --enable-gpl\ --enable-version3\ --enable-sdl2\ --enable-bzlib\ --enable-libx264\ --enable-lzma\ --enable-zlib\ --enable-gmp\ --enable-appkit\ --enable-avfoundation\ --enable-coreimage\ --enable-audiotoolbox
make -j8
make install
複製代碼
一樣,咱們能夠去/usr/local/Cellar/ffmpeg
去取頭文件和動態庫
接下來,咱們先來總體瞭解一下FFmpeg的總體結構,經常使用結構體與API與核心流程
未完持續。。。