2015年12月17日木曜日

ffmpeg 2.8.3がAndroidで使えない人向けの対処法

どうもMP3のデコードの挙動がおかしかったので、ffmpegを2.8.3にバージョンアップしてみた。
そしたら出力される共有ライブラリの拡張子が.soじゃない(バージョンが後ろに付与される)という事態に・・・・。

えいやでそのままビルドしようとすると拡張子が違うことで弾かれてしまった。
LOCAL_SRC_FILES should point to a file ending with ".so"
てな具合に。
互いに参照しているので、ファイル名を変えるだけでもだめ。

分かった対処法は、configureの以下を
SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'

以下のように変えればOK
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'

これで拡張子がsoになる。