Как заставить 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 в качестве родителя для отображения текстуры в круге.
Учитывая, что ваш фон сплошного цвета, вы можете легко добиться этого эффекта с помощью маски. Если у вас есть какой-то фон, это не сработает.