相机和SurfaceView - 视频失真/伪影

时间:2013-03-22 01:50:50

标签: java android android-camera surfaceview android-mediarecorder

屏幕截图:http://imgur.com/r7EpSpx

我有一个关于SurfaceView和相机操作的非常具体的问题。我使用SurfaceView作为IntentService中相机的预览表面(允许后台操作)。

经过大量的反复试验,我几乎可以按照需要运行代码。但是,当我使用MediaRecorder录制视频时,每当我恢复活动时(因此重新创建SurfaceView),视频就会变得非常扭曲/被制作成彩虹色,中间有一个大的黑色矩形。此外,视频效果似乎是“平铺”排列。如果仔细观察,相机仍在工作,视频正常记录,但SurfaceView预览已损坏。

通常,我会在SurfaceView回调的surfaceCreated方法中重新实例化Camera对象,但每当我使用Camera.stopPreview()或其他几个Camera函数时,它都会导致我的MediaRecorder.stop()无限期挂起(这是另一个单独的问题)。因此,在重新创建曲面时,我必须在IntentService中使用相同的Camera对象。

除了这种奇怪的视频失真,即使是MediaRecorder生成的视频,一切都正常。只有预览受到影响。我无法确定这是代码问题,软件问题,TouchWiz问题还是硬件问题。它发生在所有方向配置中。将代码移动到surfaceChanged导致相同的事情。提前感谢您对此的任何帮助或见解!

@Override
public void surfaceCreated(SurfaceHolder holder) {  
if (isRecording) //Only run this code if MediaRecorder is recording
    try {           
        recordingCamera.setPreviewDisplay(rHolder); //This works, but causes the aforementioned distortion
        //recordingCamera.startPreview(); //Removes distortion, but causes MediaRecorder.stop() to freeze app indefinitely          

    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
    //recordingCamera.stopPreview();  //Removes distortion, but causes MediaRecorder.stop() to freeze app indefinitely      

}

在Galaxy Note II上运行它Android 4.1.2(TouchWiz)

0 个答案:

没有答案