2016-05-02 4 views
1

Ich verwende MediaRecorder in einem Android-Projekt, um Video- und Audiodateien aufzunehmen. Es zeichnet zwar korrekt auf, aber die Lautstärke beider Dateien ist sehr, sehr niedrig.MediaRecorder, Aufnahme von Audio und Video hat eine sehr geringe Lautstärke

Ich benutze diese MediaRecorder konfigurieren Audio

String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
        File folder = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + ConfigApp.RECORDINGS_FOLDER); 
        if (!folder.exists()) 
         success = folder.mkdir(); 
        if (success) { 
         mFileName = folder + timeStamp + ".m4a"; 
         currentFile = mFileName; 
         chrono.setBase(SystemClock.elapsedRealtime()); 
         chrono.start(); 
         mRecorder = new MediaRecorder(); 
         mRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER); 
         mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
         mRecorder.setOutputFile(mFileName); 
         mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 


         try { 
          mRecorder.prepare(); 
         } catch (IOException e) { 
          Log.e(TAG, "prepare() failed"); 
         } 
         mRecorder.start(); 
         handler.post(updateVisualizer); 
        } 

und diese aufnehmen, wenn ich Video

// BEGIN_INCLUDE (configure_preview) 
    mCamera = CameraHelper.getDefaultCameraInstance(); 
    // We need to make sure that our preview and recording video size are supported by the 
    // camera. Query camera to find all the sizes and choose the optimal size given the 
    // dimensions of our preview surface. 
    Camera.Parameters parameters = mCamera.getParameters(); 
    List<Camera.Size> mSupportedPreviewSizes = parameters.getSupportedPreviewSizes(); 
    Camera.Size optimalSize = CameraHelper.getOptimalPreviewSize(mSupportedPreviewSizes, 
      mSurfaceView.getWidth(), mSurfaceView.getHeight()); 

    // Use the same size for recording profile. 
    CamcorderProfile profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH); 
    profile.videoFrameWidth = optimalSize.width; 
    profile.videoFrameHeight = optimalSize.height; 

    // likewise for the camera object itself. 
    parameters.setPreviewSize(profile.videoFrameWidth, profile.videoFrameHeight); 
    mCamera.setParameters(parameters); 
    try { 
     // Requires API level 11+, For backward compatibility use {@link setPreviewDisplay} 
     // with {@link SurfaceView} 
     mCamera.setPreviewDisplay(mSurfaceView.getHolder()); 
     mCamera.setDisplayOrientation(90); 

    } catch (IOException e) { 
     Log.e(TAG, "Surface texture is unavailable or unsuitable" + e.getMessage()); 
     return false; 
    } 
    // END_INCLUDE (configure_preview) 


    // BEGIN_INCLUDE (configure_media_recorder) 
    mMediaRecorder = new MediaRecorder(); 

    // Step 1: Unlock and set camera to MediaRecorder 
    mCamera.unlock(); 
    mMediaRecorder.setCamera(mCamera); 

    // Step 2: Set sources 
    mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER); 
    mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); 

    // Step 3: Set a CamcorderProfile (requires API Level 8 or higher) 
    mMediaRecorder.setProfile(profile); 

    // Step 4: Set output file 
    String path = getVideoFile(MediaStore.Files.FileColumns.MEDIA_TYPE_VIDEO).getAbsolutePath(); 
    currentFile = path; 
    mMediaRecorder.setOutputFile(path); 
    mMediaRecorder.setOrientationHint(270); 

    // END_INCLUDE (configure_media_recorder) 

    // Step 5: Prepare configured MediaRecorder 
    try { 
     mMediaRecorder.prepare(); 
    } catch (IllegalStateException e) { 
     Log.d(TAG, "IllegalStateException preparing MediaRecorder: " + e.getMessage()); 
     releaseMediaRecorder(); 
     return false; 
    } catch (IOException e) { 
     Log.d(TAG, "IOException preparing MediaRecorder: " + e.getMessage()); 
     releaseMediaRecorder(); 
     return false; 
    } 
    return true; 

ich versuchte, andere Optionen auf setAudioSource neben dem AudioSource.CAMCORDER aber ich bekomme immer geringer Lautstärke

aufzeichnen

Muss ich zusätzliche Parameter konfigurieren?

Antwort

0

Versuchen Sie,

mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 

dann gesetzt Ihr Audiosource auf MIC.

+0

Ich habe bereits alle Optionen in MediaRecorder.AudioSource ausprobiert – Ric

+0

Die ursprüngliche Aufnahme Voice App oder Camcoder App ist in Ordnung? –

+0

Entschuldigung, aber ich teile nur meine Erfahrung. Und muss sagen, überprüfen Sie die Hardware. Ich wurde entwickelt, Sprach-Tracking-App. also war ich gleich schwer. Und versuchen Sie es zu ändern setAudioSource Option ist in Ordnung. –