Autore Topic: Audio&Video Recording: Problema con istruzione recorder.setAudioSource(...)  (Letto 707 volte)

Offline OmarLuigi

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Tab
  • Sistema operativo:
    Windows 7
Sto impazzendo e no c'è soluzione in rete a questo problema (che secondo me è banale). Voglio registrare un video comprendente audio.

Questa è parte del codice dell'oncreate:
Codice (Java): [Seleziona]
 public void onCreate(Bundle savedInstanceState)
    {   super.onCreate(savedInstanceState);
       
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
        WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

        initRecorder();
       
        setContentView(R.layout.camera);
        SurfaceView cameraView = (SurfaceView) findViewById(R.id.camera_surface);
        holder = cameraView.getHolder();
        holder.addCallback(this);
        holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

        cameraView.setClickable(true);
        cameraView.setOnClickListener(this);
    }  

Questo è quello dell'inizializzazione del recorder:

Codice (Java): [Seleziona]
        private void initRecorder()
        {       recorder = new MediaRecorder();
                recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT); //ERRORE

                recorder.setAudioChannels(1);
            recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
            CamcorderProfile cpHigh = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
            recorder.setProfile(cpHigh);
            recorder.setOutputFile("/sdcard/videocapture_example.mp4");
            recorder.setMaxDuration(50000); // 50 seconds
            recorder.setMaxFileSize(5000000); // Approximately 5 megabytes
        }

L'errore è nella riga indicata.
Più di preciso viene sollevata l'eccezione: java.lang.IllegalStateException.

Il LogCat è:
06-17 15:51:01.812: ERROR/MediaRecorder(5584): audio source has already been set

Anche se a me non sembra proprio di averlo già impostato... Per caso si imposta implitamente con qualche istruzione che ho riportato?

Grazie anticipatamente.

Offline OmarLuigi

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Tab
  • Sistema operativo:
    Windows 7
Re:Audio&Video Recording: Problema con istruzione recorder.setAudioSource(...)
« Risposta #1 il: 23 Giugno 2011, 16:01:06 CEST »
0
L'errore penso fosse dovuto al mio dispositivo che in quel momento sclerava. Ho spento, riacceso, riavviato... Con un codice simile funziona alla grande:
Codice (Java): [Seleziona]
//[...]
VideoCamera = new MediaRecorder();
//[...]
    private void initRecorder()
    {   VideoCamera.setAudioSource(MediaRecorder.AudioSource.DEFAULT); //sorgente audio
        VideoCamera.setVideoSource(MediaRecorder.VideoSource.DEFAULT); //sorgente video
        VideoCamera.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); //formato video
        VideoCamera.setVideoSize(640, 480); //risoluzione video
        VideoCamera.setVideoFrameRate(30); //ho impostato 30 frame al secondo
        VideoCamera.setVideoEncoder(MediaRecorder.VideoEncoder.H264); //H264 è una particolare codifica del MPEG_4... Quella che serviva a me
        VideoCamera.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); //ACC è la particolare codifica audio che mi serviva
    }

Penso quindi di poter considerare risolto questo topic...
Aimè continuo ad avere un probelma.. Sempre sui video ma di altro genere...
L'ho postato in questo altro topic, aiutami!
Come impostare codifica h264 high (NO baseline) e major brand 3gpp4 (NO isom)? - Android Developers Italia