У меня есть TextureView, который отображает растровое изображение (изображение-заполнитель), и когда пользователь загружает видео, текстуру должен показывать видео.Текстура Просмотр видео и растрового отображения
Мне удалось получить воспроизведение видео в виде текстуры и показать растровое изображение в текстурном представлении, но когда все сделано последовательно, я просто получаю черный экран.
В моем onSurfaceTextureAvailable методы я нарисовать битмап на представлении поверхности, как следует:
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.ic_add_clip);
Canvas canvas = lockCanvas();
canvas.drawBitmap(bm, (width/2)-(bm.getWidth()/2), (height/2)-(bm.getHeight()/2), null);
unlockCanvasAndPost(canvas);
}
Когда пользователь выбирает видео из своей галереи я загрузить Ури в медиа-проигрывателе и установите поверхность в медиаплеер , Но растровое изображение все еще отображается. Я попытался удалить растровое изображение, очистив холст, и он удаляет растровое изображение, но затем текстурный вид просто черный и не покажет видео.
public void setMediaPlayer(MediaPlayer mediaPlayer) {
// Canvas canvas = lockCanvas();
// canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
// unlockCanvasAndPost(canvas);
Surface s = new Surface(getSurfaceTexture());
mMediaPlayer = mediaPlayer;
mMediaPlayer.setSurface(s);
mMediaPlayer.setOnPreparedListener(this);
}
Что-то подсказывает мне, что вид поверхности я использую для отображения видео находится за растровое изображение, которое я рисовать в на TextureAvailble. И когда я пытаюсь очистить полотно, я также очищаю поверхность, которую хочет использовать медиаплеер. Любые решения?
Спасибо Fadden очень ясно. Я пошел на вариант 3, потому что это самый простой. Переход к варианту 1 или 2 только увеличивает сложность. – Charx