MediaPlayer
렌더링 비디오가 TextureView
입니다. 이것은 작동 중입니다.이미지 렌더링 후 MediaPlayer가 TextureView로 렌더링 할 수 없습니다.
이제 주어진 시간 동안이 TextureView
에 정지 이미지를 표시하고 MediaPlayer
에 비디오를 동일하게 TextureView
으로 렌더링하고 싶습니다. 이 후
Canvas canvas = mTextureView.lockCanvas();
canvas.drawBitmap(sourceBitmap, matrix, new Paint());
mTextureView.unlockCanvasAndPost(canvas);
, 비디오 ERROR_INVALID_OPERATION
에서 (-38) 비디오 플레이어에서 트리거되는 결과를 재생하려는 시도 :
다음은 비트 맵을 렌더링하는 내 코드입니다.
drawBitmap
에 대한 호출을 주석 처리하려고 시도했지만 오류가 여전히 발생했습니다. lockCanvas
다음에 unlockCanvasAndPost
이 이어지는 간단한 작업으로 을 사용하는 경우에는 TextureView
이 적합하지 않은 것으로 보입니다.
에서 사용할 수있는 상태로 TextureView
을 다시 설정할 수있는 방법이 있습니까?
나는 안드로이드 4.2.2에서 일하고있다.
내가 버퍼 생성자로 MediaPlayer를 가지고 있다면 가장 쉬운 방법으로 내 표면을 검정색으로 지울 수 있습니까? – Gilbert
@ 길버트 : 아마도 새로운 질문으로 게시해야합니다.그 문제에 대한 해결책은 일반적으로 세 가지 형태가 있습니다 : (1) 아마도 단일 프레임의 검은 색 비디오를 재생하여 MediaPlayer가 그것을 얻도록하십시오; (2) MediaPlayer 연결을 해제하고 GLES로 지우고 MediaPlayer를 다시 연결합니다. (3) 앞면에 동일한 치수의 불투명 한 검정색보기를 배치하십시오. 세 번째는 SurfaceView와는 달리 TextureView에서 매우 쉽습니다. SurfaceView와 달리 다른 뷰와도 잘 어울립니다. – fadden
@fadden 우리는 SurfaceView에 비트 맵을 그리는 2 가지 방법을 사용할 수 있습니다. 단지 Canvas.drawBitmap() API를 사용하고 수동으로 OpenGL을 사용하여 그립니다. 두 가지 모두 하드웨어 가속이지만 어느 것이 더 빠릅니까? OpenGL을 사용하여 수동으로 그리는 작업은 메모리 복사가 필요하다고 생각합니다. 우선 texImage2D API를 사용하여 비트 맵을 GPU의 텍스처로 업로드해야합니다. – dragonfly