【问题标题】:Lame MP3 Encoder compile for Android为 Android 编译的 Lame MP3 编码器
【发布时间】:2012-01-27 19:17:46
【问题描述】:

我想为 Android 编译 lame 编码器。我怎样才能找到 Lame 的教程及其在 Android 平台上的编译。

谢谢,

【问题讨论】:

标签: android audio mp3


【解决方案1】:

以前有一个很好的blog post关于如何为Android编译lame,但由于某种原因它已经离线了一段时间,并且只在一些狡猾的中国网站上可用。

我将复制以下内容:

使用 Android NDK 将编译 lame 编码器移植到 Android ARM arch

我在 Android Market 中寻找 mp3 编码应用程序, 发现很少,我认为Android不支持mp3的原因 编码是因为mp3是专利技术。另一个原因是我 猜想人们更喜欢 Java 编程和 Android SDK 而不是 Android 原生开发套件。

仍然使用 Android 为 Android 编译 libmp3lame 库 NDK 其实很简单。

  1. 下载Android NDK(你还需要Android SDK和带有ADT插件的Eclipse)并创建简单的项目。
  2. 在项目目录中创建名为“jni”的目录。
  3. 下载 lame 源码,解压,将 libmp3lame 目录下的所有源码复制到 jni 目录。还要复制 lame.h,它位于 lame 源的 include 目录中。
  4. 创建 jni/Android.mk 文件。它应该是这样的:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)`
LOCAL_MODULE    := mp3lame
LOCAL_SRC_FILES := bitstream.c fft.c id3tag.c mpglib_interface.c presets.c  quantize.c   reservoir.c tables.c  util.c  VbrTag.c
   encoder.c  gain_analysis.c lame.c  newmdct.c   psymodel.c
   quantize_pvt.c set_get.c  takehiro.c vbrquantize.c version.c
include $(BUILD_SHARED_LIBRARY)
  1. 清理蹩脚的源代码,从 GNU 自动工具中删除剩余的内容,Makefile.amMakefile.inlibmp3lame_vc8.vcprojlogoe.icodepcomp,文件夹i386vector
  2. 编辑文件jni/utils.h,并替换定义extern ieee754_float32_t fast_log2(ieee754_float32_t x); 有了这个extern float fast_log2(float x);
  3. 转到您的 Android 项目的根目录并运行 $pathtoandroidndk/ndk-build 就完成了,您将编译 limp3lame.so

此外,您可能会对以下关于 SO 的问题感兴趣,因为它在为 Android 编译 lame 后处理了一些问题:

【讨论】:

  • 1.不要删除矢量 Floder; 2. 一些源包括lame.h使用“lame.h” 一些源使用,所以你必须在Android.mk中添加-I./标志
  • 如何编译成可以和ffmpeg一起使用的静态库?
  • 在转换任何 webm/wav 后,我的 mp3 文件只有像收音机一样没有信号的噪音
【解决方案2】:

上述解决方案对我有用,除了:

  • 不要从源目录中删除vector目录
  • 您可以通过添加编译器标志来消除编译警告:LOCAL_CFLAGS = -DSTDC_HEADERS

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    相关资源
    最近更新 更多