AmrInputStream을 사용하여 PCM-16에서 AMR로 변환하고 있습니다. AmrInputStream에 대한 자세한 내용은 여기를 참조하십시오. http://hi-android.info/src/android/media/AmrInputStream.java.htmlAmrInputStream을 사용하여 PCM-16을 AMR로 변환
JNI 및 항목 사용에 대해 이야기하는 동안 프로그래밍에 익숙하지 않습니다. JNI가 무엇인지 알지 못해서이 토론에 필요하지 않다고 생각합니다. . 위의 AmrInputStream도 SDK 나 NDK에서는 찾을 수 없지만 사용할 수있었습니다.
인터넷에서 스트림을 사용하는 방법을 검색했지만 예제를 찾지 못했습니다. 결국 나는 그것을 실험하여 모든 InputStream과 비슷하다는 것을 알게되었다. 여기에 코드
InputStream inStream;
inStream = new FileInputStream("abc.wav");
AmrInputStream aStream = new AmrInputStream(inStream);
File file = new File("xyz.amr");
file.createNewFile();
OutputStream out = new FileOutputStream(file);
byte[] x = new byte[1024];
int len;
while ((len=aStream.read(x)) > 0) {
out.write(x,0,len);
}
out.close();
내가이를 테스트 한이 근무하고의 (편집 (! 앞에 # 추가 요구 재생을위한 출력 파일 AMR \ n 개의 태그를.)하세요 AMR 태그가 있어야합니다 # AMR \ n을).
제 질문은 8000Hz로 샘플링 된 PCM-16 파일에서만 작동하도록했습니다. 원래 PCM-16 파일에 사용 된 (더 높은) 주파수는 (언더 샘플링 된) 결과를 낳습니다. AmrInputStream.java 파일에 SAMPLES_PER_FRAME 변수가 있습니다.이 변수는 재생하려고 시도했지만 아무 것도 영향을 미치지 않습니다.
모든 조언이나 관련 토론을 환영합니다!
더 높은 빈도로 wav를 amr로 안드로이드로 변환하는 해결책을 찾았습니까? –
@lan 낮음 AmrInputStream을 사용하여 amr 16khz로 변환 할 수 있습니까? –
amr 헤더는 어떻게 작성합니까? –