public void startRecording() { setFileNameAndPath(); mRecorder = new MediaRecorder(); mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); mRecorder.setOutputFile(mFilePath); mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); mRecorder.setAudioChannels(1); mRecorder.setAudioSamplingRate(44100); mRecorder.setAudioEncodingBitRate(192000); try { mRecorder.prepare(); mRecorder.start(); mStartingTimeMillis = System.currentTimeMillis(); } catch (IOException e) { Log.e(LOG_TAG, "prepare() failed"); } }
public void recordVideo(VideoStartCallback videoStartCallback, VideoStopCallback videoStopCallback, VideoErrorCallback videoErrorCallback) { try { this.videoStartCallback = videoStartCallback; this.videoStopCallback = videoStopCallback; this.videoErrorCallback = videoErrorCallback; if(mCameraDevice == null || !mTextureView.isAvailable() || mPreviewSize == null){ this.videoErrorCallback.onVideoError("Camera not ready."); return; } videoFile = Environment.getExternalStorageDirectory() + "/" + formatter.format(new Date()) + ".mp4"; mMediaRecorder = new MediaRecorder(); //mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE); mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); mMediaRecorder.setOutputFile(videoFile); mMediaRecorder.setVideoEncodingBitRate(10000000); mMediaRecorder.setVideoFrameRate(30); mMediaRecorder.setVideoSize(mVideoSize.getWidth(), mVideoSize.getHeight()); mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); //mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); if(swappedDimensions) { mMediaRecorder.setOrientationHint(INVERSE_ORIENTATIONS.get(mDisplayOrientation)); } else { mMediaRecorder.setOrientationHint(ORIENTATIONS.get(mDisplayOrientation)); } mMediaRecorder.prepare(); closePreviewSession(); createCameraRecordSession(); } catch(IOException ex) { Log.d(TAG, ex.getMessage()); } }
/** * Creates a new {@link AudioRecord}. * * @return A newly created {@link AudioRecord}, or null if it cannot be created (missing * permissions?). */ private AudioRecord createAudioRecord() { for (int sampleRate : SAMPLE_RATE_CANDIDATES) { final int sizeInBytes = AudioRecord.getMinBufferSize(sampleRate, CHANNEL, ENCODING); if (sizeInBytes == AudioRecord.ERROR_BAD_VALUE) { continue; } final AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleRate, CHANNEL, ENCODING, sizeInBytes); if (audioRecord.getState() == AudioRecord.STATE_INITIALIZED) { mBuffer = new byte[sizeInBytes]; return audioRecord; } else { audioRecord.release(); } } return null; }
public void prepareAudio() { try { this.mCurrentFile = new File(getVoiceCacheDir(this.mContext), UUID.randomUUID() .toString()); this.mMediaRecorder = new MediaRecorder(); this.mMediaRecorder.setOutputFile(this.mCurrentFile.getAbsolutePath()); this.mMediaRecorder.setAudioSource(1); this.mMediaRecorder.setOutputFormat(3); this.mMediaRecorder.setAudioEncoder(1); this.mMediaRecorder.prepare(); this.mMediaRecorder.start(); this.mIsPrepared = true; if (this.mCallback != null) { this.mCallback.wellPrepared(); } } catch (Exception e) { if (this.mCallback != null) { this.mCallback.onAudioRecorderNoPermission(); } } }
private void startRecording(final String filename) { recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, RECORDER_SAMPLERATE, RECORDER_CHANNELS, RECORDER_AUDIO_ENCODING, bufferSize); int i = recorder.getState(); if (i==1) recorder.startRecording(); isRecording = true; recordingThread = new Thread(new Runnable() { @Override public void run() { writeAudioDataToFile(filename); } }, "AudioRecorder Thread"); recordingThread.start(); }
private void startRecording() { audioRec = new MediaRecorder(); audioRec.setAudioSource(MediaRecorder.AudioSource.MIC); audioRec.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); audioRec.setOutputFile(audioFilePath); audioRec.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); audioRec.setAudioSamplingRate(256); try { audioRec.prepare(); audioRec.start(); } catch (IOException e) { e.printStackTrace(); } }
private boolean configureMediaRecorderDataSource(Context context, File recordFile, int audioFormat) { try { mediaRecorder.setOutputFormat(audioFormat); mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); mediaRecorder.setOutputFile(recordFile.getAbsolutePath()); } catch (Exception e) { Log.w("RecordFileWriter", "configureMediaRecorderDataSource : " + context.getString(R.string.log_record_file_writer_error_data_source) + " : " + e); databaseManager.insertLog(context, "" + context.getString(R.string.log_record_file_writer_error_data_source), new Date().getTime(), 2, false); return false; } return true; }
public void startListening() { synchronized (API_LOCK) { if (this.disabled) { return; } if (!isListening) { recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, RECORDER_SAMPLERATE, RECORDER_CHANNELS, RECORDER_AUDIO_ENCODING, ELEMENTS_TO_RECORD * BYTES_PER_ELEMENT); recorder.startRecording(); isListening = true; if (!isRecording) { isRecording = true; recordingThread = new Thread(new Runnable() { public void run() { detectHotword(); } }, "AudioRecorder Thread"); recordingThread.start(); } } } }
/** * Create a new AudioDispatcher connected to the default microphone. * * @param sampleRate * The requested sample rate. * @param audioBufferSize * The size of the audio buffer (in samples). * * @param bufferOverlap * The size of the overlap (in samples). * @return A new AudioDispatcher */ public static AudioDispatcher fromDefaultMicrophone(final int sampleRate, final int audioBufferSize, final int bufferOverlap) { int minAudioBufferSize = AudioRecord.getMinBufferSize(sampleRate, android.media.AudioFormat.CHANNEL_IN_MONO, android.media.AudioFormat.ENCODING_PCM_16BIT); int minAudioBufferSizeInSamples = minAudioBufferSize/2; if(minAudioBufferSizeInSamples <= audioBufferSize ){ AudioRecord audioInputStream = new AudioRecord( MediaRecorder.AudioSource.MIC, sampleRate, android.media.AudioFormat.CHANNEL_IN_MONO, android.media.AudioFormat.ENCODING_PCM_16BIT, audioBufferSize * 2); TarsosDSPAudioFormat format = new TarsosDSPAudioFormat(sampleRate, 16,1, true, false); TarsosDSPAudioInputStream audioStream = new AndroidAudioInputStream(audioInputStream, format); //start recording ! Opens the stream. audioInputStream.startRecording(); return new AudioDispatcher(audioStream,audioBufferSize,bufferOverlap); }else{ throw new IllegalArgumentException("Buffer size too small should be at least " + (minAudioBufferSize *2)); } }
private void setUpMediaRecorder() throws IOException { final Activity activity = (Activity) getContext(); if (null == activity) { return; } mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE); mediaRecorder.setOutputFile(getOutputMediaFile(MEDIA_TYPE_VIDEO).toString()); if (sensorOrientation == SENSOR_ORIENTATION_DEFAULT_DEGREES) { mediaRecorder.setOrientationHint(ORIENTATION_90); } else { mediaRecorder.setOrientationHint(ORIENTATION_270); } CamcorderProfile profile = getCamcorderProfile(); profile.videoFrameWidth = videoSize.getWidth(); profile.videoFrameHeight = videoSize.getHeight(); mediaRecorder.setProfile(profile); mediaRecorder.setVideoEncodingBitRate(BITRATE); mediaRecorder.prepare(); }
protected void configureRecorder(int quality, MediaRecorder recorder) { Camera.CameraInfo info = new Camera.CameraInfo(); Camera.getCameraInfo(cameraInfo.cameraId, info); int displayOrientation = getDisplayOrientation(info, false); recorder.setOrientationHint(displayOrientation); int highProfile = getHigh(); boolean canGoHigh = CamcorderProfile.hasProfile(cameraInfo.cameraId, highProfile); boolean canGoLow = CamcorderProfile.hasProfile(cameraInfo.cameraId, CamcorderProfile.QUALITY_LOW); if (canGoHigh && (quality == 1 || !canGoLow)) { recorder.setProfile(CamcorderProfile.get(cameraInfo.cameraId, highProfile)); } else if (canGoLow) { recorder.setProfile(CamcorderProfile.get(cameraInfo.cameraId, CamcorderProfile.QUALITY_LOW)); } else { throw new IllegalStateException("cannot find valid CamcorderProfile"); } isVideo = true; }
@Override public void onInfo(MediaRecorder mediaRecorder, int what, int extra) { if (what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED || what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED || what == MediaRecorder.MEDIA_RECORDER_INFO_UNKNOWN) { MediaRecorder tempRecorder = recorder; recorder = null; if (tempRecorder != null) { tempRecorder.stop(); tempRecorder.release(); } if (onVideoTakeCallback != null) { final Bitmap bitmap = ThumbnailUtils.createVideoThumbnail(recordedFile, MediaStore.Video.Thumbnails.MINI_KIND); AndroidUtilities.runOnUIThread(new Runnable() { @Override public void run() { if (onVideoTakeCallback != null) { onVideoTakeCallback.onFinishVideoRecording(bitmap); onVideoTakeCallback = null; } } }); } } }
@Click(R.id.fabRec) void clickRec() { if(!isInitRecorder) { isInitRecorder = true; mAudioFile = new File( Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "lecrec" + File.separator + System.nanoTime() + ".file.m4a"); mAudioRecorder.prepareRecord(MediaRecorder.AudioSource.MIC, MediaRecorder.OutputFormat.MPEG_4, MediaRecorder.AudioEncoder.AAC, mAudioFile); } if(!isRecording) { isRecording = true; startTimer(); mAudioRecorder.startRecord(); fabRec.setBackgroundTintList(ColorStateList.valueOf(getResources().getColor(R.color.colorPrimary))); fabRec.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.ic_stop_white_24dp)); } else { isRecording = false; stopTimer(); fabRec.setVisibility(View.INVISIBLE); mAudioRecorder.stopRecord(); convertToWav(); } }
/** * * * Resets the recorder to the INITIALIZING state, as if it was just created. * In case the class was in RECORDING state, the recording is stopped. In * case of exceptions the class is set to the ERROR state. * */ public void reset() { try { if (state != State.ERROR) { release(); filePath = null; // Reset file path cAmplitude = 0; // Reset amplitude if (rUncompressed) { audioRecorder = new AudioRecord(aSource, sRate, nChannels + 1, aFormat, bufferSize); } else { mediaRecorder = new MediaRecorder(); mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mediaRecorder .setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); mediaRecorder .setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); } state = State.INITIALIZING; } } catch (Exception e) { Log.e(ExtAudioRecorder.class.getName(), e.getMessage()); state = State.ERROR; } }
private Camera2Session(CreateSessionCallback callback, Events events, Context applicationContext, CameraManager cameraManager, SurfaceTextureHelper surfaceTextureHelper, MediaRecorder mediaRecorder, String cameraId, int width, int height, int framerate) { Logging.d(TAG, "Create new camera2 session on camera " + cameraId); videoFrameEmitTrialEnabled = PeerConnectionFactory.fieldTrialsFindFullName(PeerConnectionFactory.VIDEO_FRAME_EMIT_TRIAL) .equals(PeerConnectionFactory.TRIAL_ENABLED); constructionTimeNs = System.nanoTime(); this.cameraThreadHandler = new Handler(); this.callback = callback; this.events = events; this.applicationContext = applicationContext; this.cameraManager = cameraManager; this.surfaceTextureHelper = surfaceTextureHelper; this.mediaRecorderSurface = (mediaRecorder != null) ? mediaRecorder.getSurface() : null; this.cameraId = cameraId; this.width = width; this.height = height; this.framerate = framerate; start(); }
@Override public void onError(MediaRecorder affectedRecorder, int what, int extra) { if (controller == null || affectedRecorder != controller.recorder) { Log.w(TAG, "onError called with wrong recorder. Ignoring."); return; } form.dispatchErrorOccurredEvent(this, "onError", ErrorMessages.ERROR_SOUND_RECORDER); try { controller.stop(); } catch (Throwable e) { Log.w(TAG, e.getMessage()); } finally { controller = null; StoppedRecording(); } }
public static void startRecording(Context context, MediaRecorder recorder, String word) { recorder.reset(); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); recorder.setMaxDuration(10000); recorder.setAudioSamplingRate(16000); recorder.setAudioEncodingBitRate(16000*4*1); recorder.setAudioSamplingRate(44100); recorder.setAudioChannels(1); recorder.setOutputFile(context.getFilesDir().getAbsolutePath() + "/" + word + ".aac"); try { recorder.prepare(); } catch (IOException e) { e.printStackTrace(); } recorder.start(); }
@Override public void onInfo(MediaRecorder mediaRecorder, int what, int extra) { if (what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED || what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED || what == MediaRecorder.MEDIA_RECORDER_INFO_UNKNOWN) { MediaRecorder tempRecorder = recorder; recorder = null; if (tempRecorder != null) { tempRecorder.stop(); tempRecorder.release(); } final Bitmap bitmap = ThumbnailUtils.createVideoThumbnail(recordedFile, MediaStore.Video.Thumbnails.MINI_KIND); AndroidUtilities.runOnUIThread(new Runnable() { @Override public void run() { onVideoTakeCallback.onFinishVideoRecording(bitmap); } }); } }
public void stopVideoRecording(CameraSession session, boolean abandon) { try { CameraInfo info = session.cameraInfo; Camera camera = info.camera; if (camera != null && recorder != null) { MediaRecorder tempRecorder = recorder; recorder = null; tempRecorder.stop(); tempRecorder.release(); camera.reconnect(); camera.startPreview(); session.stopVideoRecording(); } if (!abandon) { final Bitmap bitmap = ThumbnailUtils.createVideoThumbnail(recordedFile, MediaStore.Video.Thumbnails.MINI_KIND); AndroidUtilities.runOnUIThread(new Runnable() { @Override public void run() { onVideoTakeCallback.onFinishVideoRecording(bitmap); } }); } } catch (Exception e) { FileLog.e("tmessages", e); } }
private boolean startRecorderInternal() throws Exception { shutdownCamera(); if (!initCamera()) return false; switchCamera.setVisibility(View.GONE); mediaRecorder = new MediaRecorder(); camera.unlock(); mediaRecorder.setCamera(camera); mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER); mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); setCamcorderProfile(); mediaRecorder.setPreviewDisplay(surfaceHolder.getSurface()); mediaRecorder.setMaxDuration(1000 * VIDEO_TIMES); mediaRecorder.setOutputFile(filename); setVideoOrientation(); mediaRecorder.prepare(); mediaRecorder.start(); return true; }
private void setupMediaRecorder() throws IOException { final Activity activity = getActivity(); if (null == activity) { return; } mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE); mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); mNextVideoAbsolutePath = getVideoFilePath(getActivity()); mMediaRecorder.setOutputFile(mNextVideoAbsolutePath); mMediaRecorder.setVideoEncodingBitRate(10000000); mMediaRecorder.setVideoFrameRate(30); mMediaRecorder.setVideoSize(mVideoSize.getWidth(), mVideoSize.getHeight()); mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); int rotation = activity.getWindowManager().getDefaultDisplay().getRotation(); switch (mSensorOrientation) { case SENSOR_ORIENTATION_DEFAULT_DEGREES: mMediaRecorder.setOrientationHint(DEFAULT_ORIENTATIONS.get(rotation)); break; case SENSOR_ORIENTATION_INVERSE_DEGREES: mMediaRecorder.setOrientationHint(INVERSE_ORIENTATIONS.get(rotation)); break; } mMediaRecorder.prepare(); }
private void setupMediaRecorder() throws IOException { mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE); mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); mNextVideoAbsolutePath = getVideoFilePath(mContext); mMediaRecorder.setOutputFile(mNextVideoAbsolutePath); mMediaRecorder.setVideoEncodingBitRate(10000000); mMediaRecorder.setVideoFrameRate(30); mMediaRecorder.setVideoSize(mVideoSize.getWidth(), mVideoSize.getHeight()); mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); int rotation = mWindowManager.getDefaultDisplay().getRotation(); switch (mSensorOrientation) { case SENSOR_ORIENTATION_DEFAULT_DEGREES: mMediaRecorder.setOrientationHint(DEFAULT_ORIENTATIONS.get(rotation)); break; case SENSOR_ORIENTATION_INVERSE_DEGREES: mMediaRecorder.setOrientationHint(INVERSE_ORIENTATIONS.get(rotation)); break; } mMediaRecorder.prepare(); }
private Camera2Session(CreateSessionCallback callback, Events events, Context applicationContext, CameraManager cameraManager, SurfaceTextureHelper surfaceTextureHelper, MediaRecorder mediaRecorder, String cameraId, int width, int height, int framerate) { Logging.d(TAG, "Create new camera2 session on camera " + cameraId); constructionTimeNs = System.nanoTime(); this.cameraThreadHandler = new Handler(); this.callback = callback; this.events = events; this.applicationContext = applicationContext; this.cameraManager = cameraManager; this.surfaceTextureHelper = surfaceTextureHelper; this.mediaRecorderSurface = (mediaRecorder != null) ? mediaRecorder.getSurface() : null; this.cameraId = cameraId; this.width = width; this.height = height; this.framerate = framerate; this.activityOrientation = getDeviceOrientation(); start(); }
public void StartRecord() { Log.i(TAG,"开始录音"); isRecording=true; //生成PCM文件 File file = audioFile;//new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/reverseme.pcm"); Log.i(TAG,"生成文件"); //如果存在,就先删除再创建 if (file.exists()) file.delete(); Log.i(TAG,"删除文件"); try { file.createNewFile(); Log.i(TAG,"创建文件"); } catch (IOException e) { Log.i(TAG,"未能创建"); throw new IllegalStateException("未能创建" + file.toString()); } try { //输出流 OutputStream os = new FileOutputStream(file); BufferedOutputStream bos = new BufferedOutputStream(os); DataOutputStream dos = new DataOutputStream(bos); int bufferSize = AudioRecord.getMinBufferSize(frequency, channelConfiguration, audioEncoding); AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, frequency, channelConfiguration, audioEncoding, bufferSize); byte[] buffer = new byte[bufferSize]; audioRecord.startRecording(); Log.i(TAG, "开始录音"); isRecording = true; while (isRecording) { int bufferReadResult = audioRecord.read(buffer, 0, bufferSize); dos.write(buffer,0,bufferReadResult); } audioRecord.stop(); dos.close(); } catch (Throwable t) { Log.e(TAG, "录音失败"); } }
@Override public void onInfo(MediaRecorder mediaRecorder, int what, int extra) { if (MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED == what) { onMaxDurationReached(); } else if (MediaRecorder.MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED == what) { onMaxFileSizeReached(); } }
public void startRecord() throws IOException { synchronized (REC_LOCK){ isRecordStarted=true; MediaFormat audioFormat=mConfig.getAudioFormat(); mAudioEncoder=MediaCodec.createEncoderByType(audioFormat.getString(MediaFormat.KEY_MIME)); mAudioEncoder.configure(audioFormat,null,null,MediaCodec.CONFIGURE_FLAG_ENCODE); MediaFormat videoFormat=mConfig.getVideoFormat(); mVideoEncoder=MediaCodec.createEncoderByType(videoFormat.getString(MediaFormat.KEY_MIME)); //此处不能用mOutputSurface,会configure失败 mVideoEncoder.configure(videoFormat,null,null,MediaCodec.CONFIGURE_FLAG_ENCODE); mEncodeSurface=mVideoEncoder.createInputSurface(); mAudioEncoder.start(); mVideoEncoder.start(); mMuxer=new MediaMuxer(mOutputPath,MediaMuxer.OutputFormat.MUXER_OUTPUT_MPEG_4); mRecordBufferSize = AudioRecord.getMinBufferSize(mRecordSampleRate, mRecordChannelConfig, mRecordAudioFormat)*2; // buffer=new byte[bufferSize]; mAudioRecord=new AudioRecord(MediaRecorder.AudioSource.MIC,mRecordSampleRate,mRecordChannelConfig, mRecordAudioFormat,mRecordBufferSize); mAudioThread=new Thread(new Runnable() { @Override public void run() { mAudioRecord.startRecording(); while (!audioEncodeStep(isTryStopAudio)){}; mAudioRecord.stop(); } }); mAudioThread.start(); isRecordAudioStarted=true; } }
static Audio recordAudio(UQI uqi, long duration) throws IOException { List<Integer> amplitudes = new ArrayList<>(); MediaRecorder recorder = new MediaRecorder(); recorder.setAudioSource(Globals.AudioConfig.audioSource); recorder.setOutputFormat(Globals.AudioConfig.outputFormat); recorder.setAudioEncoder(Globals.AudioConfig.audioEncoder); String audioPath = "temp/audio_" + TimeUtils.getTimeTag() + ".amr"; File tempAudioFile = StorageUtils.getValidFile(uqi.getContext(), audioPath, false); recorder.setOutputFile(tempAudioFile.getAbsolutePath()); recorder.prepare(); recorder.start(); // Recording is now started long startTime = System.currentTimeMillis(); while (true) { long currentTime = System.currentTimeMillis(); if (currentTime - startTime > duration) { break; } amplitudes.add(recorder.getMaxAmplitude()); } recorder.stop(); recorder.reset(); // You can reuse the object by going back to setAudioSource() step recorder.release(); // Now the object cannot be reused AudioData audioData = AudioData.newTempRecord(tempAudioFile, amplitudes); return new Audio(startTime, audioData); }
public AudioRecordThread(LinkedBlockingDeque<byte[]> linkedBlockingDeque) { this.linkedBlockingDeque = linkedBlockingDeque; bufferSize = AudioRecord.getMinBufferSize(SAMPLE_RATE_HZ, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT); audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, SAMPLE_RATE_HZ, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize); }
public void startRecording() { mRecorder = new MediaRecorder(); mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); String filePath = FileUtils.createFile(mFileFullName); mRecorder.setOutputFile(filePath); mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); try { mRecorder.prepare(); mRecorder.start(); } catch (Exception e) { Log.e(TAG, "prepare() failed"); } }
@TargetApi(18) public static AudioRecord getAudioRecord() { int frequency = Options.getInstance().audio.frequency; int audioEncoding = Options.getInstance().audio.encoding; int channelConfiguration = AudioFormat.CHANNEL_CONFIGURATION_MONO; if(Options.getInstance().audio.channelCount == 2) { channelConfiguration = AudioFormat.CHANNEL_CONFIGURATION_STEREO; } int audioSource = MediaRecorder.AudioSource.MIC; if(Options.getInstance().audio.aec) { audioSource = MediaRecorder.AudioSource.VOICE_COMMUNICATION; } return new AudioRecord(audioSource, frequency, channelConfiguration, audioEncoding, getRecordBufferSize()); }
public void prepare() throws IOException { mRecorder = new MediaRecorder(); mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); mRecorder.setAudioSamplingRate(44100); mRecorder.setAudioEncodingBitRate(96000); mRecorder.setOutputFile(mFilePath); mRecorder.prepare(); }
/** * 触发录音权限 **/ private void checkAudioRecordPermisssion() { Single.just(1).doOnSubscribe(new Consumer<Disposable>() { @Override public void accept(Disposable disposable) throws Exception { Log.i(TAG, "checkAudioRecordPermisssion>>" + Thread.currentThread()); int minBufferLength = AudioRecord.getMinBufferSize(16000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT); AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.VOICE_RECOGNITION, 16000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, minBufferLength); try { byte[] buffer = new byte[minBufferLength]; audioRecord.startRecording(); if (audioRecord.read(buffer, 0, minBufferLength) > 0) { Log.i(TAG, "had Record Permission!!!"); } audioRecord.stop(); buffer = null; } catch (Exception e) { e.printStackTrace(); } finally { if (audioRecord.getRecordingState() == AudioRecord.RECORDSTATE_RECORDING) { audioRecord.stop(); } audioRecord.release(); } } }) .subscribeOn(Schedulers.io()) .subscribe(); }
private synchronized void _startRecording(Camera camera, String outPutFile, int rotationHint, int maxdurationMillis) { CamcorderProfile profile = CamcorderProfile.get(CamcorderProfile.QUALITY_LOW); profile.videoFrameWidth = 640; profile.videoFrameHeight = 480; profile.audioBitRate = 128; profile.audioCodec = MediaRecorder.AudioEncoder.AAC; _startRecording(camera, outPutFile, rotationHint, maxdurationMillis, profile); }
private void setUpMediaRecorder() throws IOException { final Activity activity = getActivity(); if (null == activity) { return; } mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE); mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); if (mNextVideoAbsolutePath == null || mNextVideoAbsolutePath.isEmpty()) { mNextVideoAbsolutePath = getVideoFilePath(getActivity()); } mMediaRecorder.setOutputFile(mNextVideoAbsolutePath); mMediaRecorder.setVideoEncodingBitRate(10000000); mMediaRecorder.setVideoFrameRate(30); mMediaRecorder.setVideoSize(mVideoSize.getWidth(), mVideoSize.getHeight()); mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); int rotation = activity.getWindowManager().getDefaultDisplay().getRotation(); switch (mSensorOrientation) { case SENSOR_ORIENTATION_DEFAULT_DEGREES: mMediaRecorder.setOrientationHint(DEFAULT_ORIENTATIONS.get(rotation)); break; case SENSOR_ORIENTATION_INVERSE_DEGREES: mMediaRecorder.setOrientationHint(INVERSE_ORIENTATIONS.get(rotation)); break; } mMediaRecorder.prepare(); }
public void initRecorder() { SAMPLE_RATE = getValidSampleRates(); int bufferSize = AudioRecord.getMinBufferSize(SAMPLE_RATE, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT); mBuffer = new short[bufferSize]; mRecorder = new AudioRecord(MediaRecorder.AudioSource.MIC, SAMPLE_RATE, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize); new File(RECORD_WAV_PATH).mkdir(); }
public void onRecordClick(View v) { if (!mRecording) { File f = new File(getExternalFilesDir(null), "recording.mp4"); mRecorder = new MediaRecorder(); mRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT); mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); mRecorder.setOutputFile(f.getAbsolutePath()); mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC_ELD); mRecorder.setAudioSamplingRate(48000); mRecorder.setAudioEncodingBitRate(96000); try { mRecorder.prepare(); } catch (IOException e) { Log.e(TAG, "unable to prepare MediaRecorder"); mRecorder = null; return; } mRecorder.start(); mRecording = true; setState(STATE_RECORDING); } else { mRecorder.stop(); mRecorder.release(); mRecording = false; setState(STATE_IDLE); } }