代码如下:
//开始录像
public void recorder(){
try {
myRecAudioFile = File.createTempFile(strTempFile,".3gp",myRecAudioDir);
recorder = new MediaRecorder();
recorder.setPreviewDisplay(surfaceHolder.getSurface());
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
//设置录音源为麦克风
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
//设置输出格式为3gp
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
//设置视频大小
recorder.setVideoSize(176,144);
recorder.setVideoFrameRate(15);
//设置视频编码
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);
//设置音频编码
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setMaxDuration(10000);
recorder.setOutputFile(myRecAudioFile.getAbsolutePath());
// recorder.setOutputFile("/sdcard/v.3gp");
recorder.prepare();
recorder.start();
recording = true;
isStopRecord = false;
} catch (IOException e) {
e.printStackTrace();
}
}当我点击录制时,一开始录制就自动关闭了,不知道是什么原因,请大家多多指教!!!
//开始录像
public void recorder(){
try {
myRecAudioFile = File.createTempFile(strTempFile,".3gp",myRecAudioDir);
recorder = new MediaRecorder();
recorder.setPreviewDisplay(surfaceHolder.getSurface());
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
//设置录音源为麦克风
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
//设置输出格式为3gp
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
//设置视频大小
recorder.setVideoSize(176,144);
recorder.setVideoFrameRate(15);
//设置视频编码
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);
//设置音频编码
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setMaxDuration(10000);
recorder.setOutputFile(myRecAudioFile.getAbsolutePath());
// recorder.setOutputFile("/sdcard/v.3gp");
recorder.prepare();
recorder.start();
recording = true;
isStopRecord = false;
} catch (IOException e) {
e.printStackTrace();
}
}当我点击录制时,一开始录制就自动关闭了,不知道是什么原因,请大家多多指教!!!
解决方案 »
- android异步刷新界面的问题
- sqllite数据库导入到databases文件夹中
- 请教关于hashmap里的get(int index)取值的问题
- BaseAdapter中getview问题
- 求助android popupwindow dismiss()事件处理
- listview里的item放webview
- 求助开机自启动问题 BOOT_COMPLETED
- TextView在有多行文本的情况下怎么使每一行都居中对齐
- 请各路大神帮忙看看哪里有问题
- 怎么编写一个串口安卓APP,求大腿
- 求解ListView中EditText问题
- iMX53 QSB板怎么使用fastboot功能下载镜像到SD卡,我的老是不行!
楼主的录制方法和下面介绍的也基本一样啊,没看出来什么原因android视频录制实现方法
http://www.rosoo.net/a/mobile_andriod/200912/8158.html关于Android音频、视频录制类MediaRecorder
http://blog.csdn.net/iamlazybone/archive/2010/07/25/5764118.aspx
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />2. 将e.printStackTrace();打印出来的log发出来,方便分析。
<uses-permission android:name="android.permission.CAMERA"></uses-permission>
<uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>刚开始是录制了9秒钟后自动关闭,录制的视频也可以看,后来改了一下代码,现在一开始录制就自动关闭了,文件全是0字节.
at android.media.MediaRecorder.start(Native Method)
at xy.phone.service.PhoneListenerService$1.onCallStateChanged(PhoneListenerService.java:112)
at android.telephony.PhoneStateListener$2.handleMessage(PhoneStateListener.java:303)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4363)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
at dalvik.system.NativeStart.main(Native Method)
请高手帮我看看这个问题了,非常感谢!
源码是:
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC); //来自于麦克风
recorder
.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); //输出格式mp4
recorder
.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); //编码
SimpleDateFormat format = new SimpleDateFormat(
"yyMMddHHmmss");
String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/phoneRecordes/";
Log.i(TAG, "PATH:"+path);
if(this.incomingNumber.equals("")){
this.incomingNumber = "outCall";
}
filename = path + this.incomingNumber + "_"
+ format.format(new Date()) + ".mp4";
recorder.setOutputFile(filename);
recorder.prepare();
recorder.start();
isRecord = true;
很多人用运行这个都出了问题,我后来也发现了问题,在1.6版本上可以运行,但1.6以上的版本就会出问题,原因是1.6版本以上的SDK封装了一部分功能.你可以加我QQ:412097740 或发邮件讨论:[email protected]