2011-12-26 25 views
20

Tôi muốn biên dịch bộ mã hóa lame cho Android. Làm thế nào tôi có thể tìm thấy các hướng dẫn cho Lame và biên dịch của nó cho nền tảng Android.Biên dịch mã hóa Lame MP3 cho Android

Cảm ơn,

+1

theo liên kết này http://developer.samsung.com/technical-doc/view.do? v = T000000090 – sonida

Trả lời

32

Đã từng có một tốt blog post về cách biên dịch què dành cho Android, nhưng đối với một số lý do nó được ẩn trong một thời gian và chỉ có sẵn trên một số trang web tinh ranh của Trung Quốc.

tôi sẽ chỉ sao chép các nội dung dưới đây:

porting biên soạn encoder què để ARM Android vòm sử dụng Android NDK

tôi đang tìm kiếm một ứng dụng mă hóa file mp3 trong Android Market, và tìm thấy rất ít, lý do tôi nghĩ rằng Android không hỗ trợ mp3 mã hóa là bởi vì mp3 được cấp bằng sáng chế công nghệ. Một lý do khác là tôi người đoán thích lập trình Java và Android SDK hơn là bộ phát triển gốc của Android.

Tuy nhiên, biên soạn thư viện libmp3lame cho Android bằng Android NDK thực sự rất dễ dàng.

  1. tải xuống Android NDK (bạn cũng cần SDK Android và Eclipse với plugin ADT) và tạo dự án đơn giản.
  2. tạo thư mục có tên "jni" trong thư mục của dự án của bạn.
  3. tải xuống các nguồn lame, trích xuất, sao chép tất cả các nguồn từ thư mục libmp3lame vào thư mục jni. Cũng sao chép lame.h mà nằm trong thư mục bao gồm các nguồn lame.
  4. tạo tệp jni/Android.mk. nó sẽ giống như thế này:
    • 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)
  5. nguồn què sạch, loại bỏ những gì còn lại từ autotools GNU, Makefile.am, Makefile.in, libmp3lame_vc8.vcproj , logoe.ico, depcomp, thư mục i386, vector.
  6. chỉnh sửa tập tin jni/utils.h, và thay thế định nghĩa extern ieee754_float32_t fast_log2(ieee754_float32_t x); với điều này extern float fast_log2(float x);
  7. đi vào thư mục gốc của dự án Android của bạn và chạy $pathtoandroidndk/ndk-build và bạn đã hoàn tất, bạn sẽ phải limp3lame.so biên soạn.

Ngoài ra, những câu dưới đây trên SO có thể được quan tâm cho bạn, vì nó thỏa thuận với một số vấn đề sau khi biên dịch què dành cho Android:

+1

1. Không tháo bộ tách vector; 2. Một số nguồn bao gồm lame.h sử dụng "lame.h" một số nguồn bằng cách sử dụng , vì vậy bạn phải thêm -I./ flags trong Android.mk –

+0

Làm thế nào để biên dịch nó như một thư viện tĩnh có thể được sử dụng với ffmpeg? – frankish

9

Các giải pháp trên đã làm việc cho tôi ngoại trừ:

  • không xóa vector thư mục từ thư mục nguồn
  • bạn có thể thoát khỏi những lời cảnh báo biên dịch bằng cách thêm một trình biên dịch cờ: LOCAL_CFLAGS = -DSTDC_HEADERS
Các vấn đề liên quan