gpt4 book ai didi

android - 在某些设备上成功为 android 编译 ffmpeg 和 chromaprint

转载 作者:行者123 更新时间:2023-12-04 23:27:32 24 4
gpt4 key购买 nike

我遵循这个网站的建议:

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 上,错误消息是“错误解码音频”。

正如bitbucket网站建议的那样,我已经尝试过ffmpeg 0.9。我也有同样的问题。我已经尝试过 ffmpeg 2.7,我认为这是可行的。现在我无法让 2.7 工作。和以前一样,代码适用于 api 19 设备而不是 s4。

Tab 是 armeabi-v7a 设备,s4 是 armeabi/armeabi-v7 设备,所以我想通过删除“armeabi”二进制文件,我将在两台机器上拥有相同的文件,并且它们必须工作。这次尝试什么也没做。我正在使用安卓工作室。

下面是我的一些 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”部分是一系列重现 P. Horton ffmpeg 2.7 场景的脚本。顺便说一句,我相信最好的库是在“构建完成”文件夹中生成的。

最佳答案

我发现 chromaprint 支持 Kiss-fft 作为 ffmpeg 的补充。在 chromaprint git 存储库的 NEWS 文件中特别推荐 android。我抬头看吻-fft。它很小。我在下面的 URL 中找到了它:

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

我没有单独编译库,而是将 Kiss-fft 的源代码复制到 chromaprint 'src' 文件夹中。 (我也移动了“工具”文件夹。)然后我修改了 chromaprint 的 make 文件。首先我替换了 WITH_AVFFT=ON 的出现与 WITH_KISSFFT=ON .然后我只需要再添加一行。

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

然后我像原来一样编译了 ffmpeg 和 chromaprint。生成的二进制文件稍大一些,似乎适用于我的两种设备。问题在于解决方案很困惑。您必须将所有 Kiss-fft 源复制到 chromaprint 'src' 文件夹。另一个问题是您没有从构建中消除 ffmpeg。最后一个问题是我想弄清楚的。

我不会在这里包含整个 make 文件。感谢所有阅读本文的人的帮助。

关于android - 在某些设备上成功为 android 编译 ffmpeg 和 chromaprint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38544510/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com