2013-06-11 2 views
1

내 응용 프로그램에서 나는 안드로이드에서 비디오를 찍으려면 surfaceiew를 사용하고 있습니다. onpreviewFrame 메서드에서 프레임을 잡을 코드를 작성했지만 문제는 비디오의 모든 프레임을 가져올 수 없다는 것입니다. 나는 약 14 초의 비디오를 캡쳐하고 있지만, 90 프레임 정도 밖에 얻지 못한다. 프레임 레이트는 초당 30 프레임이고, 화상 사이즈는 코드 onPreviewFrame 방법에서 프레임 frab 아래 인 800 x 480android의 onPreviewFrame에서 비디오 프레임을 가져 오는 방법은 무엇입니까?

이다

formattedFileCount = fileCountFormatter.format(fileCount); 
jpegFile = new File(Environment 
         .getExternalStorageDirectory().getPath() 
         + "/abc/foo-" 
         + formattedFileCount + ".jpg"); 
       fileCount++; 

Camera.Parameters parameters = camera.getParameters(); 
Size size = parameters.getPreviewSize(); 
YuvImage image = new YuvImage(b, 
       parameters.getPreviewFormat(), 800, 
       480, null); 


fos = new FileOutputStream(jpegFile); 
bos = new BufferedOutputStream(fos); 
image.compressToJpeg(
     new Rect(0, 0, image.getWidth(), image.getHeight()), 
      90, bos); 

그래서 14 개의 제 2 영상에 대한 전체 프레임 (420)이 될 것이지만, 100 프레임 이하로 촬영하십시오. 그 어떤 해결책이라도?

답변

0

이 코드를 실행하는 데 걸리는 시간을 확인하려면 타임 스탬프 (System.currentTimeMillis())를 사용하십시오. 30을 곱하면 1 초보다 작아야합니다. 어쩌면 당신의 안드로이드 장치가 원시 미리보기 데이터를 jpg로 변환하여 디스크에 기록하는 것이 그렇게 빠르지 않을 수도 있습니다. 당신은 어디서 sd-card를 쓰나요?

관련 문제