Android 4.4 使用相机录视频出现Application lost the surface 问题 -- 求大神

cc杂货圈 2016-01-05 05:21:46
错误信息:
01-05 11:21:48.480: W/System.err(29634): java.io.IOException: invalid preview surface
01-05 11:21:48.493: W/System.err(29634): at android.media.MediaRecorder._prepare(Native Method)
01-05 11:21:48.493: W/System.err(29634): at android.media.MediaRecorder.prepare(MediaRecorder.java:751)
01-05 11:21:48.493: W/System.err(29634): at com.text.camera.CameraTestActivity.InitAudio(CameraTestActivity.java:556)
01-05 11:21:48.493: W/System.err(29634): at com.text.camera.CameraTestActivity.onCreate(CameraTestActivity.java:140)
01-05 11:21:48.494: W/System.err(29634): at android.app.Activity.performCreate(Activity.java:5248)
01-05 11:21:48.494: W/System.err(29634): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
01-05 11:21:48.494: W/System.err(29634): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2153)
01-05 11:21:48.494: W/System.err(29634): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2238)
01-05 11:21:48.494: W/System.err(29634): at android.app.ActivityThread.access$800(ActivityThread.java:138)
01-05 11:21:48.494: W/System.err(29634): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1201)
01-05 11:21:48.494: W/System.err(29634): at android.os.Handler.dispatchMessage(Handler.java:102)
01-05 11:21:48.494: W/System.err(29634): at android.os.Looper.loop(Looper.java:136)
01-05 11:21:48.494: W/System.err(29634): at android.app.ActivityThread.main(ActivityThread.java:5016)
01-05 11:21:48.494: W/System.err(29634): at java.lang.reflect.Method.invokeNative(Native Method)
01-05 11:21:48.494: W/System.err(29634): at java.lang.reflect.Method.invoke(Method.java:515)
01-05 11:21:48.495: W/System.err(29634): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
01-05 11:21:48.495: W/System.err(29634): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608)
01-05 11:21:48.495: W/System.err(29634): at dalvik.system.NativeStart.main(Native Method)
01-05 11:21:51.285: D/dalvikvm(29634): GC_FOR_ALLOC freed 237K, 2% free 24786K/25064K, paused 29ms, total 29ms



代码:
mCamera.setDisplayOrientation(90);
mSurfaceHolder = mPreview.getHolder();
mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mRecorder = new MediaRecorder();
mRecorder.reset();
if (mCamera != null){
mRecorder.setCamera(mCamera);
mPreview.setCamera(mCamera);
}
mCamera.startPreview();
mRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());
mRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);

mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
mRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
//
// mRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_LOW)); //设置视频和声音的编码为系统自带的格式
// mRecorder.setMaxFileSize(10*1024*1024); //设置视频文件的最大值为10M,单位B
// mRecorder.setMaxDuration(3*1000);//设置视频的最大时长,单位毫秒

// mRecorder.setVideoEncodingBitRate(4);// 设置帧频率,然后就清晰了
//mRecorder.setVideoSize(200,300);

// mRecorder.setOrientationHint(90);// 输出旋转90度,保持竖屏录制


// CamcorderProfile mProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
// mRecorder.setProfile(mProfile);
// mRecorder.setMaxDuration(1200000);

saveVieoFile = getOutputMediaFile(MEDIA_TYPE_VIDEO);
mRecorder.setOutputFile(saveVieoFile.getAbsolutePath());

try {
mRecorder.prepare();
mRecorder.start();
} catch (IllegalStateException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}



不论怎么设置都会报错, 求大神 可以预览, 却不能准备录像和开始。
...全文
466 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cc杂货圈 2016-06-14
  • 打赏
  • 举报
回复
引用 7 楼 yueqinglkong 的回复:
com.text.camera.CameraTestActivity.InitAudio(CameraTestActivity.java:556) 检查下这行代码写的啥嘛 说你的surface无效,是创建失败还是已经被销毁了,你这还是使用?
解决了。我在创建完成之间就调用了~~
cc杂货圈 2016-06-14
  • 打赏
  • 举报
回复
引用 6 楼 github_32902495 的回复:
楼主你解决这个问题了吗
解决了哈,是因为我在创建surface 之前就使用相机了, 所以报surface 没有初始化~
蒲锦_up 2016-06-07
  • 打赏
  • 举报
回复
com.text.camera.CameraTestActivity.InitAudio(CameraTestActivity.java:556) 检查下这行代码写的啥嘛 说你的surface无效,是创建失败还是已经被销毁了,你这还是使用?
Garnet-F 2016-06-07
  • 打赏
  • 举报
回复
楼主你解决这个问题了吗
Garnet-F 2016-06-07
  • 打赏
  • 举报
回复
楼主你这个问题了吗
cc杂货圈 2016-01-09
  • 打赏
  • 举报
回复
引用 3 楼 tcmakebest 的回复:
没有录制过,感觉开始录制的代码不能这样紧跟着开始预览的代码吧, 许多方法都是异步的,有一些回调要进行.
不设置预览也不会报这种错误。。。。。~~~ 不论怎么调试都不对,难道需要定义一个布局文件,然后加一个组件进去。。。。
tcmakebest 2016-01-06
  • 打赏
  • 举报
回复
没有录制过,感觉开始录制的代码不能这样紧跟着开始预览的代码吧, 许多方法都是异步的,有一些回调要进行.
cc杂货圈 2016-01-06
  • 打赏
  • 举报
回复
求大神~~~~~~~~~

80,360

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧