2011-09-06 4 views
6

나는 안드로이드 AudioRecord로 음성을 녹음했으며 특허가 없기 때문에 이것을 ogg vorbis로 변환하고 싶습니다. vorbis-java 베타 버전을 사용해 보았지만 제대로 작동하지 않거나 실수를 저 지르게됩니다. 내가 확장 WAV의 파일에 저장하고 인코딩하는 보비스 - 자바의 예제를 사용녹음 된 음성을 ogg vorbis로 인코딩하는 방법은 무엇입니까?

int  frequency  = 44100; 
int  channel  = AudioFormat.CHANNEL_IN_STEREO; 
int  mAudioSource = MediaRecorder.AudioSource.MIC; 
int mAudioEncoder = AudioFormat.ENCODING_PCM_16BIT; 
try { 
      final File outputFile = new File(mOutputPath); 
      DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(outputFile))); 
      int bufferSize = AudioRecord.getMinBufferSize(frequency, channel, mAudioEncoder); 
      AudioRecord audioRecord = new AudioRecord(mAudioSource, frequency, channel, mAudioEncoder, bufferSize); 
      short[] buffer = new short[bufferSize]; 
      audioRecord.startRecording(); 
      while (isRecordStart) { 
       int bufferReadResult = audioRecord.read(buffer, 0, bufferSize); 
       for(int i = 0; i < bufferReadResult; i++) { 
        dos.writeShort(buffer[i]); 
       } 
      } 
      audioRecord.stop(); 
      dos.close(); 
     } 
     catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 
     catch (IOException e) { 
      e.printStackTrace(); 
     } 

하지만 출력은 .......

만 ZZZ입니다 : 여기

내 코드입니다

이것을 android에서 ogg vorbis로 인코딩하는 방법은 무엇입니까?

답변

2

원시 오디오 데이터를 wav 형식 대신 파일에 기록하는 것처럼 보입니다. Wav 형식에는 오디오 데이터가 아니라 헤더가 있습니다.

참고 : 보비스 - 자바를 사용하지만, 당신의 APK 파일에 내장 그들을 컴파일 http://www.xiph.org/downloads/

사용 안드로이드 NDK에서받는 libogg 및받는 libvorbis 소스에서 컴파일하지 마십시오.

그런 다음 앱의 기본 코드를 호출하여 오디오 데이터를 인코딩 할 수 있습니다.

8

나는이 질문을 몇 주 전에 읽었으며 또한 초조함을 느꼈다고 생각한다. Xiph.org의 자료를 사용하기 위해 필요한 ndk 래퍼를 작성했습니다. 유일한 성공은 잘 실행되도록 부동 소수점 명령어를 활성화해야한다는 것입니다. 에뮬레이터에는 부동 소수점이 없으므로 에뮬레이터가 충돌합니다. 꽤 많은 전화에서 실행, 그리고, 당신은 갈 수있을거야. vorbis 파일과 인터페이스하기 위해 FileInputStream 및 FileOutputStream을 에뮬레이트하도록 설계되었습니다.

https://github.com/nwertzberger/libogg-vorbis-android

+0

안녕하세요 선생님, 기본적으로 지원되는 API (18)로 보인다. 제 주제에 대해 제게 조언 해 주시겠습니까? - 지금 2 주 동안 고수하고 있습니다. - https://stackoverflow.com/q/44324931/1828637 – Noitidart

+1

우수! 나는 본래 재료와 함께 갈 것이다. – Rannick

+0

안녕하세요 @Rannick 내가 그 주제를 삭제하지만 이것은 똑같은 문제입니다, 다른 사용자가 더 명확하게 넣으십시오 - 왜 녹음 오그가 작동하지 않는지 알아낼 수 있습니다 - https://stackoverflow.com/questions/44480762/mediarecorder -output-format-and-encoding-causing-crash – Noitidart

관련 문제