Как заставить TextureView воспроизводить видео с закругленными углами и пузырьковым эффектом

Мне удалось воспроизвести видео с помощью TextureView и MediaPlayer на Android. Я сделал это так: я создал Surface с SurfaceTexture:

    public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int w, int h)
{
    mSurface = new Surface(surfaceTexture);
    ...
    ...
}

Прикрепить поверхность к MediaPlayer:

    try
{
    mMediaPlayer.setDataSource(mPlayUrl);
    mMediaPlayer.setSurface(mSurface);
    ...
    ...
}

Это нормально, но не достаточно для меня. Я ожидаю, что TextureView будет с закругленными углами и будет выглядеть как пузырь (с углом), посмотрите на картинку ниже: ожидаемый эффект

Я нашел статью ( Круглые видео-углы на Android), которая очень полезна, но автор выбрал GLSurfaceView и реализовал только круглые углы. Я считаю, что TextureView также подходит для реализации моего эффекта, обработка SurfaceTexure является ключевым моментом. Но я не знаком с opengl. Кто может дать мне несколько советов?

1 ответ

Я знаю, что это поздний ответ, но если кто-то все еще пытается найти решение, приведенный ниже образец может помочь. https://github.com/developer-anees/android-round-camera2video-preview

Попробуйте этот образец. Он отображает превью камеры в круге. В основном он использует FrameLayout в качестве родителя для отображения текстуры в круге.

Учитывая, что ваш фон сплошного цвета, вы можете легко добиться этого эффекта с помощью маски. Если у вас есть какой-то фон, это не сработает.

Другие вопросы по тегам