[TOC]
開始前的BB
最近學(xué)習(xí)了一些關(guān)于FFmpeg的姿勢(知識),也是踩坑踩到吐血
找網(wǎng)上資料和例子找半天寫完了不對,各種編譯不通過,以及寫的過程中各種遇見的亂七八糟的異常,內(nèi)存?zhèn)嚷╀套埽蝗槐佬卮选!F俟!E氡省#〝?shù)不過來了)
音視頻的學(xué)習(xí)比較難的地方就在于
概念多: (圖像/視頻的各種概念、封裝格式抛丽、H264結(jié)構(gòu)谤职、YUV的各種格式、音頻的概念亿鲜、MP3/AAc編碼格式允蜈、PCM)
知識雜: 視頻的硬/軟編解碼(Stagefright(Android)、AVFoundation(iOS)蒿柳、FFmpeg)饶套、圖像處理,音頻處理
資料少 網(wǎng)上對于新手的資料真的很不友好其馏,上來就把概念講的很細(xì)凤跑,一臉懵逼,然后一頓擼碼叛复,完事之后該不會還不會仔引,該不懂還不懂
坑多: 此處特指Android各種廠商亂改之后的
MediaXXX
系列,誰用誰知道
本著前人滾坑褐奥,后人平躺的原則咖耘,準(zhǔn)備記錄下這一路踩坑過來的各種問題
首先
假裝你已經(jīng)有了簡單的音視頻的知識,如果不懂的話,傳送門在這里
音視頻基礎(chǔ)知識講解其次
C/C++基本知識
ffmepg是用純C寫的 整篇文章基本都是在C/C++的環(huán)境下編寫操作,包括分析ffmpeg里面的源碼撬码,都是需要以這個為前提的儿倒,假如不太了解的話產(chǎn)傳送門在這里
C基礎(chǔ)教程
C++基礎(chǔ)教程一些建議
開始入坑的朋友們不用著急一下把所有的東西都看懂,一步步來,一層層的進(jìn);有些剛開始只需要知道一些概念夫否,等實際要用到的時候,再去細(xì)了解也不遲彻犁。本系列文章頁就是遵循這個方式來進(jìn)行講解
環(huán)境配置
首先說一下我的本地環(huán)境
- MacOS 10.14.1
- gcc 4.2.1
- Cmake version 3.6.0-rc2
- CLion 2018.3
網(wǎng)上文章的ffmpeg版本參差不齊,社會在進(jìn)步 人類在發(fā)展,本著穩(wěn)重帶皮的原則凰慈,使用的是 :
FFmpeg 4.0.2 "Wu" ------------------>下載地址
you are so kris wu?
編譯
SDL2
編譯ffmpeg前我們的項目用需要用的SDL2汞幢,所以我們得先去下載編譯SDL2--->SDL2下載地址
下載解壓,終端進(jìn)去SDL2的目錄 執(zhí)行
./configure
make -j8
make install
這里我們?yōu)榱朔奖?默認(rèn)的install 直接是install到了/usr/local/Cellar/sdl2/ 下
lib目錄下是我們需要用的庫微谓, includ是頭文件
ffmpeg
編譯好了SDL2后我們來編譯ffmpeg森篷,因為我們現(xiàn)在暫時還沒用到其他的包,這里我們就簡單編譯一下豺型,下載完ffmpeg 4.0.2源碼后進(jìn)入目錄仲智,執(zhí)行
./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
去取頭文件和動態(tài)庫
接下來姻氨,我們先來整體了解一下FFmpeg的整體結(jié)構(gòu)钓辆,常用結(jié)構(gòu)體與API與核心流程
未完持續(xù)。哼绑。岩馍。