2016-07-23 117 views
0

我下面这个站点的建议成功的Android的ffmpeg和chromaprint:编译在某些设备上

https://bitbucket.org/phorton1/chromaprint

从我抄multi-configuremulti-make脚本ffmpeg的和chromaprint库的网站。我使用了最近的ffmpeg 3.0和chromaprint 1.3.2的克隆。我为arm,x86和armv7工作'.so'文件。我没有编译问题。我将它们加载到我的应用程序(一个非常简单的应用程序,只是为了测试这个库),我尝试在我的两个设备上。一个是三星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'二进制文件我会在两台机器上都有相同的文件,并且他们必须工作。这个尝试什么都没做。我正在使用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的关键是个人的完整的源代码。 https://github.com/radiodee1/awesome-fpcalc代码被安排在git仓库里面的部分。 'fpcalc-testapp'部分只有Android Studio项目。 'fpcalc-build'部分是我尝试使用ffmpeg,chromaprint和kissfft的最新版本。 'fpcalc-build-complete'部分是一系列重现P.Horton ffmpeg 2.7场景的脚本。再见,我相信最好的库是在“构建完成”文件夹中生成的。

+0

我正在使用ndk r12b。 –

回答

0

我发现chromaprint支持kiss-fft作为ffmpeg的补充。它特别推荐在chromaprint git仓库的NEWS文件中用于android。我抬头看了一下kiss-fft。它很小。我发现它在下面的网址:除了分别编译库

https://sourceforge.net/projects/kissfft/

我复制吻-FFT的来源到chromaprint“SRC”文件夹。 (我也移动了“工具”文件夹。)然后我修改了chromaprint的make文件。首先我用WITH_KISSFFT=ON取代WITH_AVFFT=ON的发生。然后我只需要再添加一行。

COBJS += $(BUILD_DIR)/src/kiss_fft.o 

然后,我编译了ffmpeg和chromaprint,就像我最初一样。由此产生的二进制文件略大,似乎与我的两个设备一起工作。问题在于解决方案很混乱。您必须将所有kiss-fft源文件复制到chromaprint'src'文件夹中。另一个问题是你没有从构建中消除ffmpeg。最后一个问题是我想弄清楚的。

我不会在这里包含整个make文件。感谢任何人阅读此帮助。

+0

我错了。这不能解决这两个设备上的问题。我很快回答了我的问题。 –

+0

嗨,有什么好运?让我们来谈谈它并一起做些事。我也在处理音频指纹。我的电子邮件是[email protected] –

相关问题