眼镜上的视频录制功能崩溃,但在手机上没有

Posted

技术标签:

【中文标题】眼镜上的视频录制功能崩溃,但在手机上没有【英文标题】:Video recording function crashes on Glasses, but not on Phone 【发布时间】:2014-09-30 08:30:12 【问题描述】:

知道发生了什么吗?错误信息不断提示:MediaRecorder start failed: -19android.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 并从那里开始,或者完成当前项目并等待问题得到解决。 :-)

【讨论】:

以上是关于眼镜上的视频录制功能崩溃,但在手机上没有的主要内容,如果未能解决你的问题,请参考以下文章

手机怎么录游戏视频 手机屏幕录制的方法

录制手机屏幕视频 好用的录屏软件推荐

vivo怎么录屏 手机录制屏幕详细教程

保存过长的录制视频时,应用程序崩溃

直播源码技术录制功能知识

n卡自带的录屏驱动录制出来的视频帧数低很卡怎么解决,录制的时候玩起来都很流畅?