제가 지금 오디오나 비디오(카메라)를 MediaRecorder를 이용하여 저장 중 입니다.
어떻게 어떻게 해서 오디오나 비디오를 저장하는데는 성공을 하였는데....
저장된 파일을 PC로 옮겨서 재생해보니 오디오와 비디오가 따로따로 들리는 현상이 있습니다.
즉, 30초 분량을 녹화 했다면, 처음 30초 동은은 비디오만 재생되고, 비디오가 다 재생된 이후에 오디오가 재생되는
이상한 현상이...
이거저거 별짓 다 해 봤는데, 해결될 기미가 보이지 않네요...
그래서 비디오 빼고 오디오만 한번 저장을 해 봤는데, 오디오만 따로 해도... 이상한 동작을 합니다.
비디오는 없는데도 불구하고, 처음에 비디오를 몇 초간 재생하고(물론 아무 화면도 나오지 않습니다), 그 다음에 오디오 재생을 시작 합니다.
아래는 실행한 오디오 소스.

MediaRecorder 로 오디오든 비디오든 저장해본 사람 있으시면, 도움을...plz
=====================


import android.app.Activity;
import android.os.Bundle;
import java.io.File; 

   

import android.app.Activity; 
import android.content.ContentResolver; 
import android.content.ContentValues; 
import android.content.Intent; 
import android.media.MediaRecorder; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.Environment; 
import android.provider.MediaStore; 
import android.provider.MediaStore.MediaColumns; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 


 /** 
  * This is main class which shows how to capture/record audio 
  * @author The Developer's Info 
  * 
  */

public class AudioCapture extends Activity { 

     private MediaRecorder mediaRecorder; 
     private File file = null; 
     static final String PREFIX  = "record"; 
     static final String EXTENSION  = ".3gpp"; 

     @Override
     public void onCreate(Bundle savedInstanceState) { 
         super.onCreate(savedInstanceState); 
         setContentView(R.layout.main); 

         mediaRecorder = new MediaRecorder(); 

         Button startRecording  = (Button) findViewById(R.id.startBtn); 
         Button stopRecording  = (Button) findViewById(R.id.stopBtn); 
         startRecording.setOnClickListener(new View.OnClickListener() { 
             public void onClick(View v) { 
                 try { 
                     startRecording(); 
                 } catch (Exception e) { 
                     e.printStackTrace(); 
                 } 
             } 
         }); 

         stopRecording.setOnClickListener(new View.OnClickListener() { 
             public void onClick(View v) { 
                 stopRecording(); 
                 saveToDB(); 
             } 
         }); 
     } 

     /** 
      * This method starts recording process 
      * @throws Exception 
      */
     private void startRecording() throws Exception { 
         mediaRecorder = new MediaRecorder(); 
         mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
         mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
         mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
                 
         if (file == null) { 
             File rootDir = Environment.getExternalStorageDirectory(); 
             file = File.createTempFile(PREFIX, EXTENSION, rootDir); 
         } 

         mediaRecorder.setOutputFile(file.getAbsolutePath()); 
         mediaRecorder.prepare(); 
         mediaRecorder.start(); 
     } 

     /** 
      * This method stops recording 
      */
     private void stopRecording() { 
         mediaRecorder.stop(); 
         mediaRecorder.release(); 
     } 

   
     /** 
      * This method sets all metadata for audio file 
      */
     private void saveToDB() { 
         ContentValues values = new ContentValues(3); 
         long current = System.currentTimeMillis(); 
         values.put(MediaColumns.TITLE, "My Audio record"); 
         values.put(MediaColumns.DATE_ADDED, (int) (current)); 
//         values.put(MediaColumns.DATE_ADDED, (int) (current / 1000)); 
         values.put(MediaColumns.MIME_TYPE, "audio/mp3"); 
         values.put(MediaColumns.DATA, file.getAbsolutePath()); 

         ContentResolver contentResolver = getContentResolver(); 
         Uri base = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; 
         Uri newUri = contentResolver.insert(base, values); 
         sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, newUri)); 
     } 

 }