Android MediaRecorder启动失败-19,启动失败,尝试删除损坏的文件
我在我的应用程序中有一个表面视图,可以很好地工作,但除了在屏幕上有一个视频预览外,我还想同时录制视频。为此,我必须: 声明变量等:Android MediaRecorder启动失败-19,启动失败,尝试删除损坏的文件,android,android-mediarecorder,Android,Android Mediarecorder,我在我的应用程序中有一个表面视图,可以很好地工作,但除了在屏幕上有一个视频预览外,我还想同时录制视频。为此,我必须: 声明变量等: /************************ GLOBAL VARIABLES FOR VIDEO PREVIEW ********************/ /* For the surface view */ SurfaceView surfaceView; SurfaceHolder surfaceHolder; /* For saving the
/************************ GLOBAL VARIABLES FOR VIDEO PREVIEW ********************/
/* For the surface view */
SurfaceView surfaceView;
SurfaceHolder surfaceHolder;
/* For saving the video to the device */
MediaRecorder mediaRecorder;
private static final String IMAGE_DIRECTORY_NAME = "Hello Camera";
/* For both */
Button buttonStartCameraPreview, buttonStopCameraPreview;
Camera camera;
boolean previewing = false;
然后在onCreate method()中启动记录器,设置启动/停止按钮,设置曲面视图,然后根据按钮按下激活曲面视图/视频捕获的代码:
// Set up the media recorder
initMediaRecorder();
buttonStartCameraPreview = (Button) findViewById(R.id.startCameraPreview);
buttonStopCameraPreview = (Button) findViewById(R.id.stopCameraPreview);
surfaceView = (SurfaceView) findViewById(R.id.surfaceview);
// Set the surfaceView so it appears on top, not behind the view
surfaceView.setZOrderOnTop(true);
// Set the surfaceView background colour to magenta
surfaceView.setBackgroundColor(Color.MAGENTA);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
buttonStartCameraPreview.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v)
{
if(!previewing)
{
camera = Camera.open();
if (camera != null)
{
try
{
camera.setPreviewDisplay(surfaceHolder);
camera.startPreview();
mediaRecorder.start();
previewing = true;
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
}
});
buttonStopCameraPreview.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v)
{
if(camera != null && previewing)
{
camera.stopPreview();
camera.release();
mediaRecorder.stop();
mediaRecorder.release();
finish();
camera = null;
previewing = false;
}
}
});
其他相关方法包括:
public void surfaceCreated(SurfaceHolder holder)
{
prepareMediaRecorder();
}
以及:
应用程序加载良好,但当我按下按钮开始surface view/录制时,“应用程序已停止消息”出现(surface view仍在后台工作)
我假设这个问题与创建/覆盖目标文件以保存输出有关(根据LogCat),但我无法确定。CatLog如下:
07-13 19:12:14.608: E/MediaRecorder(25372): start failed: -19
07-13 19:12:14.608: E/MediaRecorder(25372): start failed.
07-13 19:12:14.608: E/MediaRecorder(25372): try to delete broken file: /storage/emulated/0/Pictures/Hello Camera/VID_20140713_191211.mp4
我在清单文件中还有:
<!-- Accessing camera hardware -->
<uses-feature android:name="android.hardware.camera"
android:required="true" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
谢谢。您曾经解决过这个问题吗?不幸的是,没有。视频正在保存到我的手机上(必须下载ASTRO file manager才能找到),但是它仍然在崩溃。谢谢。如果我找到解决方案,我会提出建议
<!-- Accessing camera hardware -->
<uses-feature android:name="android.hardware.camera"
android:required="true" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />