Android 는 어떻게 Lame 인 코더 로 mp3 파일 을 인 코딩 합 니까?
1,무엇이 Lame 인가?
2.왜 Lame 을 사용 합 니까?
3.Lame 은 Android 앱 에서 어떻게 사용 하나 요?
뭐 공부 해요?
Lame 홈 페이지(lame.sourceforge.io/index.php)에서 보 여 준 설명 을 살 펴 보 겠 습 니 다.
LAME is a high quality MPEG Audio Layer III (MP3) encoder licensed under the LGPL.
LAME 는 고 품질의 MPEG 오디 오 층 III(MP3)인 코더 로 LGPL 에서 권한 을 부여 합 니 다.
자,이제 우 리 는 Lame 이 오픈 소스 인 코더 이 고 mp3 파일 을 인 코딩 하 는 데 사용 된다 는 것 을 알 게 되 었 습 니 다.
2.왜 Lame 을 사용 합 니까?
안 드 로 이 드 에서 녹음 기능 을 개발 한 학생 들 은 안 드 로 이 드 에서 녹음 기능 을 실현 하려 면 두 가지 방식 이 있다 는 것 을 알 아야 한다.하 나 는 AudioRecord 방식 을 사용 하고 AudioRecord 는 원본 pcm 데이터 이 며 다른 하 나 는 MediaRecord 를 사용 하여 amr,aac 형식 과 유사 한 파일 을 녹음 할 수 있 습 니 다.
미디어 레코드 가 현재 지원 하 는 녹음 형식 을 붙 여 놓 으 면 현재 mp3 가 지원 되 지 않 는 것 을 볼 수 있 습 니 다.이때 우 리 는 mp3 파일 을 인 코딩 하려 면 lame 을 통 해 이 루어 져 야 한다.
public final class AudioEncoder {
/* Do not change these values without updating their counterparts
* in include/media/mediarecorder.h!
*/
private AudioEncoder() {}
public static final int DEFAULT = 0;
/** AMR (Narrowband) audio codec */
public static final int AMR_NB = 1;
/** AMR (Wideband) audio codec */
public static final int AMR_WB = 2;
/** AAC Low Complexity (AAC-LC) audio codec */
public static final int AAC = 3;
/** High Efficiency AAC (HE-AAC) audio codec */
public static final int HE_AAC = 4;
/** Enhanced Low Delay AAC (AAC-ELD) audio codec */
public static final int AAC_ELD = 5;
/** Ogg Vorbis audio codec */
public static final int VORBIS = 6;
/** @hide EVRC audio codec */
public static final int EVRC = 10;
/** @hide QCELP audio codec */
public static final int QCELP = 11;
/** @hide Linear PCM audio codec */
public static final int LPCM = 12;
}
3.Lame 은 Android 응용 프로그램 에서 어떻게 사용 합 니까?안 드 로 이 드 에 오픈 소스 코드 를 통합 하 는 경우 가 많 습 니 다.주로 소스 코드 를 다운로드 하고 관련 된 so 라 이브 러 리 를 컴 파일 한 다음 에 이 라 이브 러 리 가 제공 하 는 방법 을 호출 하 는 것 입 니 다.물론 so 라 이브 러 리 안의 방법 을 호출 하 는 것 은 jni 를 통 해 이 루어 져 야 합 니 다.
lame 소스 코드 와 인 코딩 so 라 이브 러 리 를 다운로드 하 는 방법 은 소개 하지 않 겠 습 니 다.lame 소스 코드 를 컴 파일 한 후에 우 리 는 libmp3 lame.so 의 라 이브 러 리 파일 을 얻 을 수 있 습 니 다.이 so 라 이브 러 리 안의 방법 을 호출 하려 면 JNI 부분의 코드 를 실현 해 야 합 니 다.
전체적인 사 고 는 응용 층 이 JNI 가 제공 하 는 native 방법 을 호출 한 다음 에 호출 하 는 것 이다. libmp3lame.so 라 이브 러 리 의 방법 으로 인 코딩 mp3 파일 을 실현 합 니 다.
여기 서 보 여 주 는 예 는 pcm 형식의 파일 을 mp3 형식의 파일 로 인 코딩 하 는 것 입 니 다.
코드 git 주소:github.com/yorkZJC/And… 코드 논리
LameEncodeJniNative.java 는 로 컬 패키지 의 native 방법 으로 응용 층 에 두 가지 방법 을 제공 합 니 다.하 나 는 인 코딩 이 고 하 나 는 끝 입 니 다.이 두 가지 방법 은 c++층 의 구체 적 인 실현 에 대응 합 니 다.프로젝트 cpp/디 렉 터 리 에서 파일 의 실현 을 볼 수 있 고 cpp 파일 의 실현 도 간단 합 니 다.
코드 호출 을 사용 할 때 pcm 소스 파일 과 생 성 해 야 할 mp3 파일 경로,그리고 pcm 소스 파일 의 형식 정보(사용률,채널 수,인 코딩 데이터 자릿수)를 입력 합 니 다.
File pcmFile = new File(getExternalFilesDir(null), "input.pcm");
File mp3File = new File(getExternalFilesDir(null), "output.mp3");
mLameEncoder = new LameEncodeJniNative();
mLameEncoder.encode(pcmFile.getAbsolutePath(), mp3File.getAbsolutePath(), 44100, 2, 128);
이상 은 안 드 로 이 드 가 Lame 인 코더 로 mp3 파일 을 인 코딩 하 는 방법 에 대한 상세 한 내용 입 니 다.안 드 로 이 드 인 코딩 mp3 파일 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.