`
wang_peng1
  • 浏览: 3959027 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

初始化MediaRecorder

阅读更多
 private boolean initializeVideo() {
        Log.v(TAG, "initializeVideo");
        
        if (mSurfaceHolder == null) {
            Log.v(TAG, "SurfaceHolder is null");
            return false;
        }

        mMediaRecorderRecording = true;

        if (mMediaRecorder == null)
                mMediaRecorder = new MediaRecorder();
        else
                mMediaRecorder.reset();
        if (mCamera != null) {
                if (Integer.parseInt(Build.VERSION.SDK) >= 8)
                        VideoCameraNew2.reconnect(mCamera);
                mCamera.release();
                mCamera = null;
        }

        if (useFront && Integer.parseInt(Build.VERSION.SDK) >= 5) {
                        if (isAvailableSprintFFC)
                        {
                                try
                                {
                                        Method method = Class.forName("android.hardware.HtcFrontFacingCamera").getDeclaredMethod("getCamera", null);
                                        mCamera = (Camera) method.invoke(null, null);
                                }
                                catch (Exception ex)
                                {
                                        Log.d(TAG, ex.toString());
                                }
                        } else {
                                mCamera = Camera.open(); 
                                Camera.Parameters parameters = mCamera.getParameters(); 
                                parameters.set("camera-id", 2); 
                                mCamera.setParameters(parameters); 
                        }
                        VideoCameraNew.unlock(mCamera);
                        mMediaRecorder.setCamera(mCamera);
                mVideoPreview.setOnClickListener(this);
        }
        mVideoPreview.setOnLongClickListener(this);
        mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
        mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        mMediaRecorder.setOutputFile(sender.getFileDescriptor());

                mMediaRecorder.setVideoFrameRate(20);
        if (videoQualityHigh) {
            mMediaRecorder.setVideoSize(352,288);
        } else {
            mMediaRecorder.setVideoSize(176,144);
        }
        mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);
        mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());

        try {
            mMediaRecorder.prepare();
            mMediaRecorder.setOnErrorListener(this);
            mMediaRecorder.start();
        } catch (IOException exception) {
            releaseMediaRecorder();
            finish();
            return false;
        }
        return true;
    }

 

private void releaseMediaRecorder() {
        Log.v(TAG, "Releasing media recorder.");
        if (mMediaRecorder != null) {
            mMediaRecorder.reset();
            if (mCamera != null) {
                        if (Integer.parseInt(Build.VERSION.SDK) >= 8)
                                VideoCameraNew2.reconnect(mCamera);
                        mCamera.release();
                        mCamera = null;
            }
            mMediaRecorder.release();
            mMediaRecorder = null;
        }
    }
        
    public void onError(MediaRecorder mr, int what, int extra) {
        if (what == MediaRecorder.MEDIA_RECORDER_ERROR_UNKNOWN) {
            finish();
        }
    }

 

 private void stopVideoRecording() {
        Log.v(TAG, "stopVideoRecording");
        if (mMediaRecorderRecording || mMediaRecorder != null) {
                Receiver.listener_video = null;
                t.interrupt();
            RtpStreamSender.delay = 0;

            if (mMediaRecorderRecording && mMediaRecorder != null) {
                try {
                    mMediaRecorder.setOnErrorListener(null);
                    mMediaRecorder.setOnInfoListener(null);
                    mMediaRecorder.stop();
                } catch (RuntimeException e) {
                    Log.e(TAG, "stop fail: " + e.getMessage());
                }

                mMediaRecorderRecording = false;
            }
            releaseMediaRecorder();
        }
    }

 

分享到:
评论
2 楼 diyangxia 2014-04-16  
如果刚recorder的时候就发生了onErrorlistener(),该怎么处理呢
1 楼 shaobin0604 2011-09-26  
貌似是 Sipdroid 里发送视频的代码,很经典!

相关推荐

    java中初始化MediaRecorder的实现方法

    在Java中,初始化`MediaRecorder`是录制音频和视频的关键步骤。`MediaRecorder`类是Android SDK提供的一个组件,用于捕获设备的各种媒体输入(如摄像头视频或麦克风音频),并将其编码为可存储或传输的媒体文件。...

    Android MediaRecorder 视频录制 Demo

    1初始化MediaRecorder对象并设置必要的参数,比如音频源、视频源、输出文件格式等。 2.配置音频和视频的编码器,例如使用AMR NB或AMR WB作为音频编码器,使用MPEG4或H.264作为视频编码器。 3.设置录制视频的尺寸和...

    Android MediaRecorder实现暂停断点录音功能

    1. **初始化MediaRecorder**: 在开始录音前,首先需要实例化MediaRecorder对象,并配置好各种参数,如音频源(AudioSource)、输出格式(OutputFormat)、音频编码格式(AudioEncoder)等。例如: ```java ...

    本示例演示使用 MediaRecorder 录音

    初始化MediaRecorder通常包括以下步骤: 1. 设置音频源(AudioSource): ```java mediaRecorder = new MediaRecorder(); mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); ``` 在这里,我们...

    Android MediaRecorder Demo1

    1. **初始化MediaRecorder**:首先,你需要创建一个`MediaRecorder` 实例,并设置其输出文件路径。通常,我们需要获取到SD卡的可写路径,如`Environment.getExternalStorageDirectory().getPath() + "/my_recording....

    安卓录音软件(MediaRecorder)

    #### 2.1 初始化MediaRecorder 首先,创建MediaRecorder实例,并设置必要的参数,如音频源(AudioSource)、输出格式(OutputFormat)、音频编码(AudioEncoder)等。例如,使用麦克风作为音频源,设置输出格式为...

    Android MediaRecorder 架构分析(PPT)

    1. 初始化MediaRecorder对象。 2. 设置源(setAudioSource和setVideoSource),确定音频和视频数据的来源,通常是从Camera获取视频流,从麦克风获取音频。 3. 设置输出格式(setOutputFormat),定义录制的媒体文件...

    MediaRecorder语音录制播放

    1. **初始化MediaRecorder** 在开始录制前,首先需要创建`MediaRecorder`对象,并通过`setAudioSource()`和`setOutputFormat()`方法指定音频输入源和输出文件的格式。例如,我们可以选择麦克风作为音频源,设置输出...

    MediaRecorder 录音,仿微信录音界面效果

    首先,需要初始化MediaRecorder对象,设置其音频源、输出格式、音频编码以及输出文件路径: ```java MediaRecorder mediaRecorder = new MediaRecorder(); mediaRecorder.setAudioSource(MediaRecorder.AudioSource...

    Android MediaRecorder后台自动循环录视频,空间不足则删除一个最早录制到视频

    1. **初始化MediaRecorder**:在服务的onCreate()方法中,你需要实例化MediaRecorder并设置录制参数。例如,你可以选择Surface作为视频源,麦克风作为音频源,设置视频编码为H.264,音频编码为AAC。 2. **准备和...

    Android采用MediaRecorder进行录音和播放的源码

    1. 初始化MediaRecorder对象:`MediaRecorder mediaRecorder = new MediaRecorder();` 2. 设置源(Source):在录音场景下,我们需要设置音频源,通常是麦克风,用`mediaRecorder.setAudioSource(MediaRecorder....

    Android多媒体功能开发-使用MediaRecorder类录制视频的例子

    // 初始化MediaRecorder MediaRecorder mediaRecorder = new MediaRecorder(); // 设置输入源 mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); mediaRecorder.setAudioSource(MediaRecorder....

    Android MediaRecorder视频录制

    接下来,我们需要调用`prepare()`方法初始化MediaRecorder,确保所有配置都已设置正确。这个过程会检查设备是否支持所选的参数,并进行必要的设置。一旦`prepare()`成功,我们就可以开始录制了,通过调用`start()`...

    MediaRecorder与MediaPlayer的使用

    1. 初始化MediaRecorder:创建MediaRecorder对象,并设置输出格式(如AMR_NB或AAC)、音频源(如MIC)和输出文件路径。 2. 设置参数:根据需求调整录音质量,如采样率、比特率等。 3. 预览准备:调用prepare()方法...

    Android多媒体功能开发-使用MediaRecorder类录制音频

    **初始化MediaRecorder** 在使用MediaRecorder之前,我们需要进行一系列的初始化工作。首先,需要设置输出文件的路径,这可以通过调用`setOutputFile()`方法完成。例如: ```java String outputPath = Environment....

    MediaRecorder 获取AAC音频流写文件

    1. **初始化MediaRecorder** 在使用 `MediaRecorder` 之前,我们需要先对其进行初始化。这包括设置输出文件路径、音频源、音频编码格式和输出格式。例如: ```java MediaRecorder recorder = new MediaRecorder...

    视屏刻录!使用 mediaRecorder 不坑爹

    2. 初始化MediaRecorder:获取到MediaStream后,可以创建MediaRecorder实例并设置参数,例如录制质量、MIME类型等。 ```javascript const options = {mimeType: 'video/webm;codecs=vp9'}; const mediaRecorder = ...

    切换前后摄像头录像(达到真机效果)

    1. **初始化MediaRecorder** - 创建`MediaRecorder`实例。 - 设置输出文件路径,通常我们会选择在SD卡上保存录像文件,因此需要申请写入外部存储的权限。 - 设置输出格式,例如`MediaRecorder.OutputFormat.MPEG_...

    Android中自定义摄像机MediaRecorder录视频

    1. 初始化MediaRecorder对象。 2. 设置输入源(例如SurfaceHolder或SurfaceTexture)。 3. 设置输出文件路径和格式,如MP4。 4. 配置音频和视频编码器。 5. 设置音频和视频的参数,如分辨率、帧率、比特率等。 6. ...

    MediaRecorde视频录制实例

    2. **初始化MediaRecorder** 在使用 `MediaRecorder` 之前,必须先进行初始化。这包括设置输入源(如摄像头)、输出文件路径、音频和视频编码格式、分辨率和帧率等。例如: ```java mediaRecorder = new ...

Global site tag (gtag.js) - Google Analytics