2011-12-28 2 views
2

AmrInputStream을 사용하여 Android에서 PCM로 인코딩 된 wav 파일을 amr 파일로 변환합니다.PCM로 인코딩 된 wav 파일을 AmrInputStream을 사용하여 amr 파일로 변환하지만 MediaPlayer를 사용하여 재생할 수 없습니다.

converting PCM-16 to AMR using AmrInputStream

모든 것이 잘 작동하고, AMR 파일도 생성됩니다 난 후 아래의 코드를 사용했다. 내가 MeidaPlayer 그것을 재생하려고 할 때 그러나,이 던진 다음 예외 :

java.io.IOException: Prepare failed.: status=0xFFFFFFFC 
     at android.media.MediaPlayer.prepare(Native Method) 

나는 위의 게시물에, 그것은 언급 한 것으로 나타났습니다! "를 #AMR를 추가 할 필요 재생을위한 출력 파일 \ n 개의 태그 . " 하지만 정확히 어떻게 해야할지 모르겠습니다. 도와주세요!

+0

AmrInputStream에서 amr 16khz로 변환 할 수 있습니까? –

답변

2

좋아, 나는 그것을 작동하게했다. 출력 파일의 처음 6 바이트에 태그를 추가해야합니다.

InputStream inStream; 
    inStream = new FileInputStream(wavFilename); 
    AmrInputStream aStream = new AmrInputStream(inStream); 

    File file = new File(amrFilename);   
    file.createNewFile(); 
    OutputStream out = new FileOutputStream(file); 

    out.write(0x23); 
    out.write(0x21); 
    out.write(0x41); 
    out.write(0x4D); 
    out.write(0x52); 
    out.write(0x0A);  

    byte[] x = new byte[1024]; 
    int len; 
    while ((len=aStream.read(x)) > 0) { 
     out.write(x,0,len); 
    } 

    out.close(); 
+0

안녕하세요, AMREncode (..)에서 충돌이 발생합니다. 자신에게 맞는 코드를 공유 할 수 있습니까? – Rajan

+0

안녕하세요, 작동 시키지만 출력 AMR 파일의 음질이 매우 좋지 않습니다. 적절한 음질을 얻습니까? 인코더의 소스 코드를 알려주십시오. – Rajan