眼镜上的视频录制功能崩溃,但在手机上没有
Posted
技术标签:
【中文标题】眼镜上的视频录制功能崩溃,但在手机上没有【英文标题】:Video recording function crashes on Glasses, but not on Phone 【发布时间】:2014-09-30 08:30:12 【问题描述】:知道发生了什么吗?错误信息不断提示: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();
【问题讨论】:
不,对我来说仍然是个谜。 【参考方案1】:Todd Ferguson,Vuzix 的高级支持专家。我们的一位客户告诉我这个帖子,我想我会在这里发布我给他的答案,以帮助你。
如果您对此有任何疑问,最好的联系方式是 todd_ferguson@vuzix.com。
嗯。显然,使用 TextureView 的方法似乎没有 为我们工作。我必须把它改回 SurfaceView 才能得到它 在职的。我还必须将视频帧速率设置为 24 并增加 分辨率,因为函数 getOptimalPreviewSize() 是基于 在预览表面的大小上并返回一个奇怪的分辨率。 我会将 TextureView 怪异添加到错误列表中,因为它应该是 在我们的 API 版本中工作。帧率问题是相机驱动程序 问题和一个已知的错误。谢谢你把这个带到我们的 注意力。我们将在即将发布的版本中解决这些问题。
问候,
托德·R·弗格森
【讨论】:
【参考方案2】:我也一直在修补录像机,并且遇到了同样的错误。我收到错误消息“错误 100”,发现这是 issue 有一段时间了。录音机可以在我的手机上使用,但不能在 Google Glass 上使用。所以暂时我想我们必须使用existing video recorder 并从那里开始,或者完成当前项目并等待问题得到解决。 :-)
【讨论】:
以上是关于眼镜上的视频录制功能崩溃,但在手机上没有的主要内容,如果未能解决你的问题,请参考以下文章