FFmpeg音頻播放器(1)-簡(jiǎn)介
FFmpeg音頻播放器(2)-編譯動(dòng)態(tài)庫(kù)
FFmpeg音頻播放器(3)-將FFmpeg加入到Android中
FFmpeg音頻播放器(4)-將mp3解碼成pcm
FFmpeg音頻播放器(5)-單輸入filter(volume,atempo)
FFmpeg音頻播放器(6)-多輸入filter(amix)
FFmpeg音頻播放器(7)-使用OpenSLES播放音頻
FFmpeg音頻播放器(8)-創(chuàng)建FFmpeg播放器
FFmpeg音頻播放器(9)-播放控制
新建Android項(xiàng)目
打開(kāi)Android Studio,新建項(xiàng)目FFmpegAudioPlayer,添加C++支持

拷貝FFmpeg庫(kù)文件
在src下的main文件中創(chuàng)建jniLibs文件夾,在jniLibs創(chuàng)建armeabi文件夾,將ffmpeg下android/arm/lib/目錄下的so文件(libavcodec-57.so/libavfilter-6.so/libavformat-57.so/libavutil-55.so/libswresample-2.so/libswscale-4.so)拷貝至此目錄。將android/arm/include 整個(gè)目錄拷貝至jniLibs下,最終目錄如下

修改app/build.gradle文件
因?yàn)槲覀冎粍?chuàng)建了armeabi文件夾,所以加入abiFilters
android {
...
defaultConfig {
...
externalNativeBuild {
cmake {
cppFlags "-frtti -fexceptions"
}
ndk{
abiFilters "armeabi"
}
}
}
...
}
配置cmake文件
打開(kāi)app目錄下的CMakeLists.txt文件,修改成如下配置
cmake_minimum_required(VERSION 3.4.1)
add_library( native-lib
SHARED
src/main/cpp/native-lib.cpp)
find_library( log-lib
log )
find_library( android-lib
android )
set(distribution_DIR ${CMAKE_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI})
add_library( avutil-55
SHARED
IMPORTED )
set_target_properties( avutil-55
PROPERTIES IMPORTED_LOCATION
${distribution_DIR}/libavutil-55.so)
add_library( swresample-2
SHARED
IMPORTED )
set_target_properties( swresample-2
PROPERTIES IMPORTED_LOCATION
${distribution_DIR}/libswresample-2.so)
add_library( avcodec-57
SHARED
IMPORTED )
set_target_properties( avcodec-57
PROPERTIES IMPORTED_LOCATION
${distribution_DIR}/libavcodec-57.so)
add_library( avfilter-6
SHARED
IMPORTED )
set_target_properties( avfilter-6
PROPERTIES IMPORTED_LOCATION
${distribution_DIR}/libavfilter-6.so)
add_library( swscale-4
SHARED
IMPORTED )
set_target_properties( swscale-4
PROPERTIES IMPORTED_LOCATION
${distribution_DIR}/libswscale-4.so)
add_library( avformat-57
SHARED
IMPORTED )
set_target_properties( avformat-57
PROPERTIES IMPORTED_LOCATION
${distribution_DIR}/libavformat-57.so)
set(CMAKE_VERBOSE_MAKEFILE on)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
include_directories(src/main/cpp)
include_directories(src/main/jniLibs/include)
target_link_libraries(native-lib
avutil-55 #工具庫(kù)
swresample-2 #音頻采樣數(shù)據(jù)格式轉(zhuǎn)換
avcodec-57 #編解碼
avfilter-6 #濾鏡特效處理
swscale-4 #視頻像素?cái)?shù)據(jù)格式轉(zhuǎn)換
avformat-57 #封裝格式處理
OpenSLES
${log-lib}
${android-lib})
先啥也不做,run一遍,編譯是否通過(guò),能否安裝到手機(jī)上。如能安裝上,正常運(yùn)行,則說(shuō)明配置正確,前期準(zhǔn)備工作就完成啦,接下來(lái)就可以用FFmpeg庫(kù)編程咯。