2014-07-24 3 views
1

GL_OES_EGL_image_external 확장자를 사용하여 OpenGL로 비디오를 재생하고 있습니다. 문제는 일부 장치에서 비디오 크기가 OpenGL의 최대 텍스처 크기를 초과한다는 것입니다. 이 문제를 어떻게 처리 할 수 ​​있습니까? 즉석에서 프레임을 축소하거나 비디오 크기를 미리 줄여야합니까?Android에서 OpenGL을 사용하여 비디오를 재생할 때 최대 텍스처 크기를 초과했습니다.

답변

0

당신이 정말로는 OpenGL ES의 최대 텍스처 크기를 타격하는 경우에 당신은 몇 가지 할 수있는 (FWIW을 나는이에 대한 최대 2048x2048 최근의 장치를 믿고) :

당신은 당신의 MediaPlayersetVideoScalingMode(VIDEO_SCALING_MODE_SCALE_TO_FIT)을 설정할 수 있습니다. 비디오 해상도를 첨부 된 SurfaceTexture/Surface 크기로 조정한다고 생각합니다.

네 개의 동영상을 재생하여 분리하여 렌더링 할 수도 있습니다. TEXTURE_EXTERNAL_OES은 GL에서이 네 가지 텍스처를 별도로 렌더링합니다. 그러나 그것은 당신의 성적을 떨어 뜨릴 수 있습니다.

내가 오류 메시지와 코드의 일부 컨텍스트를 본다면 아마도 더 많은 정보를 제공 할 수 있습니다.

+0

실제로 기본 모드는 VIDEO_SCALING_MODE_SCALE_TO_FIT입니다. 또한 표면 텍스처를 렌더링하고 있으므로 setFixedSize() 메서드가 없습니다. 어떤 아이디어? – Florian

+0

SurfaceTexture 크기를 설정하는 방법은 setDefaultBufferSize (int width, int height)를 사용하는 것입니다. mSurface = new SurfaceTexture (textureID); ... mCamera.setPreviewTexture (mSurface); (MediaPlayer 대신 카메라를 사용하고 있습니다.) – ashleysmithgpu

+0

나는 이것을 시도 할 것입니다. . 문서에 따르면 setDefaultBufferSize는 카메라와 같은 이미지 작성자가 덮어 쓰므로 작동하는지 테스트해야합니다. 내가하는 일은 다음과 같다 : SurfaceTexture texture = new SurfaceTexture (mTextureId); 표면 서페이스 = 새 서페이스 (텍스처); mMediaPlayer.setSurface (surface); surface.release(); – Florian

관련 문제