知道发生了什么事吗?错误消息会一直提示:MediaRecorder start failed: -19
和android.media.MediaRecorder.start(Native Method)
我是Android编程世界的新手,我很困惑。为什么它会在眼镜上崩溃并在手机上完美运行。我目前正在为Vuzix智能眼镜开发一个简单的视频录制应用程序。
这是我到目前为止所做的:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
recording = false;
mediaRecorder = new MediaRecorder();
initMediaRecorder();
setContentView(R.layout.video_main);
SurfaceView myVideoView = (SurfaceView)findViewById(R.id.videoview);
surfaceHolder = myVideoView.getHolder();
surfaceHolder.addCallback(this);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
myButton = (Button)findViewById(R.id.mybutton);
myButton.setOnClickListener(myButtonOnClickListener);
}
private Button.OnClickListener myButtonOnClickListener
= new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if(recording)
{
mediaRecorder.stop();
mediaRecorder.release();
finish();
}
else
{
mediaRecorder.start();
recording = true;
myButton.setText("STOP");
}
}};
@Override
public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder arg0) {
// TODO Auto-generated method stub
prepareMediaRecorder();
}
@Override
public void surfaceDestroyed(SurfaceHolder arg0) {
// TODO Auto-generated method stub
}
private void initMediaRecorder(){
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
CamcorderProfile camcorderProfile_HQ = CamcorderProfile.get(CamcorderProfile.QUALITY_LOW);
mediaRecorder.setProfile(camcorderProfile_HQ);
mediaRecorder.setOutputFile("/sdcard/myvideo.mp4");
//mediaRecorder.setMaxDuration(60000); // Set max duration 60 sec.
//mediaRecorder.setMaxFileSize(5000000); // Set max file size 5M
}
private void prepareMediaRecorder(){
mediaRecorder.setPreviewDisplay(surfaceHolder.getSurface());
try
{
mediaRecorder.prepare();
}
catch (IllegalStateException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
答案 0 :(得分:1)
Vuzix高级支持专家Todd Ferguson来到这里。我的一位客户告诉我这个帖子,我想我会在这里发布我给他的答案,以帮助你。
如果您对此有任何疑问,请通过todd_ferguson@vuzix.com与我联系。
嗯。显然,使用TextureView的方法似乎并不存在 为我们工作。我不得不将它改回SurfaceView来获取它 工作。我还必须将视频帧率设置为24并增加 解决方案,因为函数getOptimalPreviewSize()是基于 在预览表面的大小和返回一个奇怪的分辨率 我会将TextureView怪异添加到bug列表中,因为它应该是 使用我们的API版本。帧率问题是相机驱动程序 问题和已知的错误。谢谢你带来这个 注意。我们将在即将推出的版本中解决这些问题。
此致
Todd R Ferguson
答案 1 :(得分:0)
我也在修补录像机并遇到同样的错误。我收到错误消息"错误100",发现这已经是issue一段时间了。录音机可以在我的手机上运行,但不适用于谷歌眼镜。所以暂时我想我们必须使用existing video recorder并从那里开始,或者完成当前项目并等待问题得到解决。 : - )