我遵循本网站的建议:
https://bitbucket.org/phorton1/chromaprint
我从网站上复制了ffmpeg和chromaprint库的multi-configure
和multi-make
脚本。我已将它们用于ffmpeg 3.0和chromaprint 1.3.2的最新克隆。我开始工作' .so' arm,x86和armv7的文件。我没有编译问题。我将它们加载到我的应用程序(一个非常简单的应用程序,只是为了测试这个库),我在我的两个设备上尝试它。一个是三星Galaxy TabPro(SM-T320,api 19),一个是三星S4(api 21)。我让程序在两者上运行。我可以使用' -version'命令获取chromaprint版本信息。当我尝试指纹音频文件时,该软件可以在较旧的平板电脑上使用,但不能在s4上使用。在s4上,错误消息是错误解码音频'。
我已经尝试过ffmpeg 0.9,因为bitbucket网站建议。我也有同样的问题。我尝试了ffmpeg 2.7,我认为这是有效的。现在我无法让2.7工作。和以前一样,代码在api 19设备上工作,而不是s4。
Tab是armeabi-v7a设备,s4是armeabi / armeabi-v7设备,所以我想删除“armeabi”#39;二进制我在两台机器上都有相同的文件,它们必须工作。这种尝试什么也没做。我正在使用android studio。
下面列出了一些我的ffmpeg配置。它们取自多配置脚本。
--enable-static
--disable-shared
--disable-doc
--disable-txtpages
--disable-iconv
--enable-memalign-hack
--enable-debug
--disable-avdevice
--disable-avfilter
--disable-swscale
--disable-ffmpeg
--disable-ffplay
--disable-ffserver
--disable-network
--disable-muxers
--disable-demuxers
--enable-rdft
--enable-demuxer=aac
--enable-demuxer=ac3
--enable-demuxer=ape
--enable-demuxer=asf
--enable-demuxer=flac
--enable-demuxer=matroska_audio
--enable-demuxer=mp3
--enable-demuxer=mpc
--enable-demuxer=mov
--enable-demuxer=mpc8
--enable-demuxer=ogg
--enable-demuxer=tta
--enable-demuxer=wav
--enable-demuxer=wv
--disable-bsfs
--disable-filters
--disable-parsers
--enable-parser=aac
--enable-parser=ac3
--enable-parser=mpegaudio
--disable-protocols
--enable-protocol=file
--disable-indevs
--disable-outdevs
--disable-encoders
--disable-decoders
--enable-decoder=aac
--enable-decoder=ac3
--enable-decoder=alac
--enable-decoder=ape
--enable-decoder=flac
--enable-decoder=mp1
--enable-decoder=mp2
--enable-decoder=mp3
--enable-decoder=mpc7
--enable-decoder=mpc8
--enable-decoder=tta
--enable-decoder=vorbis
--enable-decoder=wavpack
--enable-decoder=wmav1
--enable-decoder=wmav2
--enable-decoder=pcm_alaw
--enable-decoder=pcm_dvd
--enable-decoder=pcm_f32be
--enable-decoder=pcm_f32le
--enable-decoder=pcm_f64be
--enable-decoder=pcm_f64le
--enable-decoder=pcm_s16be
--enable-decoder=pcm_s16le
--enable-decoder=pcm_s16le_planar
--enable-decoder=pcm_s24be
--enable-decoder=pcm_daud
--enable-decoder=pcm_s24le
--enable-decoder=pcm_s32be
--enable-decoder=pcm_s32le
--enable-decoder=pcm_s8
--enable-decoder=pcm_u16be
--enable-decoder=pcm_u16le
--enable-decoder=pcm_u24be
--enable-decoder=pcm_u24le
--enable-decoder=rawvideo
以下是我从系统信息应用程序获得的有关s4的一些信息。
Build Info
Build.BOARD: MSM8960
Build.BRAND: Verizon
Build.DEVICE: jfltevzw
Build.DISPLAY: LRX22C.I545VRUGOF1
Build.PRODUCT: jfltevzw
Build.HARDWARE: qcom
Build.FINGERPRINT: Verizon/jfltevzw/jfltevzw:5.0.1/LRX22C/I545VRUGOF1:user/release-keys
Build.CPU_ABI: armeabi-v7a
Build.SUPPORTED_32_BIT_ABIS: [armeabi-v7a, armeabi]
Build.SUPPORTED_64_BIT_ABIS: []
Build.SUPPORTED_ABIS: [armeabi-v7a, armeabi]
Build.HOST: SWDD6122
Build.ID: LRX22C
Build.MANUFACTURER: samsung
Build.MODEL: SCH-I545
Build.PRODUCT: jfltevzw
Build.TAGS: release-keys
Build.TIME: 2015-07-15T03:39:01.000-0400
Build.TYPE: user
Build.USER: dpi
Build.BOOTLOADER: I545VRUGOF1
Build.TAGS: release-keys
Build.VERSION.CODENAME: REL
Build.VERSION.INCREMENTAL: I545VRUGOF1
Build.VERSION.RELEASE: 5.0.1
Build.VERSION.SDK_INT: 21
修改
这是我的项目的完整来源,减去了个人的api-key。 https://github.com/radiodee1/awesome-fpcalc代码在git存储库中部分排列。 ' fpcalc-testapp'部分只是Android Studio项目。 ' fpcalc-build'部分是我尝试使用最新版本的ffmpeg,chromaprint和kissfft。 ' fpcalc-build-complete' part是一系列重现P. Horton ffmpeg 2.7场景的脚本。再见,我相信最好的图书馆是在' build-complete'文件夹。
答案 0 :(得分:0)
我发现chromaprint支持kiss-fft作为ffmpeg的补充。特别推荐在chromaprint git存储库的NEWS文件中安装android。我抬起头来吻了一下。它很小。我在下面的网址找到了它:
https://sourceforge.net/projects/kissfft/
我没有单独编译库,而是将kiss-fft的源代码复制到了色度指标“src'夹。 (我也移动了' tools'文件夹。)然后我修改了chromaprint的make文件。首先,我将WITH_AVFFT=ON
替换为WITH_KISSFFT=ON
。然后我只需再添加一行。
COBJS += $(BUILD_DIR)/src/kiss_fft.o
然后我按照原来的方式编译了ffmpeg和chromaprint。生成的二进制文件略大,似乎可以与我的两个设备一起使用。这个问题是解决方案很混乱。你必须将所有的kiss-fft源复制到chromaprint' src'夹。另一个问题是你没有从构建中删除ffmpeg。最后一个问题是我想弄清楚的。
我不会在这里包含整个make文件。感谢所有人阅读此内容以获取所有帮助。