1. 程式人生 > >FFmpeg API的簡單實踐應用

FFmpeg API的簡單實踐應用

0. 前言

利用 FFmpeg 編譯連結生成的可執行程式本身可以實現很多特定的功能,但如果我們有自己的個性化需求,想要在自己開發的專案中使用 FFmpeg 的一些功能,就需要理解並應用其已經實現好的API,以寫程式碼的方式呼叫這些API來完成對媒體檔案的操作。 既然是呼叫 FFmpeg 中實現的API,就是將其作為我們的庫來使用,首先需要將 FFmpeg 安裝到指定路徑。具體安裝步驟可以參考我之前的部落格 [FFMPEG編譯問題記錄](https://www.cnblogs.com/phillee/p/13813156.html) 或者參考官方的編譯指南 [FFmpeg Compilation Guide](https://trac.ffmpeg.org/wiki/CompilationGuide)。

1. CMake 編譯檔案配置

主要配置 FFmpeg 安裝路徑,包括標頭檔案路徑和連結庫路徑。其餘的就是非常簡單的專案編譯配置,如編譯方式、專案名稱等。 ```Makefile CMAKE_MINIMUM_REQUIRED(VERSION 3.0) PROJECT(MYPLAYER_TEST) SET(CMAKE_BUILD_TYPE RELEASE) SET(CMAKE_CXX_STANDARD 11) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall") SET(FFmpeg_DIR "/Users/phillee/ffmpeg") INCLUDE_DIRECTORIES(${FFmpeg_DIR}/ffmpeg-bin/include) LINK_DIRECTORIES(${FFmpeg_DIR}/ffmpeg-bin/lib) # Messages to show for the user MESSAGE(STATUS "** Customized settings are shown as below **") MESSAGE(STATUS "\tCMAKE BUILD TYPE: ${CMAKE_BUILD_TYPE}") MESSAGE(STATUS "\tFFmpeg include directory: ${FFmpeg_DIR}/ffmpeg-bin/include") MESSAGE(STATUS "\tFFmpeg library directory: ${FFmpeg_DIR}/ffmpeg-bin/lib") ADD_EXECUTABLE(myplayer_test main.cc) TARGET_LINK_LIBRARIES(myplayer_test avcodec avformat avutil postproc swresample swscale ) ```

2. 包含標頭檔案

由於 FFmpeg 是用C99標準寫成的,有些功能在 C++ 中可能無法直接編譯或者使用。 不過多數情況下,在 C++ 中包含 FFmpeg 標頭檔案還是相當直接的。 首先,顯示宣告標頭檔案為 C 格式檔案 ```C++ extern "C" { #