我正在使用Android Studio 2.2并尝试将ffmpeg库链接到Android 4.1.2设备上运行。加载avformat库时,我收到错误
"cannot load library: reloc_library[1306]: 249 cannot locate 'atof'..."
以下链接指出,如果使用SDK版本21及更高版本构建应用,则在使用旧版Android(SDK版本< 19)的设备上运行时会出现此问题。
Cannot load library: reloc_library[1285]: cannot locate 'rand'
我在build.gradle中将targetSdkVersion更改为19,并使用" android-16"构建了ffmpeg库。目标,仍然得到错误。
我想知道是否有人有类似的问题,并找到了一种方法使其工作。感谢。
答案 0 :(得分:0)
我认为我得到它的工作或至少让我的问题解决。问题是由于两件事:
1)ffmpeg库是用" android-23"构建的。
2)Android Studio没有将ffmpeg库打包到APK。
以下是我的工作原理。
使用" android-19"构建ffmpeg库(或从其他链接建议更低)。顺便说一下,targetSdkVersion不必是< 21.对我来说,它仍然适用于23。
按照我正在使用的这些库的特定顺序调用System.loadlibrary("")。
的System.loadLibrary(" avutil-55&#34);
的System.loadLibrary(" swscale-4&#34);
的System.loadLibrary(" avcodec中-57&#34);
的System.loadLibrary(" avfilter-6&#34);
的System.loadLibrary(" avformat-57&#34);
的System.loadLibrary(" avdevice-57&#34);
让我失望的是,前四行执行得很好。第五次通话时出现错误。我不明白为什么。
无论如何,这就是我在CMakeLists.txt中为ffmpeg库所拥有的。
# Sub-libraries ffmpeg
add_library( avcodec-57 SHARED IMPORTED )
add_library( avdevice-57 SHARED IMPORTED )
add_library( avfilter-6 SHARED IMPORTED )
add_library( avformat-57 SHARED IMPORTED )
add_library( avutil-55 SHARED IMPORTED )
add_library( swscale-4 SHARED IMPORTED )
set_target_properties( avcodec-57
PROPERTIES IMPORTED_LOCATION
../../../../libs/${ANDROID_ABI}/lib/libavcodec-57.so
)
set_target_properties( avdevice-57
PROPERTIES IMPORTED_LOCATION
../../../../libs/${ANDROID_ABI}/lib/libavdevice-57.so
)
set_target_properties( avfilter-6
PROPERTIES IMPORTED_LOCATION
../../../../libs/${ANDROID_ABI}/lib/libavfilter-6.so
)
set_target_properties( avformat-57
PROPERTIES IMPORTED_LOCATION
../../../../libs/${ANDROID_ABI}/lib/libavformat-57.so
)
set_target_properties( avutil-55
PROPERTIES IMPORTED_LOCATION
../../../../libs/${ANDROID_ABI}/lib/libavutil-55.so
)
set_target_properties( swscale-4
PROPERTIES IMPORTED_LOCATION
../../../../libs/${ANDROID_ABI}/lib/libswscale-4.so
)
# Specifies a path to native header files.
include_directories(
libs/${ANDROID_ABI}/include
)
target_link_libraries( # Specifies the target library.
native-libcore
# Links the target library to the log library
# included in the NDK.
avcodec-57 avdevice-57 avfilter-6 avformat-57 avutil-55 swscale-4
${log-lib}
)