2013-01-16 3 views
17

카메라 프레임에서 실시간 이미지 처리를 수행하는 응용 프로그램을 만들고 있습니다. 이를 위해 미리보기 콜백 메소드 onPreviewFrame을 사용합니다.
해상도가 640x480 이상인 미리보기 프레임을 지원하는 카메라에서는 문제가 없습니다. 그러나 카메라가 이러한 대형 카메라 미리보기 해상도를 지원하지 않으면 응용 프로그램은 이러한 프레임 처리를 거부하도록 프로그래밍됩니다. 자, 제가 가지고있는 문제는 Sony Xperia과 같은 휴대폰에 있습니다. 해상도 1280x720까지 동영상을 녹화 할 수있는 아주 좋은 기기이지만 불행히도 최대 카메라 미리보기 크기는 480x320으로 내 필요에 비해 너무 작습니다.안드로이드 비디오 프레임 처리

내가 알고 싶은 것은 larger camera frames (최대 1280x720 이상)을 얻는 방법입니다. 카메라 응용 프로그램은 해상도로 비디오를 녹화 할 수 있으므로 분명히 가능해야합니다. 따라서이 응용 프로그램은 어떻게 든 더 큰 프레임에 액세스 할 수 있어야합니다. 내 응용 프로그램에서 동일한 작업을 수행하는 방법?

응용 프로그램은 Android 2.1 이상을 지원해야하지만, Android 4.0 이상에서만 내 문제의 해결책을 찾더라도 응용 프로그램을 매우 유용하게 사용할 수 있습니다.

이 질문은 http://stackoverflow.com/questions/8839109/processing-android-video-frame-by-frame-while-recording 유사하지만, 나는 비디오를 저장 할 필요가 없습니다 - 난 단지 그 높은 해상도의 비디오 프레임을 필요로 ...

사전에 대단히 감사합니다!

+0

''SurfaceTexture''있다 11 + 당신은 SDK로 이동할 수있는 경우 사용할 수있는 카메라 미리보기에 사용할 수 있습니다. OpenGL로 이미지 처리가 충분하다면 SurfaceTexture 기반 미리보기의 해상도가 더 높은지 확인할 수 있습니다. – harism

+0

좋은 지적. Camera.Parameters.getSupportedPreviewSizes()는 카메라에만 의존하지만 카메라가 미리 보려는 서페이스에는 의존하지 않는다고 생각했습니다. 나는 그것을 시도 할 것이다. 반면에 V4L2 (VideoForLinux2) 인터페이스를 통해 카메라에 액세스 할 수 있습니까? 어쩌면 V4L로 카메라를 더 잘 제어 할 수있을 것입니다 ... – DoDo

+0

먼저 카메라 오브젝트에 다른 미리보기 형식을 지정하지 않으면 onPreviewFrame이 YUV (NV21) 이미지를 제공한다는 점을 고려하십시오. 이런 종류의 형식으로 작업하는 안드로이드 SDK의 메소드가 부족하기 때문에 엉덩이에 고통이 될 것입니다. 이 형식은 기본 형식이므로 모든 장치와의 100 % 호환성을 원할 경우이 형식을 관리해야합니다. 이미지를보다 관리하기 쉬운 형식으로 변환 할 수는 있지만 성능 측면에서 비용이 많이 들기 때문에 실시간 처리를 원한다면 문제가 될 수 있습니다. – Mario

답변

6

MediaRecoder 데이터에서 프레임을 디코딩하는 것만 가능합니다. ffmpeg를 사용하여 LocalSocket의 recoreder 데이터를 디코딩 할 수 있습니다.

는 다음과 같은 오픈 소스 프로젝트가 도움이 될 수 있습니다 희망 :

ipcamera를 위해 안드로이드 : https://code.google.com/p/ipcamera-for-android/

spydroid-ipcamera : https://code.google.com/p/spydroid-ipcamera/

+0

그 프로젝트와 아이디어를 공유해 주셔서 감사합니다. 그게 내가 찾고 있었던 것 같아. – DoDo

0

OpenCV 라이브러리를 살펴보십시오. 전체 프레임을 수신 할 수있는 메소드가 있습니다.

0

나는 비디오 미리보기 크기가 작으며 느리고 느린 속도로 설정된 비디오 녹화 프레임 속도보다 느립니다.

한 번이 문제에 대한 해결책을 찾으려고했습니다. 더 나은 방법은 비디오 레코더에서 비디오 스트림을 가져온 다음 비디오 스트림에서 직접 데이터를 처리하는 것입니다.

Android ip-camera에서 몇 가지 예를 찾을 수 있습니다.