2011-09-06 18 views
6

Tôi đã ghi âm giọng nói với Android AudioRecord và tôi muốn chuyển đổi nó thành ogg vorbis vì nó là bằng sáng chế miễn phí. Tôi đã thử vorbis-java beta, nhưng nó có vẻ không hoạt động hoặc tôi mắc lỗi.Làm thế nào để mã hóa giọng nói đã ghi thành ogg vorbis?

Dưới đây là mã của tôi:

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(); 
     } 

tôi lưu nó vào một tập tin với phần mở rộng wav và sử dụng ví dụ về vorbis-java để mã hóa, nhưng sản lượng chỉ zzz .......

Làm thế nào để mã hóa nó thành ogg vorbis trong android?

Trả lời

2

Bạn dường như ghi dữ liệu âm thanh thô vào một tệp thay vì định dạng wav. Định dạng Wav không có tiêu đề, không chỉ dữ liệu âm thanh.

Lưu ý: Không sử dụng vorbis-java, nhưng biên dịch từ các nguồn libogg và libvorbis tại http://www.xiph.org/downloads/

Sử dụng android NDK để biên dịch chúng cho nhúng trong tập tin apk của bạn.

Sau đó, bạn có thể gọi mã gốc từ ứng dụng của mình để mã hóa dữ liệu âm thanh.

8

Tôi nghĩ rằng tôi đã đọc câu hỏi này một vài tuần trước và cũng cực kỳ thất vọng. Tôi đã kết thúc bằng cách viết trình bao bọc ndk cần thiết để sử dụng các công cụ của Xiph.org. Việc bắt duy nhất là để làm cho nó chạy tốt, tôi đã phải kích hoạt các hướng dẫn dấu phẩy động. Bộ giả lập không có điểm nổi, do đó, nó sẽ làm hỏng trình mô phỏng. Chạy nó trên khá nhiều điện thoại, mặc dù, và bạn sẽ được tốt để đi. Nó được thiết kế để mô phỏng một FileInputStream và FileOutputStream để giao tiếp với các tệp vorbis.

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

+0

Xin chào, có vẻ như API 18 này được hỗ trợ nguyên bản. Xin bạn hãy tư vấn cho tôi về chủ đề của tôi ở đây - Tôi đang chờ một vài tuần ngay bây giờ - https://stackoverflow.com/q/44324931/1828637 – Noitidart

+1

Tuyệt vời! Tôi sẽ đi với các công cụ bản địa. – Rannick

+0

Xin chào @Rannick tôi đã xóa chủ đề đó nhưng đây chính là vấn đề chính xác, một người dùng khác đặt nó rõ ràng hơn - bạn có thể vui lòng giúp tìm ra lý do tại sao ghi âm ogg không hoạt động - https://stackoverflow.com/questions/44480762/mediarecorder -output-format-and-encoding-gây-sự cố – Noitidart