FFmpeg音频播放器(1)-简介
FFmpeg音频播放器(2)-编译动态库
FFmpeg音频播放器(3)-将FFmpeg加入到Android中
FFmpeg音频播放器(4)-将mp3解码成pcm
FFmpeg音频播放器(5)-单输入filter(volume,atempo)
FFmpeg音频播放器(6)-多输入filter(amix)
FFmpeg音频播放器(7)-使用OpenSLES播放音频
FFmpeg音频播放器(8)-创建FFmpeg播放器
FFmpeg音频播放器(9)-播放控制
新建Android项目
打开Android Studio,新建项目FFmpegAudioPlayer,添加C++支持
NDK支持
拷贝FFmpeg库文件
在src下的main文件中创建jniLibs文件夹,在jniLibs创建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 整个目录拷贝至jniLibs下,最终目录如下
工程目录
修改app/build.gradle文件
因为我们只创建了armeabi文件夹,所以加入abiFilters
android {
...
defaultConfig {
...
externalNativeBuild {
cmake {
cppFlags "-frtti -fexceptions"
}
ndk{
abiFilters "armeabi"
}
}
}
...
}
配置cmake文件
打开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 #工具库
swresample-2 #音频采样数据格式转换
avcodec-57 #编解码
avfilter-6 #滤镜特效处理
swscale-4 #视频像素数据格式转换
avformat-57 #封装格式处理
OpenSLES
${log-lib}
${android-lib})
先啥也不做,run一遍,编译是否通过,能否安装到手机上。如能安装上,正常运行,则说明配置正确,前期准备工作就完成啦,接下来就可以用FFmpeg库编程咯。
网友评论