Handle audio codec in SnapshotVideoRecorder.java

pull/861/head
Ryan 5 years ago
parent 0434fa2fde
commit 26a5e34c2c
  1. 2
      cameraview/src/main/java/com/otaliastudios/cameraview/video/FullVideoRecorder.java
  2. 17
      cameraview/src/main/java/com/otaliastudios/cameraview/video/SnapshotVideoRecorder.java

@ -108,7 +108,6 @@ public abstract class FullVideoRecorder extends VideoRecorder {
mProfile.videoCodec = MediaRecorder.VideoEncoder.H263;
mProfile.fileFormat = MediaRecorder.OutputFormat.MPEG_4; // should work
}
mMediaRecorder.setOutputFormat(mProfile.fileFormat);
// Set audio codec if the user has specified a specific codec.
if (stub.audioCodec == AudioCodec.AMR_NB) {
mProfile.audioCodec = MediaRecorder.AudioEncoder.AMR_NB;
@ -126,6 +125,7 @@ public abstract class FullVideoRecorder extends VideoRecorder {
&& stub.audioCodec == AudioCodec.VORBIS) {
mProfile.audioCodec = MediaRecorder.AudioEncoder.VORBIS;
}
mMediaRecorder.setOutputFormat(mProfile.fileFormat);
// 4. Update the VideoResult stub with information from the profile, if the
// stub values are absent or incomplete

@ -1,10 +1,12 @@
package com.otaliastudios.cameraview.video;
import android.graphics.SurfaceTexture;
import android.media.MediaRecorder;
import android.opengl.EGL14;
import android.os.Build;
import com.otaliastudios.cameraview.CameraLogger;
import com.otaliastudios.cameraview.controls.AudioCodec;
import com.otaliastudios.cameraview.internal.DeviceEncoders;
import com.otaliastudios.cameraview.overlay.Overlay;
import com.otaliastudios.cameraview.VideoResult;
@ -141,7 +143,20 @@ public class SnapshotVideoRecorder extends VideoRecorder implements RendererFram
case H_264: videoType = "video/avc"; break; // MediaFormat.MIMETYPE_VIDEO_AVC:
case DEVICE_DEFAULT: videoType = "video/avc"; break;
}
String audioType = "audio/mp4a-latm";
String audioType = "";
if (mResult.audioCodec == AudioCodec.AMR_NB) {
audioType = "audio/3gpp";
} else if (mResult.audioCodec == AudioCodec.AMR_WB) {
audioType = "audio/amr-wb";
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP
&& mResult.audioCodec == AudioCodec.VORBIS) {
audioType = "audio/vorbis";
} else if (mResult.audioCodec == AudioCodec.AAC
|| mResult.audioCodec == AudioCodec.HE_AAC
|| mResult.audioCodec == AudioCodec.AAC_ELD
|| mResult.audioCodec == AudioCodec.DEVICE_DEFAULT) {
audioType = "audio/mp4a-latm";
}
TextureConfig videoConfig = new TextureConfig();
AudioConfig audioConfig = new AudioConfig();

Loading…
Cancel
Save