[TOC]
開始前的BB
最近學習了一些關于FFmpeg的姿勢(知識),也是踩坑踩到吐血
疲憊的目光
找網上資料和例子找半天寫完了不對,各種編譯不通過,以及寫的過程中各種遇見的亂七八糟的異常,內存側漏,突然暴斃。。。。(數不過來了)
難受
音視頻的學習比較難的地方就在于
概念多: (圖像/視頻的各種概念、封裝格式、H264結構、YUV的各種格式、音頻的概念、MP3/AAc編碼格式、PCM)
知識雜: 視頻的硬/軟編解碼(Stagefright(Android)、AVFoundation(iOS)、FFmpeg)、圖像處理,音頻處理
資料少 網上對于新手的資料真的很不友好,上來就把概念講的很細,一臉懵逼,然后一頓擼碼,完事之后該不會還不會,該不懂還不懂
坑多: 此處特指Android各種廠商亂改之后的
MediaXXX
系列,誰用誰知道
本著前人滾坑,后人平躺的原則,準備記錄下這一路踩坑過來的各種問題
首先
假裝你已經有了簡單的音視頻的知識,如果不懂的話,傳送門在這里
音視頻基礎知識講解其次
C/C++基本知識
ffmepg是用純C寫的 整篇文章基本都是在C/C++的環境下編寫操作,包括分析ffmpeg里面的源碼,都是需要以這個為前提的,假如不太了解的話產傳送門在這里
C基礎教程
C++基礎教程一些建議
開始入坑的朋友們不用著急一下把所有的東西都看懂,一步步來,一層層的進;有些剛開始只需要知道一些概念,等實際要用到的時候,再去細了解也不遲。本系列文章頁就是遵循這個方式來進行講解
環境配置
首先說一下我的本地環境
- MacOS 10.14.1
- gcc 4.2.1
- Cmake version 3.6.0-rc2
- CLion 2018.3
網上文章的ffmpeg版本參差不齊,社會在進步 人類在發展,本著穩重帶皮的原則,使用的是 :
FFmpeg 4.0.2 "Wu" ------------------>下載地址
you are so kris wu?
編譯
SDL2
編譯ffmpeg前我們的項目用需要用的SDL2,所以我們得先去下載編譯SDL2--->SDL2下載地址
下載解壓,終端進去SDL2的目錄 執行
./configure
make -j8
make install
這里我們為了方便 默認的install 直接是install到了/usr/local/Cellar/sdl2/ 下
image
lib目錄下是我們需要用的庫, includ是頭文件
ffmpeg
編譯好了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與核心流程
未完持續。。。