ijkplayer修改動態庫名稱(目前最新版本0.8.8)
阿新 • • 發佈:2018-11-03
瞭解ijkplayer的朋友都知道,底層有三個動態庫,分別是libijkffmpeg.so、libijksdl.so、libijkplayer.so。一般出於避免重名衝突和便於區分的考慮都會修改它們的名稱。接下來我就依次介紹如何修改三個動態庫的名稱。
1.libijkffmpeg.so,首先找到ijkplayer/android/contrib/tools/do-compile-ffmpeg.sh檔案,替換其中的兩處libijkffmpeg.so,修改成自己想要的名稱libijkffmpeg***.so。
FF_C_OBJ_FILES= FF_ASM_OBJ_FILES= for MODULE_DIR in $FF_MODULE_DIRS do C_OBJ_FILES="$MODULE_DIR/*.o" if ls $C_OBJ_FILES 1> /dev/null 2>&1; then echo "link $MODULE_DIR/*.o" FF_C_OBJ_FILES="$FF_C_OBJ_FILES $C_OBJ_FILES" fi for ASM_SUB_DIR in $FF_ASSEMBLER_SUB_DIRS do ASM_OBJ_FILES="$MODULE_DIR/$ASM_SUB_DIR/*.o" if ls $ASM_OBJ_FILES 1> /dev/null 2>&1; then echo "link $MODULE_DIR/$ASM_SUB_DIR/*.o" FF_ASM_OBJ_FILES="$FF_ASM_OBJ_FILES $ASM_OBJ_FILES" fi done done $CC -lm -lz -shared --sysroot=$FF_SYSROOT -Wl,--no-undefined -Wl,-z,noexecstack $FF_EXTRA_LDFLAGS \ -Wl,-soname,libijkffmpeg***.so \ $FF_C_OBJ_FILES \ $FF_ASM_OBJ_FILES \ $FF_DEP_LIBS \ -o $FF_PREFIX/libijkffmpeg***.so mysedi() { f=$1 exp=$2 n=`basename $f` cp $f /tmp/$n sed $exp /tmp/$n > $f rm /tmp/$n }
2.libijksdl.so,找到ijkplayer/ijkmedia/ijksdl/Android.mk檔案,修改ijkffmpeg和ijksdk的名稱分別為ijkffmpeg***、ijksdk***。
LOCAL_SRC_FILES += android/ijksdl_vout_android_nativewindow.c LOCAL_SRC_FILES += android/ijksdl_vout_android_surface.c LOCAL_SRC_FILES += android/ijksdl_vout_overlay_android_mediacodec.c LOCAL_SHARED_LIBRARIES := ijkffmpeg*** LOCAL_STATIC_LIBRARIES := cpufeatures yuv_static ijkj4a LOCAL_MODULE := ijksdl*** include $(BUILD_SHARED_LIBRARY) $(call import-module,android/cpufeatures)
3.libijkplayer.so,找到ijkplayer/ijkmedia/ijkplayer/Android.mk檔案,修改ijkffmpeg、ijksdk和ijkplayer的名稱分別為ijkffmpeg***、ijksdk***、ijkplayer***。
OCAL_SRC_FILES += ijkavutil/ijktree.c LOCAL_SRC_FILES += ijkavutil/ijkfifo.c LOCAL_SRC_FILES += ijkavutil/ijkstl.cpp LOCAL_SHARED_LIBRARIES := ijkffmpeg*** ijksdl*** LOCAL_STATIC_LIBRARIES := android-ndk-profiler ijksoundtouch LOCAL_MODULE := ijkplayer*** VERSION_SH = $(LOCAL_PATH)/version.sh VERSION_H = ijkversion.h $(info $(shell ($(VERSION_SH) $(LOCAL_PATH) $(VERSION_H)))) include $(BUILD_SHARED_LIBRARY)
至此,就可以重新執行指令碼編譯ijkplayer的三個底層動態庫了。