mediarecoder 安卓_【流媒體】Android 实时视频采集—MediaRecoder录制

private boolean initializeVideo()

{

try

{

Log.i(TAG,"##initializeVideo....");

//〇state: Initial 实例化MediaRecorder对象 if (mSurfaceView == null)

{

Log.e(TAG,"mSurfaceView is null in initializeVideo");

return false;

}

if(mMediaRecorder == null)

mMediaRecorder = new MediaRecorder();

else

mMediaRecorder.reset();

//〇state: Initial=>Initialized//set audio source as Microphone, video source as camera//specified before settings Recording-parameters or encoders,called only before setOutputFormat mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);

//mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);//〇state: Initialized=>DataSourceConfigured//设置錄製視頻输出格式//THREE_GPP: 3gp格式,H263视频ARM音频编码//MPEG-4: MPEG4 media file format//RAW_AMR: 只支持音频且音频编码要求为AMR_NB//AMR_NB://ARM_MB://Default://3gp or mp4//Android支持的音频编解码仅为AMR_NB;支持的视频编解码仅为H263,H264只支持解码;支持对JPEG编解码;输出格式仅支持.3gp和.mp4 String lVideoFileFullPath;

lVideoFileFullPath = ".3gp"; //.mp4 mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

//mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); Log.i(TAG, "Video:Current container format: "+"3GP\n");

//设置視頻/音频文件的编码:AAC/AMR_NB/AMR_MB/Default//video: H.263, MP4-SP, or H.264 mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);

//mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);//mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP); Log.i(TAG, "Video:Current encoding format: "+"H264\n");

//audio: AMR-NB//mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//设置视频录制的分辨率。必须放在设置编码和格式的后面,否则报错//mMediaRecorder.setVideoSize(176, 144); mMediaRecorder.setVideoSize(320, 240);

//mMediaRecorder.setVideoSize(720, 480); Log.i(TAG, "Video:Current Video Size: "+"320*240\n");

//设置录制的视频帧率。必须放在设置编码和格式的后面,否则报错 mMediaRecorder.setVideoFrameRate(FRAME_RATE);

//预览 mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());

//设置输出文件方式: 直接本地存储 or LocalSocket远程输出 if(bIfNativeORRemote) //Native {

lVideoFileFullPath = strRecVideoFilePath + String.valueOf(System.currentTimeMillis()) + lVideoFileFullPath;

mRecVideoFile = new File(lVideoFileFullPath);

//mMediaRecorder.setOutputFile(mRecVideoFile.getAbsolutePath()); mMediaRecorder.setOutputFile(mRecVideoFile.getPath()); //called after set**Source before prepare Log.i(TAG, "start write into file~");

}

else //Remote {

mMediaRecorder.setOutputFile(sender.getFileDescriptor()); //设置以流方式输出 Log.i(TAG, "start send into sender~");

}

// mMediaRecorder.setMaxDuration(0);//called after setOutputFile before prepare,if zero or negation,disables the limit mMediaRecorder.setMaxFileSize(0);//called after setOutputFile before prepare,if zero or negation,disables the limit try

{

mMediaRecorder.setOnInfoListener(this);

mMediaRecorder.setOnErrorListener(this);

//〇state: DataSourceConfigured => prepared mMediaRecorder.prepare();

//〇state: prepared => recording mMediaRecorder.start();

bIfRecInProcess = true;

Log.i(TAG, "initializeVideo Start!");

} catch (Exception e)

{

releaseMediaRecorder();

finish();

e.printStackTrace();

}

return true;

} catch (Exception e)

{

//TODO: handle exception e.printStackTrace();

return false;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值